搜档网
当前位置:搜档网 › 海量STL文件的快速读取与显示

海量STL文件的快速读取与显示

海量STL文件的快速读取与显示
海量STL文件的快速读取与显示

第25卷2006年第8期8月机械科学与技术

MECHAN I CAL SC I E NCE AND TECHNOLOGY Vol .25August No .8

2006

收稿日期:20050902

基金项目:国家自然科学基金项目(50475041),霍英东教育基金高

校青年教师基金项目(91053),教育部优秀青年教师教学科研奖励计划资助

作者简介:卫 炜(1972-),男(汉),江苏,博士研究生

E 2mail:mee wwei@nuaa .edu .cn

卫 炜

 文章编号:100328728(2006)0820935204

海量ST L 文件的快速读取与显示

卫 炜,周来水,张丽艳

(南京航空航天大学C AD /CAM 工程研究中心,南京 210016)

摘 要:ST L 文件作为一种通用的三维数据文件格式,广泛应用于快速成型及其他领域。如何快速读取海量数据的

ST L 文件并显示,是模型后续操作的一个首要环节。本文针对海量数据的特点,采用内存映射手段、基于哈希表结构的冗余顶点删除和OpenG L 中显示列表技术等,对海量ST L 文件的快速读取和显示进行了研究,并和国外先进软件进行了比较,实验数据表明本文方法较Surfacer 软件和Rap idFor m 软件提高效率25%~40%左右。关 键 词:ST L 文件;海量数据;图形显示中图分类号:TP391 文献标识码:A

Rap i d STL F ile L oad i n g and V isua li za ti on

W eiW ei,Zhou Laishui,Zhang L iyan

(CAD /CAM Research Center,Nanjing University of Aer onautics and A str onautics,Nanjing 210016)Abstract:A s a general three 2di m ensi onal data file f or mat,stereo lithographic (ST L )files have been widely used in rap id p r ot otyp ing syste m s and many other fields .How t o l oad and visualize ST L files rap id 2ly is key t o subsequent model mani pulati on .According t o the characteristics of massive data,me mory mapp ing and Hash table 2based method f or deleting redundancy vertex fast in ST L files and OpenG L dis 2p lay lists have been used t o accelerate the l oading and visualizati on .Experi m ent shows that the p r oposed method is 25%~40%more efficient than the commercial s oft w are packages Surfacer and Rap idFor m.Key words:ST L file;massive data;visualizati on

ST L (stereo lithographic )文件格式由3D Syste m s 公司于1987年推出,采用三角形面片离散地近似表示三维模型,目前已成为快速原型技术领域最为常用的文件格式和事实上的接口标准,在逆向工程、有限元分析、医学成像系统、文物保护等方面有广泛的应用。

ST L 文件的最大特点也是其主要问题是,它是由一系列的三角形面片无序排列组合在一起的,没有反映三角形面片之间的拓扑关系,而且每一个小三角形面片必须与相邻的三角形面片共用两个顶点,每个顶点通常被重用6次左右,文件数据重复很多,由此造成了ST L 文件在读取、存储等方面的效率问题。近年来,测量设备的发展十分迅速,尤其是光学测量机已发展到可以在几秒钟内测量出百万以上的海量数据点。如何快速读取并显示这些海量的

数据点,对于后续建模、快速成型及数控加工编程,是一个

首要和基本的环节。文献[1]从编程的角度研究了大数据量的快速存取问题;文献[2]和文献[3]研究了ST L 文件中冗余顶点的滤除方法;文献[4]和文献[5]分别对ST L 文件中拓扑信息的快速建立和ST L 文件在OpenG L 中的显示进行了研究。本文在上述研究的基础上,对ST L 文件快速读取与显示流程各个环节效率的提高进行了系统研究与实现,取得了较为满意的结果。

1 ST L 文件数据读取及显示

ST L 文件记录了描述三维模型的全部三角形面片数

据,包括每个三角形的顶点坐标和法向量。ST L 文件一般有ASC II 码和二进制两种格式,其中二进制格式文件较小(通常是AS C II 码格式的1/5),节省文件存储空间,但AS C II 码格式的文件可读性更强。其形式表现为:

s olid filena me .stl //文件路径及文件名

facet nor mal …//三角形面片法向量的3个分量值outer l oop

vertex …//三角形面片第一个顶点的坐标

机械科学与技术第25卷

vertex…//三角形面片第二个顶点的坐标

vertex…//三角形面片第三个顶点的坐标

endl oop

endfacet//第一个三角形面片定义结束

ends olid filena me.stl//整个文件结束

1.1 内存映射文件

W indows提供了一种进行文件操作的高效途径,即内存映射文件机制[6]。其主要工作原理是:保留一段虚拟内存地址空间,将一个已经存在于磁盘上的文件内容提交给此区域,通过一个指向该区域的指针访问文件内容。一旦该文件被映射,就可以像整个文件已经加载到内存一样去访问它,从而可以不必对文件执行I/O操作,有效提高程序的运行效率,尤其是可以高效读取大数据量的文件。

内存映射文件机制处理海量数据文件的优点在于:

(1)W in32系统采用以页为基础的虚拟内存系统,每页为4K B大小。虚拟内存管理器以统一的方式处理所有磁盘I/O操作,即每次以一个页面为单位进行读写内存,从而意味着一些小的I/O操作将被缓冲入一次大的操作之中,无需再进行一次磁盘I/O操作,大幅度减少硬盘读写头的移动,提高系统的性能。

(2)所有的I/O交互都在内存中并以标准内存寻址方式进行,同时,磁盘的周期性分页发生在后台,由操作系统本身实现,对应用程序是透明的。

内存映射文件分3种情况,第一种是可执行文件的内存映射,主要由W indows自身使用;第二种是数据文件的内存映射;第三种是借助于页面交换文件的内存映射。本文采用的是数据文件的内存映射。首先把数据文件的全部或一部分映射到虚拟地址空间(映射的区域是0x80000000~0x BFFFFFFF),但不提交RAM,存取这段内存的指令同样会产生页面异常。操作系统捕获到这个异常后,分配一页RAM,并把他映射到当前进程发生异常的地址处,然后系统把文件中相应的数据读到这个页面中,继续执行刚才产生异常的指令。这也是应用程序自身不需要调用文件I/O函数的原因。具体实现时分为以下几个步骤:

①通过CreateFile()函数创建或打开一个文件内核对象,该对象标识了磁盘上将要用作内存映射的文件。

②通过CreateFile M app ing()函数创建一个文件映射内核对象以告诉系统文件的尺寸以及访问文件的方式。

