python读取.stl文件
目录
.1 文本方式读取
1.2 stl解析
1.3 stl创建
.2 把点转换为.stl
.1 文本方式读取
代码如下
stl_path='/home/pxing/codes/point_improve/data/003_cracker_box/0.stl'points=[]
f = open(stl_path)
lines = f.readlines()
prefix='vertex'
num=3
for line in lines:#print (line)if line.startswith(prefix):values = line.strip().split()#print(values[1:4])if num%3==0:points.append(values[1:4])num=0num+=1#print(type(line))
print(points)
f.close()
该代码可以直接将stl文件中对点直接都输出
改进版本
import numpy as npstl_path='/home/pxing/codes/point_improve/data/003_cracker_box/0.stl'
points=[]
f = open(stl_path)
lines = f.readlines()
prefix='vertex'
num=3
for line in lines:#print (line)if line.startswith(prefix):values = line.strip().split()#print(values[1:4])if num%3==0:points.append(values[1:4])num=0num+=1#print(type(line))
points=np.array(points)
f.close()
print(points.shape)
np.save("/home/pxing/codes/point_improve/feature_get/point_get/test.npy", points)
把输出的点转换为npy并且保存
1.2 stl解析
.stl文件格式如下图所示:

那么读取该文件就需要知道stl的构成
stl是一种表示三角网格的文件格式
STL只能用来表示封闭的面或者体,stl文件有两种:一种是ASCII明码格式,另一种是二进制格式
ASCII明码格式:
STL文件的首行给出了文件路径及文件名
STL三维模型就是由一系列这样的三角面片构成
三角面片的信息单元 facet 是一个带矢量方向的三角面片
每一个facet由7 行数据组成:
facet normal 是三角面片指向实体外部的法矢量坐标
outer loop 代表随后的3行数据分别是三角面片的3个顶点坐标
3顶点沿指向实体外部的法矢量方向逆时针排列
solid [filename] //文件名,可以是任何字符
facet normal [i j k] //面的法线,i、j、k为三个分量,各分量之间用空格隔开,不能用逗号隔开
outor loop
vertex [x y z] //三角面片的第一个点,x、y、z三个坐标之间要用空格隔开
vertex [x y z] //三角面片的第二个点
vertex [x y z] //三角面片的第三个点
endloop
endfacet //完成一个三角面片的定义
、、、、 //其他facet
endsolid [filename] //完成一个stl文件的定义
示例:
在电脑上新建一个txt文件,然后编辑。编辑完了之后保存,并将文件后缀名改为stl,即可完成一个创建了一个stl文件。如下图,利用文本编辑器将一个四面体的几何数据保存到文件中
效果如下图所示:

1.3 stl创建
创建一个三角形面片
solid mystl
facet normal 0 -1 0
outor loop
vertex -100 0 0
vertex 100 0 0
vertex 0 0 -100
endloop
endfacet
end solid mystl