③通过MapV ie wOfFile()函数将文件映射对象的全部或部分映射到进程地址空间。这样,对内存映射文件的使用和处理同通常加载到内存中的文件数据的处理方式基本相同。

④通过Un mapV ie wOfFile()和Cl oseHandle()函数完成对内存映射文件的清除和资源释放。

在本文算法中,引入内存映射文件可以实现快速读取海量ST L文件的数据。实例表明在相同配置的PC机上采用内存映射文件较与传统的通过I/O文件读取方法相比,其效率可以提高1倍以上,而且文件越大,提高的效率越高。

1.2 ST L文件数据处理

1.2.1 三角网格模型的数据结构

三角网格模型的数据结构通常由顶点表、法向量表和三角形面片表构成。顶点链表和面表的数据结构如图1所示。其中x、y、z分别是float型的顶点坐标值,IP

1

、IP

2

、IP3分别是int型的顶点索引号

图1 Vertex和Face数据结构示意图

顶点的索引号对应顶点链表中的坐标值,每个三角形面片由3个顶点的索引号构成,每个面对应面索引号,并加到面的链表中,同时对于每个顶点记录其共享该顶点的

所有三角形面片的索引号,设p={p

i

,i=0,1,…,n}为顶

点的索引集合,F={F

i

,i=0,1,…,m}为三角形面片的

索引集合,它们之间的相互关系如图2所示,其中F

ij

(i,j =0,1,…)表示以第P i个点为顶点的第j个三角形面片,

并且F

ij

∈F

图2 点表、面表、与点相邻的面表的关系结构图在用表对三角网格模型的几何信息存储时,本文采用静态数组形式,而放弃了V isual C++中提供的动态数组C A rray类。对于数据的存储、删除等操作,CA rray类封装了相应的成员函数,但每次操作均需要重新分配内存空间和进行元素拷贝。在存储海量数据时,时间开销很大。而静态数组结构在对数据的存储时,时间开销最小,但缺点是需要预先确定数据元素的最大个数,申请足够的分配空间。对于海量的ST L文件,如果一次性申请全部的存储空间,有可能由于内存中不存在连续的存储空间而无法执行程序。通常ST L文件中的总顶点数是三角形面片的3倍,而由欧拉定理[7]可知ST L文件中三角形面片的数量是顶点数量(不含冗余顶点)的2倍左右,所以最终生成的无冗余顶点的数量约为ST L文件中总顶点数的1/6。故本文采用的数组结构,一次申请相对较大的空间,即大约是N/6×k个顶点空间,N/3×k个面空间等。其中N是ST L文件中的总点数;k为一经验值,通常取值为0.2。

639

第8期卫 炜等:海量ST L 文件的快速读取与显示

1.2.2 ST L 文件中冗余顶点的快速滤除

ST L 文件中存在大量的冗余顶点,这些冗余顶点会破

坏面片间的拓扑关系,影响后续的模型处理。在读取ST L 文件时,当判定到某个顶点冗余,即该顶点已经在顶点数组中存在,这时,不再将该顶点加到顶点数组中,而只需将该顶点索引号加到对应的三角片面号中,从而建立一个不含冗余信息的拓扑结构。如果采用一般的线性查找法判定某个顶点是否存在冗余顶点,对于大数据集,查找效率很低,难以满足工程要求。许多文献资料对此进行了研究,主要有平衡二叉树法[4],3轴分块排序法[2],哈希表法[3]等。平衡二叉检索树(AVL )是一种特殊的二叉检索树,它的左子树和右子树的深度之差绝对值不超过1,而且其左、右子树都是平衡二叉树,可以使具有相同结点数目的二叉检索树的高度最小,从而加快查找速度。3轴分块排序法将顶点在x 、y 、z 这3个轴方向上进行分块排序,然后采用二分法进行查找。哈希表法直接通过查找关键字找到相应的记录,其查找不经过上述比较的过程,具有较好的查找效率。假设ST L 文件的总顶点个数为N ,执行上述3种算法的时间复杂度分别为O (log 2N ),O (N 2)[2],O (N )。如果N 很大,平衡二叉树法具有很好的时间优越性。但是平衡二叉树由于节点的插入或删除操作可能会影响到树的平衡性,必须对其进行平衡化旋转,从而使其保持最佳性的时间代价太大。本文在对平衡二叉树法和哈希表法进行理论对比分析和实验对比研究的基础上(对比实验结果见表1),采用基于哈希表的算法,以顶点坐标为查找关键字,通过链地址法逐一进行比较来处理冲突顶图3 链地址法解决冲突的哈希表点,实现对冗余顶点的快速滤除。图3为链地址法解决冲突的哈希表结构图,其中基本表为存放哈希地址记录的单链表的头指针存储空间,其长度L 即为哈希表

长,所有具有相同哈希

地址的记录(P 表示ST L 文件中的顶点数据)存

放同一单链表中。图3中:P 为链表中节点的数据域,Λ表示空指针。

哈希表法中影响关键字比较次数的因素有3个:哈希函数、处理冲突的方法以及哈希表的装填因子。装填因子α=哈希表中元素个数/哈希表的长度。α越小,发生冲突的可能性越小;α越大,发生冲突的可能性越大,处理冲突时所用的比较次数就越多。通常α取为1~0.5之间的适当小数。对链址法处理冲突的相应平均查找长度分别为:

查找成功时S nc =1+α/2,查找不成功时U nc =α+e -α

。因此哈希表的平均查找长度可视为装填因子α的函数。通常,α越小,平均查找长度越小,但存贮空间浪费比较大。本文α取值为0.8。因为哈希表中元素的个数约为N /6,所以哈希表长度l =5N /24(N 为ST L 文件总顶点数),平均查找

长度成功时为1+α/2=1.4,失败时为α+e -α

≈1.25,具

有较高的查找效率,而且哈希表的长度可根据ST L 文件大小,自由调节。哈希表的键值k 由下式确定:

k =|p .x ×106

|+|p .y ×106

|+|p .z ×106

|

式中:p .x 、p .y 、p .z 分别为顶点的x 、y 、z 坐标值。选取一正

整数p =2n -1,n =(int )(log l 2)。通过除余法[8]

,哈希函数

最终定义为H (K )=K mod P 。

表1为在配置P41.6GHz 处理器和512M 内存的PC 机上对3个ST L 文件分别采用平衡二叉树法和哈希表法滤除冗余顶点的时间对比,由此可知哈希表法具有较高的查找效率,尤其是ST L 文件三角形面片数越多,其效率越高。

表1 采用平衡二叉树法和哈希表法的时间对比三角形面片数

平衡二叉树法(s )

哈希表法(s )

14271713949171264331350730

302

94

1.2.3 基于OpenG L 的ST L 模型显示