.2 把点转换为.stl
import numpy as np
import sys
sys.path.append('/home/pxing/codes/grasp_ROI_get/')
from gripper_area import area_getarr=np.array(area_get.main())
#print(arr[0,0:3])
with open('stl_process/data/test1.stl','a') as file0:print('solid mystl ',file=file0)print('facet normal' ,0,0,0,file=file0)print('outor loop',file=file0)print('vertex',arr[0,0],arr[0,1],arr[0,2 ],file=file0)print('vertex',arr[1,0],arr[1,1],arr[1,2 ],file=file0)print('vertex',arr[2,0],arr[2,1],arr[2,2 ],file=file0)print('endloop\nendfacet',file=file0)print('end solid mystl',file=file0)
相关文章:
python读取.stl文件
目录 .1 文本方式读取 1.2 stl解析 1.3 stl创建 .2 把点转换为.stl .1 文本方式读取 代码如下 stl_path/home/pxing/codes/point_improve/data/003_cracker_box/0.stlpoints[] f open(stl_path) lines f.readlines() prefixvertex num3 for line in lines:#print (l…...
vue2.0项目第一部分
论坛项目后端管理系统服务器地址:http://172.16.11.18:9090swagger地址:http://172.16.11.18:9090/doc.html前端h5地址:http://172.16.11.18:9099/h5/#/前端管理系统地址:http://172.16.11.18:9099/admin/#/搭建项目vue create . …...
锁与原子操作
锁与原子操作 锁 以自增操作为例子: void *func(void *arg) {int *pcount (int *)arg;int i 0;//while (i < 100000) {(*pcount) ; // 并不会到达100000usleep(1);} }int main(){int i 0;for (i 0;i < THREAD_COUNT;i ) {pthread_create(&thid…...
Prometheus Pushgetway讲解与实战操作
目录 一、概述 1、Pushgateway优点: 2、Pushgateway缺点: 二、Pushgateway 架构 三、实战操作演示...
常见字符串函数的使用,你确定不进来看看吗?
👦个人主页:Weraphael ✍🏻作者简介:目前是C语言学习者 ✈️专栏:C语言航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&a…...
Elasticsearch:在搜索中使用衰减函数(Gauss)
在我之前的文章 “Elasticsearch:使用 function_score 及 script_score 定制搜索结果的分数” 我有讲到 Decay 函数在搜索中的使用。在那里,我有一个例子讲述在规定的时间里,分数不进行衰减。同一的函数也可以适用于地理位置的搜索。位置搜索…...
微信小程序 Springboot英语在线学习助手系统 uniapp
四六级助手系统用户端是基于微信小程序端,管理员端是基于web端,本系统是基于java编程语言,mysql数据库,idea开发工具, 系统分为用户和管理员两个角色,其中用户可以注册登陆小程序,查看英语四六级…...
LeetCode算法题解——双指针2
LeetCode算法题解——双指针2第五题思路代码第六题思路代码第七题思路代码这里介绍双指针在数组中的第二类题型:两端夹击。 第五题 977. 有序数组的平方 题目描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的…...
线性杂双功能peg化试剂——HS-PEG-COOH,Thiol-PEG-Acid
英文名称:HS-PEG-COOH,Thiol-PEG-Acid 中文名称:巯基-聚乙二醇-羧基 HS-PEG-COOH是一种含有硫醇和羧酸的线性杂双功能聚乙二醇化试剂。它是一种有用的带有PEG间隔基的交联或生物结合试剂。巯基或SH、巯基或巯基选择性地与马来酰亚胺、OPSS、…...
Linux第三讲
目录 三、 磁盘和文件管理和使用检测和维护 3.1 磁盘目录 3.2 安装软件 3.2.1 rpm命令 3.2.2 克隆虚拟机 3.2.3 yum或压缩包方式安装jdk 3.2.4 使用虚拟机运行SpringBoot项目 3.2.5 安装mysql80(57) 3.2.6 运行web项目 3.2.7 安装tomcat 三、 …...
SpringBoot07:SpringSecurity
Security是什么? 是一个安全框架。可以用来做认证和授权 官网:Spring Security SpringSecurity环境搭建 1、创建一个新的project 2、导入thymeleaf依赖 <dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf…...
C++ 浅谈之 STL Vector
C 浅谈之 STL Vector HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是 C 浅谈系列,收录在专栏 C 语言中 😜😜😜 本系列阿呆将记录一些 C 语言重要的语法特性 🏃&…...
【个人作品】非侵入式智能开关
一、产品简介 一款可以通过网络实现语音、APP、小程序控制,实现模拟手动操作各种开关的非侵入式智能开关作品。 非侵入式,指的是不需要对现有的电路和开关做任何改动,只需要将此设备使用魔术无痕胶带固定在旁边即可。 以下为 ABS 材质的渲…...
数据存储技术复习(三)未完
module4智能存储系统是功能丰富且可提供高度优化的I/o处理能力的RAID阵列。请绘制智能存储系统架构,并说明其各个关键组件的主要功能。前端缓存后端物理磁盘2.智能存储系统中,使用缓存进行的写入操作与直接写入到磁盘相比,可以带来…...
ThinkPHP数据库迁移工具
安装 composer require topthink/think-migration 创建迁移工具文件 //执行命令,创建一个操作文件,一定要用大驼峰写法,如下 php think migrate:create AnyClassNameYouWant //执行完成后,会在项目根目录多一个database目录,这里面存放类库操作文件 //文件名类似/database/m…...
代理模式(Proxy Pattern)
代理模式定义: 提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。举个例子:猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象出来,高翠兰和孙悟空都实现了这个接口ÿ…...
Elasticesearch内存详解
1.ES基本概念 为了更好的理解内存,我们先看一下ES的基本概念。 1.1 cluster 集群 多个节点组合在一起就形成了一个集群,在每个ES节点中,我们可以通过配置集群的名称来使各个节点组合在一起,成为一个集群。当某些节点的集群名称一样,ES会自动根据配置文件中的地址找到这些…...
SpringCloud之断路器聚合监控
一、Hystrix Turbine简介 看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbine。Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合。Hystrix Turbine的使用非常简单,只需要…...
凭借这份《2022测试八股文》候选者逆袭面试官,offer拿到手软
《2023测试面试八股文》800 道软件测试面试真题,高清打印版打包带走,横扫软件测试面试高频问题,涵盖测试理论、Linux、MySQL、Web 测试、接口测试、App 测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维…...
【i2c协议介绍】
文章目录协议简单介绍五种速度模式master/slave和transmitter/receiver关系第一种情况:master作为transmitter,slave作为receiver第二种情况:当master作为receiver,slave作为transmitteri2c基本信号start产生stop信号数据传输有效…...
别再只盯着密钥了!深入ESP32 eFuse,看懂flash加密背后的硬件安全逻辑
别再只盯着密钥了!深入ESP32 eFuse,看懂flash加密背后的硬件安全逻辑 当你在ESP32项目中使用flash加密功能时,是否曾疑惑过:为什么简单地烧录几个eFuse位就能实现固件保护?那些看似神秘的DISABLE_DL_DECRYPT、FLASH_CR…...
智能体架构实战:从LangGraph状态机到多智能体协作
1. 从理论到实践:为什么我们需要一个“智能体架构大全”项目如果你在过去一年里关注过AI领域,尤其是大语言模型的应用开发,那么“智能体”这个词一定已经听得耳朵起茧了。从能帮你写代码的Devin,到能自主完成复杂任务的GPT-4o&…...
Arm A64指令集SIMD与浮点寄存器架构解析
1. A64指令集的SIMD与浮点寄存器架构解析在Armv8-A架构中,A64指令集引入了强大的向量处理能力,通过32个128位宽的V寄存器(V0-V31)实现了高效的SIMD(单指令多数据)和浮点运算支持。这套寄存器文件的设计巧妙…...
Windows系统mqoa.dll文件丢失无法启动程序解决
在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...
从CMake报错到编译成功:一站式解决absl依赖配置难题
1. 当CMake突然报错:absl依赖缺失的紧急处理 第一次看到这个报错时,我正赶着在截止日期前完成gRPC服务的部署。控制台突然弹出的红色错误让我心头一紧:"Could not find a package configuration file provided by absl"。这种依赖缺…...
别再只盯着机械式了!一文看懂MEMS、Flash、OPA等固态激光雷达怎么选(附避坑指南)
固态激光雷达技术全景:从MEMS到OPA的实战选型策略 激光雷达技术正在经历一场静默革命——机械旋转部件逐渐被半导体芯片取代,就像当年电子管被晶体管淘汰的历史重演。在自动驾驶和机器人领域摸爬滚打多年的工程师都清楚,选择激光雷达就像在迷…...
从入门到精通:Systrace性能分析实战指南
1. Systrace入门:认识Android性能分析利器 第一次打开Systrace报告时,我完全被那些彩色线条和条形图搞懵了。这玩意儿看起来就像地铁线路图一样复杂,但别担心,它其实是Android开发者最得力的性能分析助手。Systrace是Android SDK自…...
Intel Wi-Fi 6 AX201网卡间歇性断连?华硕飞行堡垒8用户必看的节能模式与驱动管理避坑指南
Intel Wi-Fi 6 AX201网卡间歇性断连?华硕飞行堡垒8用户必看的节能模式与驱动管理避坑指南 当你的华硕飞行堡垒8笔记本突然无法连接Wi-Fi,设备管理器里Intel Wi-Fi 6 AX201网卡显示黄色感叹号并提示"代码10"错误时,这往往不是简单的…...
用Python和Matlab可视化高斯分布融合:从理论到代码,理解卡尔曼滤波的‘信任权重’
高斯分布融合的可视化实践:用Python与Matlab揭秘卡尔曼滤波的信任机制 在传感器融合、机器人定位和金融预测等领域,我们常常需要将多个不确定信息源的数据进行整合。高斯分布(正态分布)作为描述不确定性的黄金标准,其融…...
告别ifconfig:用ubus命令玩转OpenWrt网络接口(netifd实战指南)
告别ifconfig:用ubus命令玩转OpenWrt网络接口(netifd实战指南) 在OpenWrt的世界里,网络接口管理一直是个既基础又关键的课题。传统Linux用户习惯使用ifconfig或ip命令来配置网络,但在OpenWrt环境下,这些工具…...