网格模型的光照显示一般有Flat 显示和Gouraud 显

示[9]

等。Flat 显示时直接从ST L 文件中获取三角形面片的法向量,且每一三角形面片上所有点的法向量均相同,在应用简单光照后,同一三角形面片上的光亮度将保持一致,但由于不同三角形面片之间存在不连续的法向量跃变,会导致物体表面的光亮度呈现不连续跃变,从而影响生成图形的光滑性。Gouraud 显示将三角形表面的光亮度取为近似表示该曲面的各三角形顶点光亮度的双线性差值,使不同三角形面片之间的法向量连续,改进显示的效果。

图4 共享顶点P 的法

向量计算示意图

本文采用平均法向量法计算顶点的法向量值,即每个顶点的法向量是对共享该顶点的各三角形面片的外法向量求和并单位化得到的。如图4所示,顶点P 由6个

三角形面片共享,则P 点的法向量为

N p →

=

∑6

i =1

N

i

|

6

i =1

N i →

|

式中:N i →

为三角形面片法向量。

在OpenG L 函数库中,提供了直接渲染三角形面片的方法,而且OpenG L 会根据三角形面片3个顶点的外法向量线性插值算出面片内每一点的外法向量,可以方便快捷实现ST L 文件的真实感图形显示。为提高显示效率,本文采用了OpenG L 显示列表(D is p lay L ist ),它是由一组预先

7

39

机械科学与技术第25卷

存储起来的留待以后调用的OpenG L 函数语句组成,当调用该显示列表时就依次执行表中所列出的函数语句。OpenG L 显示列表被设计成命令高速缓存,能优化程序运行性能。需要注意的是,并不是只要调用显示列表就能优化程序性能。因为创建或调用显示列表,程序本身也有一些开销,若一个显示列表太小,这个开销将超过显示列表的优越性。但是对海量的ST L 文件,例如有超过10万个三角片,如果仅创建显示一个列表,时间上的开销同样会使显示列表失去其效率优势。经过大量实例验证,当ST L 文件有超过10万个三角片时,需创建多个显示列表,而且每个显示列表创建的三角片个数最好在5万个左右,这时显示效率比较高。

对海量ST L 文件进行旋转、缩放等操作时,往往存在重绘刷新的效率问题,对此采用多线程编程可以在某种程度上缩短重绘刷新的时间。本文采用了一种更为简单的方法:当按下鼠标进行文件旋转、缩放等操作时,显示的三角片个数仅为文件总的三角形面片个数的1%~10%左右(具体实现时,该比例与文件总的三角形面片个数成反比),这样大幅度减少了需要显示的三角形面片数,但又能足够显现出模型的轮廓,从而极大降低旋转、缩放的操作迟滞感,而且一旦松开鼠标,就会自动调用已经存在的多个列表进行显示,实现图形的快速刷新。

2 

实验对比

图5 飞机模型 图6 雅克教练机机头

本文在配置P41.6GHz 处理器和512M 内存的PC 机上对上述算法进行了验证。图5、图6分别是波音飞机模型和雅克教练机机头部分ST L 文件的Gouraud 显示。其

测量数据均是采用AT OS 流动式光学测量仪实际测量所得,其中,课题组对雅克教练机进行了全机测量,飞机机长

12m,翼展8m,共计4663247个测点。表2是对图例5和图例6分别采用本文算法、Surfacer 软件和Rap idFor m 软件进行文件读取显示的时间对比(Surfacer 和Rap idFor m 是目前比较有代表性的,功能强大的逆向工程软件),可以发现本文算法具有较好的显示效率。图7是对9个ST L 文件进行读取显示的时间对比和最大消耗内存对比曲线图。由图7可知本文算法在读取显示ST L 文件时较Surfacer 软件提高效率25%左右,较Rap idFor m 软件提高效率40%左右;最大内存消耗较上述两软件要多20%~50%。但是,本文方法的内存占用在目前通常配置的计算机上,也是可以接受的

图7 本文算法与Surfacer 、Rap idFor m 软件的时间和消耗内存对比

表2 采用本文算法和国外先进软件对ST L 文件进行读取显示的时间对比

文件大小三角形面片数不含冗余顶点的顶点数含冗余顶点的顶点数

本文算法时间

(s )Surfacer 执行时间

(s )Rap idFor m 执行时间

(s )图例349.3M 252203127853756609203042图例4

218M

1060046

544398

3180138

99

133

187

3 结论本文通过采用内存映射文件、基于哈希表结构的冗余

顶点删除和OpenG L 的显示列表技术,对海量ST L 文件的快速读取和显示进行了研究。实验结果表明,本文方法具有较高的时间效率,较Surfacer 和Rap idFor m 软件提高效率

25%~40%左右,能够满足工程实际需要。在今后的工作

中,将进一步研究几何与拓扑压缩以及内存数据结构的融合技术,以便在实现效率提高的同时减少内存消耗。

(下转第975页)

8

39

第8期

孟庆鑫等:“穿地龙”机器人的设计与综合

x M =L -|MN |sin

α2y M =0

z M =|MN |cos

α2)(17)

x N =L y N =0z N =

(18)

为了实现“穿地龙”机器人运动轨迹仿真,利用上面推

导的数学模型,采用MAT LAB 语言进行了仿真程序的编制,得到了预期的仿真结果如图9所示

图9 轨迹规划曲线图10 机器人穿土实验照片

通过“穿地龙”机器

人的穿孔实验(如图10)来验证仿真结果的可靠性。

从实验中,采集了“穿地龙”机器人转向行走轨迹坐标如图11的实验数据,坐标轴x 轴为入土深度,y 轴为转向高度,从实验中可以得出头部

的偏转能够实现一定曲率的穿孔作业,从而证明了轨迹规

划的可靠性

图11 轨迹实验数据

6 结束语本文针对目前地下管线的非开挖技术的发展现状提

出了“穿地龙”机器人的总体方案设计,并进行了分析,采用气动冲击前进驱动机构,设计了转向机构,及检测与控制系统。

通过轨迹仿真,可以得到“穿地龙”机器人在土中的规划轨迹,为机器人的运动仿真和工作过程中机器人的轨迹

控制打下了基础。

“穿地龙”机器人具有操作简单,价格低廉,性能满足

使用要求等优点,因而,具有很大的应用前景。

[参考文献]

[1] 刘沙.冲击矛和夯管锤综述[J ].非开挖技术,2002,19(5):

20~23

[2] 何宜章.国外非开挖铺管设备一览[J ].非开挖技术,2003,

20(1):20~23

[3] Sterin D.Graben loser E itungabau [M ].Berlin:Verlag Ernst

&S ohn,2003

[4] Paul H.I m pact mole and ra mm ing equi pment[J ].No 2D i g I n 2

terna ti ona l ,1998,(1):30~32

[5] Peng J M ,et al .Devel opment of KC M130steerable air 2powered

i m pact mole f or directi onal boring[J ].New P i peli n e Technolo 2g i es,Secur ity and Safety ,2003,(2):1367~1373

[6] 王茁.“穿地龙”机器人关键技术研究与样机研制[D ].哈尔

滨:哈尔滨工程大学,2003

[7] 蔡自兴.机器人学[M ].北京:清华大学出版社,2000[8] 孟庆鑫等.“穿地龙”机器人总体方案分析与研究[J ].哈尔

滨工程大学学报,2003,(3):292~295

(上接第938页)

[参考文献]

[1] 吕京国,黄国满,杨明辉等.用V isual C ++实现大数据量

的快速存取[J ].测绘科学,2002,27(3):29~32

[2] 崔树标,张宜生,梁书云等.ST L 面片中冗余顶点的快速滤

除算法及其应用[J ].中国机械工程,2001,12(2):173~175

[3] 成学文,李德群,周华民,崔树标等.基于哈希表的ST L 面片

冗余顶点快速滤除算法[J ].华中科技大学学报,2004,32

(6):69~72

[4] 黄常标,林俊义,江开勇.快速成形中ST L 文件拓扑信息的

快速建立[J ].现代制造工程,2004,(8):16~18

[5] 郎兴华,郭阳,林亨,张伟.ST L 模型的立体显示及其多屏拼

接[J ].系统仿真学报,2004,16(4):740~744

[6] [美]David J.Kruglinski .V isual C ++6.0技术内幕(第四

版)[M ].北京:清华大学出版社,1999

[7] Edgebreaker R J.Connectivity comp ressi on f or triangle meshes

[J ].I EEE Tran s acti on s on V isua li za ti on and Com puter

Graph i cs,1999,5(1):47~61

[8] 朱战立,刘天时.数据结构(使用C 语言)[M ].西安:西安交

通大学出版社,1999

[9] 彭群生,鲍虎军,金小刚.计算机真实感图形的算法基础

[M ].北京:科学出版社,1999

5

79

如何导入导出3D打印机可打印的stl文件以及模型尺寸的调整方法

如何导入导出3D打印机可打印的stl文件以及模型尺寸的调整方法如果想要让3D打印机进行工作还需要3D三维模型的配合才能完成。如果您从网上下载了一个stl格式的可打印三维模型,就可以放入3D打印机配套软件中进行打印操作了。如果您对下载好的stl格式的三维模型还不甚满意,而且恰好您稍微懂些3D软件的操作,就可以对下载的模型进行更改让其满足您的设计要求,今天乐彩科技就来说一下具体的操作步骤。 首先打开3D max软件,然后点击“文件”——“导入”——“导入外部文件到3D max 中”,就可以将stl格式的文件成功导入到三维模型制作设计软件中了,这个过程会比较长一些,如果stl文件过于大或者stl模型过于复杂化可能会出现打不开的情况。接下来爱玩3D max的你可以自由发挥你的想象力了,设计出好看的三维物体在3D打印机中进行打印操作。 关于导出3D打印机可打印的stl文件格式,只需要我们在三维设计软件如3D max中设计好三维模型,然后执行“文件”——“导出”——“从当前3D max场景导出外部文件格式”——在弹出的提示框中设置文件保存位置,然后为文件进行命名,并设置保存类型为:STL(*.STL)即可。 3d打印机打印的文件格式为.STL,图像模型文件用replicatorG打开。打开后可以看到模型的视图和相应信息。如果想要改变打印的模型尺寸,可以在软件右边的“Scale”按钮边的输入框内输入相应的参数,比如,输入2就放大一倍,写0.5就缩小一倍。当然你也可点击“Scale”按钮,点过之后再将鼠标箭头移动到模型视图区域,按着鼠标左键不放,往右拖动可以放大模型尺寸,往左拖动可以缩小模型。

CAD系统输出STL文件方法大全

CAD系统输出STL文件方法大全 Alibre File (文件) -> Export (输出) -> Save As (另存为,选择 .STL) -> 输入文件名 -> Save (保存) AutoCAD 输出模型必须为三维实体,且 XYZ 坐标都为正值。在命令行输入命令 "Faceters" -> 设定 FACETRES 为 1 到 10 之间的一个值 (1 为低精度, 10 为高精度 ) -> 然后在命令行输入命令“STLOUT” -> 选择实体-> 选择 “Y” ,输出二进制文件 -> 选择文件名 CADKey 从 Export (输出)中选择 Stereolithography (立体光刻) I-DEAS File (文件) -> Export (输出) -> Rapid Prototype File (快速成 形文件) -> 选择输出的模型 -> Select Prototype Device (选择原 型设备) -> SLA500.dat -> 设定 absolute facet deviation (面片精度) 为 0.000395 -> 选择 Binary (二进制) Inventor Save Copy As (另存复件为) -> 选择 STL 类型 -> 选择 Options (选 项),设定为 High(高) IronCAD 右键单击要输出的模型 -> Part Properties (零件属性) -> Rendering (渲染) -> 设定 Facet Surface Smoothing (三角面片平滑)为 150 -> File (文件) -> Export (输出) -> 选择 .STL Mechanical Desktop 使用 AMSTLOUT 命令输出 STL 文件。 下面的命令行选项影响 STL 文件的质量,应设定为适当的值,以输出 需要的文件。 1. Angular Tolerance (角度差) ―― 设定相邻面片间的最大角度差 值,默认 15 度,减小可以提高 STL 文件的精度。 2. Aspect Ratio (形状比例) ―― 该参数控制三角面片的高 / 宽比。 1 标志三角面片的高度不超过宽度。默认值为 0 ,忽略。 3. Surface Tolerance (表面精度) ―― 控制三角面片的边与实际模 型的最大误差。设定为 0.0000 ,将忽略该参数。 4. Vertex Spacing (顶点间距) ―― 控制三角面片边的长度。默认 值为 0.0000, 忽略。 ProE 1. File (文件) -> Export (输出) -> Model (模型) 2. 或者选择 File (文件) -> Save a Copy (另存一个复件) -> 选 择 .STL 3. 设定弦高为 0 。然后该值会被系统自动设定为可接受的最小值。 4. 设定 Angle Control (角度控制)为 1 ProE Wildfire 1. File (文件) -> Save a Copy(另存一个复件)-> Model(模型)-> 选 择文件类型为 STL (*.stl) 2.设定弦高为0。然后该值会被系统自动设定为可接受的最小值。 3.设定 Angle Control (角度控制)为 1 Rhino File (文件)-> Save As(另存为 .STL )

MATLAB文件各种操作方法(全)

1.1 文件的打开和关闭 1.1.1 文件的打开 fopen ('filename', 'mode') mode格式有: ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a’:在打开的文件末端添加数据。文件不存在则创建。 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 如果rt表示该文件以文本方式打开,如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 Fopen函数两个返回值: 1、一个是返回一个文件标识(file Identifier),它会作为参数被传入其他对文件进 行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。 (如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不 存在,或是用户无法打开此文件权限); 2、另一个返回值就是message,用于返回无法打开文件的原因; 例:1-1 [f,message]=fopen('fileexam1', 'r') if f==-1 disp(message); %显示错误信息 end (若文件fileexam1不存在,则显示如下信息。 Cannot open file.existence?permissions?memory?) 例:1-2 [f,message]=fopen('fileexam2', 'r'); if f==-1 disp (message); %显示错误信息 else disp(f); end 若文件fileexam2存在,则返回f值。 1.1.2文件的关闭 Fclose(f) F为打开文件的标志,若若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。(打开和关闭文件比较耗时,最好不要在循环体内使用文件) 若要一次关闭打开的所有文件,可以使用下面的命令:fclose all

Matlab文件读取和写函数总结

Matlab读取文件函数总结 1.load读取方式 a.基本说明: 只能读取数值数据,不能读取含文本的数据;日期按数值读取。 b.调用方式: a=load(filename); c.有无分隔符限制: 无需输入分隔符,可自动识别空格、逗号、分号、制表符。 d.能否自定义读取范围: 不能。 e.适用文件类型: txt、csv。 2.importdata读取方式 a.基本说明: 可读取数值数据和含文本的数据,但是要求文本在数据的第一行或第一列。返回值分为数值部分(data)和文本部分(textdata) b.调用方式: a=importdata(filename,delm,nheaderlines); filename:文件名(如果文件在其他路径下,文件名前需加所在路径。) delm:分隔符 nheaderlines:从第nheaderlines+1行开始读取数值数据。 c.有无分隔符限制: 多列数据时需输入分隔符。若不输入分隔符,整行会被作为字符串放入一列。 d.能否自定义读取范围: 可从某一行开始读取数值数据。若使用importdata按钮,则可自定义读取范围和设置数据类型。 f.适用文件类型 txt、xls、xlsx、csv。 3.textscan读取方式 a.基本说明: 可对列按照自定义格式读取数据,必须输入每列的读取格式,可跳过某个列或几列。 按数值读取时,缺少值以NaN填补;按字符读取时,缺少值以空格填补。返回值按列放入元胞数组。 b.调用方式: c = textscan(fid,'format',n,'param',value) fid:文件指针。使用textscan函数时需先使用fopen函数打开数据文件,返回给fid 文件若不再使用,则需用fclose(fid)关闭文件。 ‘format’:定义每列的读取格式。例如%s表示按字符串读取、%d表示按整数读取、%D 按日期读取、%*表示跳过该列。level%u8表示将level1读取成1,去掉level。 ‘param’,value:这两个参数成对出现。例如’Delimiter’,’s’表示按分隔符为’,’进行读取。 c.有无分隔符限制 可自定义分隔符,不是必须的。 d.能否自定义读取范围:

各种3D软件如何导出STL文件

一、软件:Alibre 1. 文件-File 2. 导出-Export 3. 保存为-Save As > STL 4. 输入文件名-Enter File Name 5. 保存-Save 二、软件:Ashlar-Vellum 1. 文件-导出File > Export… 2. 选择STL导出格式-Select STL Export Type 3. 选择二进制选项并点 OK - Set Export Options to Binary > OK 4. 输入文件名Enter Filename 5. 保存Save 三、软件:AutoCAD 您的设计必须是三维实物,并且坐标值都为正 1. 保证目标是正空间(坐标值为正) 2. 在命令行输入“FACETRES” 3. 输入1到10之间一个数,1表示低分辨率,10表示高分辨率 4. 在命令行输入“STLOUT” 5. 选择目标模型 6. 输入"Y"表示输出二进制 7. 输入文件名-保存 四、软件:Autodesk Inventor 1. 保存为Save Copy As 2. 选STL Select STL 3. 选项选择高Choose Options > Set to High 4. 输入文件名Enter Filename 5. 保存Save 五、软件:CADKey 1. 从Export(输出)中选择Stereolithography(立体光刻) 2. 输入文件名 3. 点OK 六、软件:Catia 1.选择STL命令 2. 最大Sag=0.0125 mm 3. 选择要转化为STL的零件

4. 点击YES, 选择输出(export) 5. 输入文件名输出stl文件 七、软件:I-DEAS 1. 文件File > 输出Export > 快速成型文 件Rapid Prototype File > OK 2. 选择要导出的模型Select the Part to be Prototyped 3. 选择成型设 备Select Prototype Device > SLA500.dat > OK 4. 设置绝对面片精度到 0.000395 Set absolute facet deviation to 0.000395 5. 选择二进制Select Binary > OK 八、软件:IronCAD 1. 右键点击要输出的零件Right Click on the part 2. 零件性质Part Properties > 生成Rendering 3. 设置面片表面光滑到 150 Set Facet Surface Smoothing to 150 4. 文件File > 输出Export 5. 选择STL文件Choose .STL 九、Mechanical Desktop 使用AMSTLOUT命令输出STL文件 1.Angular Tolerance(角度差)-- 设定相邻面片间的最大角度差值,默认15度,减少可以提供STL文件的精度 2.Aspect Ratio(形状比例)--该参数控制三角面片的高度比。1标志三角面片的高度不超过宽度。默认值为0,忽略。 3.Surface Tolerance(表面精度)--控制三角面片的边与实际模型的最大误差。设定为0.0000,将忽略该参数。 4.Vertex Spacing(顶点间距)--控制三角面片边的长度。默认为 0.0000,忽略。 十、软件:ProE / ProEngineer 1. 文件File > 输出Export > 模型(或文件) Model (or File > Save a Copy) 2. 选择STL格式Set type to STL 3. 设置弦高(chord height)为0。然后该值会被系统自动设定为可接受的最小值。 4. 设置角度控制为1 5. 选择文件名 6. OK

matlab基本操作,读取csv文件

1、用csvread函数 注意:csvread函数只试用与用逗号分隔的纯数字文件 第一种:M = CSVREAD('FILENAME') ,直接读取csv文件的数据,并返回给M 第二种:M = CSVREAD('FILENAME',R,C) ,读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。 第三种:M = CSVREAD('FILENAME',R,C,RNG),其中RNG = [R1 C1 R2 C2],读取左上角为索引为(R1,C1) ,右下角索引为(R2,C2)的矩阵中的数据。 注意:matlab认为CSV第1行第1列的单元格坐标为(0,0) 给定一个csvlist.csv文件,其内容如下 02, 04, 06, 08, 10, 12 03, 06, 09, 12, 15, 18 05, 10, 15, 20, 25, 30 07, 14, 21, 28, 35, 42 11, 22, 33, 44, 55, 66 例1.1读取整个文件 csvread('csvlist.csv') ans = 2 4 6 8 10 12 3 6 9 12 15 18 5 10 15 20 25 30 7 14 21 28 35 42 11 22 33 44 55 66 例1.2读取第2行以下,第0列以右区域的数据 m = csvread('csvlist.dat', 2, 0) m = 5 10 15 20 25 30 7 14 21 28 35 42 11 22 33 44 55 66 例1.3读取第2行以下,第0列以右,第3行以上,第3列以左区域的数据 m = csvread('csvlist.dat', 2, 0, [2,0,3,3])

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose)

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose) matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,…打开方式?) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: λ…r?:只读方式打开文件(默认的方式),该文件必须已存在。 …r+?:读写方式打开文件,打开后先读后写。该文件必须已存在。λλ…w?:打开后写入数据。该文件已存在则更新;不存在则创建。 …w+?:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ λ…a?:在打开的文件末端添加数据。文件不存在则创建。

…a+?:打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如…rt?或…wt+?,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen 函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(…all?)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据

点云格式转换

点云格式转换: 在日常工作中,我们所用到的点云一般都为三角化后输出的网格面数据,其格式为标准格式STL格式。另一种为输出的点数据ASCII 格式. ⑴.STL是以一个文件的方式输出.输出的时候有ASCII和 binary两种方法,一般采用二进制(binary)的方法输出, 可以节省空间. ⑵.ASCII是把文件分成许多小的文件包输出的.一般是用输 出的点数来限制文件包的.

其中,STL是最常用的格式,因为它所包含的信息最全面,而且可以被大多数的软件所接受. 但有时因为不同的应用,测量后输出的数据有可能为VTX(顶点文件)、WRL和IV格式,而常用软件CATIA在导入点云时不支持以上两种格式.这时我们可以利用以下方法将VTX、WRL和IV转化为ASC 格式: 以上图中的foot模型为例. ⑴.用写字板将WRL格式文件打开.原文件大小为444KB.

⑵.将文件另存为TXT或DAT格式.此时文件大小为454KB.

⑶.将另存后的DAT文件的后缀名改为ASC格式.但此时文件大 小没有改变.(此时,如遇大型文件不方便存储和拷贝.) ⑷.用Imageware将文件打开,再重新另存为ASCII文件,此时文件 大小为293KB.

2 IV格式的转化同上. VTX格式的转化与上面方法基本相似,只是在写字板中将VTX 文件打开后会同时显示每个点的坐标和I,J,K变量值.需在坐标值与I,J,K变量值之间的空格处用逗号替换后再与以上方法同步即可. 以上方法的优点:1.在没有专用的三维扫描软件的情况下可以进行转换.2.可将大型的VTX、WRL、IV格式文件转换为ASCII文件,以方便存储和拷贝. 缺点:步骤烦硕,不能一步到位.特别是在大型文件的转换时,尽量避免采用VTX格式进行转换. 由于经验有限,以上方法难免有疏漏不正之处,敬请不吝指正.

matlab文件操作及读txt文件(fopen,fseek,fread,fclose

matlab文件操作及读txt文件(fopen,fseek,fread,fclose) matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:λ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。λ λ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ λ‘a’:在打开的文件末端添加数据。文件不存在则创建。 λ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。

2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose 函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件 fid =3 %其值大于0,表示打开成功 >> fwrite(fid,a,'double') ans = 9 %表示写入了9个数据 >> fclose(fid)

Matlab的各种数据读取、文件读写等操作汇总

Matlab 的各种数据读取、文件读写等操作汇总 MATLAB 提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定:?用户所执行的 操作是导入数据还是导出数据;?数据的格式为文本格式、 二进制格式还是如HDF 之类的标准格式。将数据导入MATLAB 中最容易的方法就是使用导入数据模板(Import Wizard) ,使用该模板时不需要知道数据的格式,只需指定包含这些数据的文件,然后导入模板会自动处理文件内容。本章重点内容如下:? 文件的打开和关闭? 文本文件的读取?存写ASCII数据?二进制数据的读取? 二进制数据的存写? 使用I/O文件函数进行数据读写?MAT 文件的读写 2.1 文件的打开和关闭2.1.1 文件的打开无论是要读写ASCII 码文件还是二进制文件,都必须先用fopen 函数将其打开,在默认情况下,fopen 以二进制格式打开文件,它的使用语法如下:fopen ('filename', 'mode') 其中filename 表示要读写的文件名称,mode 则表示要对文件进行的处理方式,如下:rt :以只读方式(Reading)打开文件wt:以只写方式(Writing)打开文件at:以追加方式(Appending)打开文件,新内容将从原文件后面续写r+t:以同时读写方式打开文件w+t :以同时读写创建文件,原文件内容被清除

a+t :以同时读和追加(Reading and Appdending) 方式,原文件内容被保留,新内容将从原文件的后面开始At :以读写方式打开或创建文件,适用于对磁带介质文件的操作Wt :以写入方式打 开或创建文件,原文件内容被清除,适用于磁带介质文件的操作fopen 函数有两个返回值,一个是返回一个文件标志(file Identifier) ,它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是-1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message ,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen 函数时,都测试其返回值是否为有效值。下面以脚本m 文件为例来声明文件的打开。例 2-1 %exam1.m[f,message]=fopen('fileexam1', 'r')if f==-1disp (message); % 显示错误信息end 若文件fileexam1 不存在,则显示如下信息。Cannot open file.existence?permissions?memory?... 例2-2 %exam2.m[f,message]=fopen('fileexam2', 'r');if f==-1disp (message); % 显示错误信息else disp(f);end 若文件fileexam2 存在,则返回f值。 2.1.2 文件的关闭一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose 函数来关闭文件,其适用语法如下:fclose(f) 。其中 f 为打开文件的标志,若fclose 函数返回值为0 ,则表示成功关闭 f 标志的文件;若返回值为-1,

matlab文件操作及读txt文件

matlab文件操作及读txt文件 matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: λ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。λλ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ λ‘a’:在打开的文件末端添加数据。文件不存在则创建。 λ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。

另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:test.bin','wb') %以二进制数据写入方式打开文件

STL格式简介

是(立体印刷)的简写,是标准三角片语言。以为后缀的3D模型文件成为3D打印的标准文件,几乎所有的快速成型机都可以接收STL文件格式进行打印。当您保存STL文件之后,您设计的所有表面和曲线都会被转换成网格,网格一般由一系列的三角形组成,代表着您设计原型中的精确几何含义。很多三角形的面可以表现流畅的曲线,这就需要导出高分辨率的STL文件,但如此一来有些三角形会变得相当的小以至于机器无法察觉。这就需要我们将STL文件保存为合适的分辨率。 水密性-3D打印要求STL文件必须是水密的。水密最好的解释就是无漏洞的有体积固体。正如上面所说的原因,即使你的设计的固体已经创建完成了,很有可能在模型中仍存在没有被留意的小孔。 STL错误-有时您要导出STL文件格式时,软件会报告“错误”。这些错误并非发生在浏览阶段,而是真实存在于该文件的对象中。有些软件能帮我们修复STL错误,请留言魔猴网的知识堂,我们会再近期公布一些软件修改STL的办法。 切片-STL文件一旦创建,3d打印软件就会将模型切“片”,存为一系列横截面的文件,并计算出3D打印机的路径和打印量,后面的工作就是3D打印机不断地将横截面层层打印、累积,直到模型完成。 层厚度-3D打印工艺一个重要的指标就是层厚度,一般来讲,层越薄,精度越高,但消耗时间越长。层越厚,切片就越粗糙,有些小于层厚的细节,就有可能被忽略。这是个需要精心调整的一个参数。 3D打印材料-不同的3D打印技术使用不同的打印材料,常见的有:塑料、光敏树脂、石膏粉、蜡等,都可以选择。 支撑材料-每种3D打印技术都需要使用支撑材料来支撑模型的表皮。简单说就是任何打印出来的几何形体,都是一层层累积而来,一层建造再另外一层以上,有些形状,比方说正方体,四周表面都自支撑,上面一面要打印成功,就需要使用支撑材料。

STL文件上有限元网格的生成

STL文件上有限元网格的生成摘要: 这些被提议的方法的是为了展示一个适合有限元方法的且关于物体近似边界表示的直接由CAD软件生成的曲面网格产生的可能性。首先,我们将描述由一个简单的物体表面三角剖分组成的边界表示法。接着我们将展示如何获得一个相容的形状适应网格。形状适应是考虑到几何逼近和由一个误差估计量的各向同性的尺寸映射做出的。网格可以被用来用于有限元计算(通过壳体元素),或者可以用来作为一个启动体积网格算法(Delaunay 或advancing front)曲面的网格。这个用来产生网格的原则是基于与求精算法相关的Delaunay 方法和光滑化原则。最后,我们将展示不用用于克服常规的基于一个几何特定表示法的网格化软件的限制的几何模型的参数表示法。 关键字:网格产生;STL文件格式Bisection算法;Delaunay 三角剖分。 1.CAD接口 1.1基于CAD的数据集 市面上的大多数CAD软件可以产生STL文件,且这些大体上用作实现样机研究和绘制图形的目的。这些文件表现了立体的三角剖分的边界。STL三角剖分的生产算法都是高效的,而且如果可以接受大规模数据集的话平面可以被精确地逼近。但是,这不是一个真正几何模型是因为STL文件格式仅由一个扩展的三角平面列组成。这些小平面除了一般立体外部定向的座标外,还由三个三角顶点座标组成。这种三角剖分法是建立用来最小化一个关于立体(图1)真实边界的几何逼近准则的。(见图1) 1.2 STL三角剖分的特性 STL三角剖分不能直接用在有限元方法(FEM)中,主要是因为它要求在计算域的几何描述上的特殊性。在FEM中,几何和函数支持由元(三角形或其他)提供,且它们必须有一特殊形状,也就是就计算误差估算量的固有大小和固有品质因子应该越低越好。在这项工作中,我们利用如下三角形的品质因子,在此di,i=0…2代表三角形每边的长度。我们假定: 品质因子就是: 这个品质因子在0(对于所有退化三角形而言)和1(对等边三角形而言)之间。 当然,这些要求是和应用相关的。比如,在流体力学中很普遍地应用在边界层的各向异性元和冲激波当中。很显然一个由最小化几何准则得到的网格不能适合FEM的要求,因为它依赖于表面的的曲率和拓扑,且生成的三角形在某方向上会大大伸长(见图2-4)。但是,得到的网格一般都是一致的。 1.3 STL网格中的几何恢复 STL文件内容包含每个三角形顶角座标和相应法线。为了达到曲面的完全网格化,我们需要获得关于被网格化曲面的拓扑和曲率的有关数据。三角形间的拓扑和连通度可以通过避免在STL文件间的顶角冗余得到。这可以通过利用一个利用字典法排序和储存了的顶角的二叉树做出的。在这个过程结束时,我们得到了一物体表面的网格及所有类型的可被重新网格化所需的连通度,特别是用来作邻接查找的连通度(见小节三)。

Matlab数据文件的读写

Matlab数据文件的读写 在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件。MATLAB使用多种格式打开和保存数据。本章将要介绍MATLAB中文件的读写和数据的导入导出。 了解MATLAB的基本数据操作 掌握MATLAB中文本文件的读写方式 掌握MATLAB通过界面导入导出数据 了解MATLAB中的基本输入输出函数 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。 13.1.1 文件的存储 MATLAB支持工作区的保存。用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过命令窗口进行。 1. 保存整个工作区 选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。 2. 保存工作区中的变量 在工作区浏览器中,右击需要保存的变量名,选择Save

As…,将该变量保存为MAT文件。 3. 利用save命令保存 该命令可以保存工作区,或工作区中任何指定文件。该命令的调用格式如下: ● save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。 ● save('filename'):将工作区中的所有变量保存为文件,文件名由filename指定。如果filename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。 ● save('filename', 'var1', 'var2', ...):保存指定的变量在filename 指定的文件中。 ● save('filename', '-struct', 's'):保存结构体s中全部域作为单独的变量。 ● save('filename', '-struct', 's', 'f1', 'f2', ...):保存结构体s中的指定变量。 ● save('-regexp', expr1, expr2, ...):通过正则表达式指定待保存的变量需满足的条件。 ● save('..., 'format'),指定保存文件的格式,格式可以为MAT 文件、ASCII文件等。 13.1.2 数据导入

STL格式简介

STL格式简介 STL是最多快速原型系统所应用的标准文件类型。STL是用三角网格来表现3D CAD 模型。单一三角网格的数码表现如下所示: solid test facet normal 0 1 0 outer loop vertex 0 4 0 vertex 0.517638 3.93185 0 vertex 0.5 3.93185 -0.133975 endloop endfacet endsolid test 表面的三角剖分之后造成3D模型呈现多面体状。输出STL档案的参数选用会影响到成型质量的良窳。所以如果STL档案属于粗糙的或是呈现多面体状,您将会在模型上看到真实的反应。 在CAD软件包中,当您输出STL档案时,您可能会看到的参数设定名称,如弦高(chord height)、误差(deviation)、角度公差(angle tolerance)、或是某些相似的名称。建议储存值为0.01或是0.02。 STP 文件 一种产品模型数据文件。 产品模型数据交换标准STEP是国际标准化组织(ISO)所属技术委员会TC184(工业自动化系统技术委员会)下的“产品模型数据外部表 示”(ExternalRepresentationofProductModelData)分委员会SC4所制订的国际统一CAD数据交换标准。所谓产品模型数据是指为在覆盖产品整个生命周期中的应用而全面定义的产品所有数据元素,它包括为进行设计、分析、制造、测试、检验和产品支持而全面定义的零部件或构件所需的几何、拓扑、公差、关系、属性和性能等数据,另外,还可能包含一些和处理有关的数据。产品模型对于下达生产任务、直接质量控制、测试和进行产品支持功能可以提供全面的信息。 STEP为产品在它的生命周期内规定了惟一的描述和计算机可处理的信息表达形式。这种形式独立于任何特定的计算机系统,并能保证在多种应用和不同系统中的一致性。这一标准还允许采用不同的实现技术,便于产品数据的存取、传输和归档。STEP标准是为CAD/CAM系统提供中性产品数据而开发的公共资源和应用模型,它涉及到了建筑、工程、结构、机械、电气、电子工程及船体结构等无所不包的所有产品领域。在产品数据共享方面,STEP标准提供四个层次的实现方法:ASCII码中性文件;访问内存结构数据的应用程序界面;共享数据库以及共享知识库。无疑,这将会给商业和制造业带来一场大变革,而且STEP标准在下述几个方面有着明显的

如何在matlab中读取TXT数据文件

如何在matlab中读取TXT数据文件 文章来源:不详作者:佚名 -------------------------------------------------------------------------------- 该文章讲述了如何在matlab中读取TXT数据文件. 今天需要做个matlab读取txt文件,在网上收集了下,查到了几篇不错的,总结一下,方便大家(包括me)使用: 下面这个函数是取filein中的第line行写入fileout中的程序,如果想实现取特定几行,只要稍微修改一下就可以。 function dataout=dataread(filein,fileout,line) fidin=fopen(filein,'r'); fidout=fopen(fileout,'w'); nline=0; while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读行

nline=nline+1; if nline==line fprintf(fidout,'%s\n',tline); dataout=tline; end end fclose(fidin); fclose(fidout); %%%%%%%%%%%%%%%%%%%%%%%%%% 调用格式:dataout=dataread(filein,fileout,line) 如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据

a=textread('ll.txt'); t=a(1:43,4:10); 1:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的matlab没有textread函数,直接从mathworks网站下载就行。 根据txt文档不同种类介绍不同的读取数据方法 转自:https://www.sodocs.net/doc/5810843942.html,/youngbrave/blog/item/878db31fcd4f220f304e15bb.html 一、纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如test.txt文件,内容为“17.901 -1.1111 33.045 17.891 -1.1286 33.045 17.884 -1.1345 33.045” 可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。 二、中英文和数据如test1.txt “你好 欢迎来到

CAD造型软件输出STL文件方法

Alibre File(文件)-> Export(输出)-> Save As(另存为,选择.STL)-> 输入文件名-> Save(保存) AutoCAD 输出模型必须为三维实体,且XYZ坐标都为正值。在命令行输入命令“Faceters” -> 设定FACETRES为1 到10 之间的一个值(1为低精度,10为高精度) -> 然后在命令行输入命令“STLOUT” -> 选择实体-> 选择“Y”,输出二进制文件-> 选择文件名 CADKey从Export(输出)中选择Stereolithography(立体光刻) I-DEAS File(文件)-> Export(输出)-> Rapid Prototype File(快速成形文件)-> 选择输出的模型->Select Prototype Device(选择原型设备)> SLA500.dat -> 设定absolute facet deviation(面片精度)为0.000395 -> 选择Binary(二进制) Inventor Save Copy As(另存复件为)-> 选择STL类型-> 选择Options(选项),设定为High(高) IronCAD 右键单击要输出的模型-> Part Properties(零件属性)> Rendering(渲染)-> 设定Facet Surface Smoothing(三角面片平滑)为150 -> File(文件)> Export(输出)-> 选择.STL Mechanical Desktop 使用AMSTLOUT命令输出STL文件。 下面的命令行选项影响STL文件的质量,应设定为适当的值,以输出需要的文件。 1.Angular Tolerance(角度差)―― 设定相邻面片间的最大角度差值,默认15度,减小可以提高STL文件的精度。 2.Aspect Ratio(形状比例)―― 该参数控制三角面片的高/宽比。1标志三角面片的高度不超过宽度。默认值为0,忽略。 3.Surface Tolerance(表面精度)―― 控制三角面片的边与实际模型的最大误差。设定为0.0000 ,将忽略该参数。 4.Vertex Spacing(顶点间距)―― 控制三角面片边的长度。默认值为0.0000, 忽略。 ProE 1. File(文件)-> Export(输出)-> Model(模型) 2. 或者选择File(文件)-> Save a Copy(另存一个复件)-> 选择.STL 3.设定弦高为0。然后该值会被系统自动设定为可接受的最小值。 4.设定Angle Control(角度控制)为1 ProE Wildfire 1.File(文件)-> Save a Copy(另存一个复件)-> Model(模型)-> 选择文件类型为STL (*.stl) 2.设定弦高为0。然后该值会被系统自动设定为可接受的最小值。 3.设定Angle Control(角度控制)为1 Rhino File(文件)-> Save As(另存为.STL)SolidDesigner (Version 8.x) File(文件)-> Save(保存)-> 选择文件类型为STL SolidDesigner (not sure of version)File(文件)-> External(外部)-> Save STL (保存STL)-> 选择Binary(二进制)模式->选择零件-> 输入0.001mm作为Max Deviation Distance(最大误差) SolidEdge 1.File(文件)-> Save As(另存为)-> 选择文件类型为STL 2.Options(选项) 设定Conversion Tolerance(转换误差)为0.001in 或0.0254mm 设定Surface Plane Angle(平面角度)为45.00 SolidWorks 1.File(文件)-> Save As(另存为)-> 选择文件类型为STL 2.Options(选项)-> Resolution(品质)-> Fine(良好)-> OK(确定)

相关主题