杨继全,李 娜,施建平,唐文来,张 钢
(南京师范大学电气与自动化工程学院,江苏 南京 210023)
不同CAD软件设计的三维模型文件因格式不同、用途不同等,经常要进行数据交换,这就需要建立数据交换标准。3D打印设备常用的“准标准”文件是STL格式文件,但STL格式并不完备,比如表面漏洞,其表达的只是对象的几何信息,不包含色彩和材料信息,异质零件模型进行三角面片化所得到的传统STL格式文件也比较粗略。针对这些问题,本文首先介绍多材料三维打印的成形工艺及过程,然后重点阐述异质零件制造的模型及数据格式,其中本文给出的基于STL格式的细化及在细化基础上的四面体模型,将作为异质零件的建模基础。
3D打印成形系统的工作原理是在数字信号驱动下,采用物理手段,将成形材料以一定的速率从喷头打印至指定位置,打印材料按照一定的序列堆积,形成三维实体零件。
目前针对多材料模型的成形方法研究,开发的系统都只适用于有限材料的相对简单的成形件的加工。图1所示的是基于微滴喷射技术和3D打印技术的异质零件设计与制造一体化加工流程。其思路为:将通过逆向工程获得的扫描数据或根据要求设计出的三维结构CAD实体模型以单色STL文件的形式导出,根据零件功能要求进行零件的几何拓扑形状(用单色STL面化模型数据表示)和材料组织结构(用色彩信息表示)的并行设计;对含有结构及材料信息的彩色STL模型进行切片分层,获得一系列彩色切片,并对每层加工单元所对应的色彩信息和结构信息进行解析,使之与成形信息相对应;在成形过程中,计算机根据每一层的成形信息分别控制各机构做协调运动,采用微滴喷射技术和3D打印技术,将含有材料微粒的浓悬浮液、紫外光敏树脂或低熔点合金熔液,通过微细喷嘴实现数字化的分层微滴喷射,从而制得异质零件。具体而言,制作开始时,计算机把第一层加工信息发送给打印喷头控制电路,打印喷头控制电路根据第一层的材料信息驱动打印喷头中的某个或某几个喷头按该层的形状喷射一种或几种液态材料,随后液态材料通过挥发、固化、迅速凝固等过程形成实体区域。如果需要打印支撑,在打印喷头中的某个或某几个喷头喷射液态材料的同时,打印喷头中的另一喷头喷射支撑材料填充该层未被喷射的区域,迅速凝固后形成支撑区域。随后,计算机把下一层的成形信息发送给打印喷头控制电路,打印喷头喷射出液态材料和支撑材料。如此反复,一层层地打印,从而快速制作出异质零件。
图1 基于微滴喷射技术和3D打印技术的异质零件设计与制造一体化加工流程
图2所示的是异质零件模型3D打印成形系统结构简图,包括控制计算机、X和Y扫描器、工作台和若干喷头等。喷头的个数可以根据加工所需的材料种类而定。每个喷头内又包括若干个喷嘴,通过协调控制完成多种材料的喷射打印。
图2 成型系统结构简图
3D打印制造零件的过程中,使用的数字模型有几何结构模型、材料模型、切片模型、打印数字化模型。基于点云数据先建立几何结构模型,然后建立材料模型,打印前进行切片处理需要使用切片模型,最后使用打印数字化模型控制喷头进行打印。这些模型既是独立的,又是互相联系的,在打印制造的不同阶段使用的模型具有不同格式,不同的平台也使用不同格式的模型,所以模型在使用过程中需要在不同的格式之间进行转换。
设计多材料异质零件首先需要通过三维造型系统设计出零件的数字模型。目前国际上常用的三维造型软件有Pro/Engineer、UG、SolidWorks、3Ds Max、CATIA等,这些软件虽然数据格式各不相同[1],但它们凭借各自的优势广泛应用于机械、建筑、影视、游戏开发、虚拟设计、医疗等领域。不同的行业、企业及个人通常习惯于使用某一种造型软件。随着现代企业间的协同合作以及全球化生产的飞速发展,不同CAD系统间的资源共享和数据交换存在一定困难,是亟须解决的问题。因此,自20世纪70年代末以来,相关组织及机构制定了一系列的标准格式来解决不同CAD系统间的数据交换问题[2],主要的标准有IGES、STEP、DXF格式和VRML语言。
1)IGES。
IGES(initial graphics exchange specification,初始图像交换规范)是首个实现不同CAD系统间数据交换的标准,由美国国家标准局和工业界共同制定。它独立于具体的CAD系统,起到了“中介”的作用,企业既可以将自己的数据文件按照IGES输出,也可以接收符合IGES的数据文件,从而实现不同CAD系统间的数据交换。
IGES文件在结构上一般由注释段、文件特性描述段、索引段、参数数据段以及结尾段这五部分组成。IGES文件把产品的数据信息视为实体集合,因为任一实体的描述都包括该实体的形状、尺寸、颜色等信息,所以文件在描述实体时也相应地把实体的几何形状(如圆、圆弧、椭圆、直线等)等信息叫作几何实体,保存在参数数据段中;将线性尺寸标注实体、角度尺寸标注实体、半径尺寸标注实体、直径尺寸标注实体等以及颜色定义、线型定义、线宽定义、字形定义等称为非几何实体,并把这些信息保存在索引段。每一类型的实体都有相应的实体类型号,100~199是几何实体的类型号区间,200~499是非几何实体的类型号区间。这样,IGES文件就可以通过实体来描述产品的尺寸、形状等信息。
虽然IGES在很多领域得到广泛的应用,但它仍存在如下问题:①在表达某些几何类型信息时会模棱两可,转换的数据不稳定;②文件格式冗长,导致很难找到和纠正错误,表达信息易出错;③只注意图形数据的转换,对于公差、材料特性、工作条件等信息的转换不完整;④只适用于在计算机集成生产中的各子系统领域之间传送技术绘图或简单的几何模型信息。
由于上述原因,国际标准化组织(International Organization for Standardization, ISO)在IGES的基础上制定了STEP (standard for the exchange of product model data,产品模型数据交换标准)。
2)STEP。
“产品模型数据”是指为了产品在整个生命周期中的应用而全面定义的产品所有数据元素,包括为进行设计、分析、制造、测试、检验和产品支持而全面定义的构件所需的几何、拓扑、公差、关系、属性和性能等数据,另外,还可能包含一些与处理有关的数据。产品模型可以对下达生产任务、直接质量控制、测试等提供全面的信息[3]。因此,产品模型数据对整个产品而不是仅对其几何形状进行描述。此外,STEP还制定了一系列的应用协议来弥补IGES的缺陷。
STEP研究面向产品全生命周期的信息建模,用一种中性的、与平台无关的方式对产品信息进行描述,它在以下方面具有明显的优势[4]:①包含的信息支持产品的整个生命周期;②采用描述产品数据的形式化建模语言Express语言规范,所有的产品定义均为机器可理解的方式;③通过制定应用协议,消除了产品信息的二义性,提高了数据精度;④支持单个零件及装配件的装配控制;⑤经济效益显著,应用范围广泛,许多常用CAD软件都提供STEP接口。
3)VRML语言。
目前通过CAx(CAD、CAM、CAE等各项技术的综合叫法)系统设计的产品数据信息,大多由专用系统产生,不能用通用的浏览器浏览。VRML语言是目前唯一能被Web浏览器支持的一种通用三维场景描述语言。但是VRML语言不能提供对几何体的精确表达,所以它所描述的几何体不能作为产品设计生产的依据[5-6]。
几何模型软件与生产制造设备的数据共享也需要转换的公共标准,现在流行的设备制造者之间也出现数据格式不统一、商业化应用推广难的问题。目前,3D打印使用的30年前制定的数据格式,已经不能满足越来越高的需求。随着越来越多的行业涌入3D打印行业,满足各类新型应用需求的3D打印行业数据标准日益重要,可以预计新的数据标准将会在近期出现并应用。
三维造型软件的存储格式很多,这里介绍目前流行的3D打印可用的数据存储格式,见表1。
表1 常用的3D打印三维模型数据存储格式比较
对表1中几种数据格式加以比较,见表2。
表2 常用三维模型文件格式比较
另外还有DXF格式,它是AutoCAD用来将内部图样信息传递到外部的文件格式,不是由标准化机构制定的标准,但由于AutoCAD软件的流行,DXF文件也成为中性文件的一种。
STL格式应用广泛[7],已有的3D打印软件都支持STL格式,针对STL格式的设计应用最广泛。STL格式是基于三角网格格式的三维模型,使用多个三角面片组合接近并表现三维模型的曲面形式,而彩色三维模型数据则是将颜色信息作为附加信息,添加在模型坐标信息之后。
STL模型类似于有限元的网格划分,它将物体表面划分成很多个小三角形,使用三角面片来近似表示三维实体模型的表面,并且通过对三角形顶点坐标和三角形的法向量的描述来表示3D模型的几何特征,图3所示的是一个烟灰缸的STL模型。图4所示的是STL模型中放大的任一三角面片,每个面片用3个顶点坐标及其法向量这4个数据项唯一表示[8]。
图3 烟灰缸的STL模型
图4 STL模型中的三角面片
2.3.1STL模型遵循的规则[9]
1)共顶点规则。
每一个三角面片都必须与其相邻的三角面片共用两个顶点,即一个三角面片的顶点不能落在相邻三角面片的边上。如图5(a)所示,△ABC的顶点C落在了△BFD的边BD上,违反了共顶点规则,可通过连接顶点F、C和G对其进行修正,如图5(b)所示。
图5 STL的共顶点法则
2)取向规则。
对于每一个小三角面片,其法向量必须向外,3个顶点连成的矢量的方向按右手定则确定,而且相邻的小三角平片不能出现取向矛盾。图6所示为法向量与三角形顶点的关系。
图6 STL模型的取向规则
3)取值规则。
每个小三角面片的顶点坐标值必须是正数,零和负数是错误的。
4)充满规则。
在模型的所有表面上必须布满小三角面片,不得有任何遗漏。
2.3.2STL格式存在的缺陷及相关处理办法
虽然STL文件的应用非常广泛,但由于文件格式的缺陷,其存在数据冗余、缺乏拓扑信息、数据量大、数据错误等问题。
1)数据冗余。
STL文件通过对三角形顶点坐标和三角面片的法向量这4个参数来表示三维模型的几何特征。STL文件有二进制形式和ASCII码形式两种,数据处理时一般采用ASCII码形式。ASCII码形式示例如下:
solid
facet normal
outer loop //三角形环开始标记
vertex
vertex
vertex
end loop //三角形环结束标记
end facet //第一个面标记结束
facet normal
outer loop //三角形环开始标记
vertex
vertex
vertex
end loop //三角形环结束标记
end facet //第二个面标记结束
…
End solid
实际上,如图7所示,△ABC每个顶点至少为3个三角形所共有,因此在存储信息时一个顶点的数据至少会被保存3次;另外,由于满足右手定则,每个三角面片的法向量可以由三角形的3个顶点给出,因此矢向量也是冗余的。一般情况下,假设STL文件中的面片数为n面,生成STL文件时不重复的顶点数为n顶,则两者之间具有如下关系:
图7 三角面片的数据冗余
n面/n顶=2
相应地可以求出冗余的顶点数为:
3n面-n面/2=2.5n面
即顶点冗余数大约是面片数的2.5倍。
这些冗余的信息不仅占用资源,而且影响数据的传输、读取和处理速度。
王从军[10]、任乃飞[11]等分别提出了新的数据格式。他们提出的数据格式仍然采用三角面片来逼近几何实体模型,但是在保存信息时,首先对三角形的顶点按x,y,z方向进行排序,按顺序存储各点的坐标;然后按右手定则建立三角形面对应点的索引,依次保存每个面的信息。这种新的STL格式文件的大小为原来二进制格式文件的1/3~1/2。
崔树标[12]、卫炜[13]等分别用三轴分块排序算法和哈希表算法对STL文件中的冗余顶点进行过滤,大大提高了数据处理的速度。
2)缺乏拓扑信息。
一个完善的拓扑结构应满足以下条件[14]:
①处理大数据量的操作时,依然十分高效、快速;
②具备分析数据质量的能力,即能够快速地搜索孔洞、间隙和边界;
③能够快速查询每一个点的邻域信息;
④能够快速查询每个面的相邻3个面;
⑤通过一条边可以遍历所有其他的边;
⑥通过一个面可以遍历所有其他的面。
STL文件中虽然存在着大量的冗余数据,但是缺少三角面片之间的拓扑信息,相应有一些处理方法。
①通过建立基于VF存储结构的平衡二叉(AVL)树顶点聚合算法,去除冗余信息,压缩STL文件的大小;同时,利用基于虚AVL的邻边搜索优化算法完成STL半边拓扑信息重建。虽然这种方法的处理速度接近商业软件的水平,但是在AVL的快速生成、内存管理等方面还有需要进一步解决的问题[15]。
②将半边数据结构用于STL文件拓扑信息的重建,提出基于散列的STL拓扑信息重建的方法,但这是一种静态的结构,不适用于网格的动态修改[16]。
3)数据错误。
在将三维模型转换成STL文件的过程中,如果出现STL文件规则或参数设置不当、相交的曲面曲率相差过大等错误,产生的STL文件可能会出现孔洞、裂缝、重叠、顶点不重合及法向错误等问题[17]。常见错误见表3。
表3 STL文件常见错误
习俊通等[18]提出了STL文件的诊断和修复方法:先利用三角面片结构中的标记flag来对各种错误进行诊断分类,然后采用空间多边形三角剖分算法对孔洞和裂缝进行修复;同时提出了一种基于坐标区域分块的点表、边表、面表的快速建立方法,以提高STL文件的诊断和修复效率。
目前,Materialise公司开发的Magics RP软件在STL格式文件中的查错、纠错、合并等编辑功能非常强大,国内各研发机构亦推出了多个功能较强的STL格式文件修复软件[19]。
2.3.3STL模型的细化
由CAD系统设计出来的三维模型,其表面三角剖分之后会呈现多面体状。尽管生成STL模型时可以根据精度要求选择三角面片的大小,但是传统STL格式的表面网格化往往较为粗略,不适合多材料异质零件CAD模型的材料的精细描述,为此需对其进行网格细化及均匀化。图8(a)所示为一单色实体模型,采用传统的STL格式将该模型面化成如图8(b)所示的含有12个面片和8个顶点的面化模型,为提高异质零件的结构和材料信息描述精度,对图8(b)所示的每个面片进行细化得到如图8(c)所示的细化STL网格化模型。
图8 STL模型网格细化
图9所示的是对一个尺寸为200 mm×200 mm×240 mm的模型,分别采用传统单色STL处理、12.7 mm三角网格细化和5.08 mm三角网格细化的对比图。对比可知细化后的网格精度及均匀度较传统单色STL模型在材料的描述方面要理想得多。
图9 STL模型网格细化对比
对STL模型进行细化,不仅可以提高模型外形结构的精度,而且使得以STL格式为基础的对多材料异质零件材料空间的描述成为可能。
异质零件内部和外表面可能具有不同结构和不同材料,需要对其外部和内部信息分别描述。建立内部特征点的模型有利于复杂信息处理。本文使用的微四面体模型具有很强的内部信息处理能力,为后续连载文章中多材料异质零件信息处理的标准格式。
1)微四面体的创建。
利用STL文件所产生的三角面片,可以获得异质零件的表面信息,此时每个三角形顶点的特征已知。通过这些已知的顶点,向零件内部构建四面体。仍然以图8所示的正方体模型为例,定义图8(b)所示的STL网格化模型的各顶点,并为其加上空间直角坐标系,如图10所示。
图10 空间直角坐标系下的网格化模型
从图10所示的网格化模型中,取出△ADC、△ADE、△ACE及△DCE所构成的四面体ACDE,并以它为研究对象。假设原模型是一个边长为10 mm的正方体,并分别将边AD、DC、DE五等分,则图11中各点的坐标见表4。
表4 网格模型中各特征节点的坐标
图11 微四面体的构建
如图12所示,特征节点分别为v1(x1,y1,z1)、v2(x2,y2,z2)、v3(x3,y3,z3)、v4(x4,y4,z4)。如果图12所示的四面体的边v1v2被m等分,边v2v3被n等分,边v2v4被k等分,就可以建立如图13所示的微四面体。
图12 空间任意四面体 图13 空间微四面体的构建
2)微四面体创建流程。
通过上述方法,基于STL格式的微四面体创建流程如图14所示。
从图14可以看出,针对STL格式,对三角形各边进行细分,可以获得已知特征的网格节点,通过这些网格节点就可以依次构建出微四面体。图15中,Sa,Sb分别为实体被分解后的空间四面体,fa~fg分别为空间四面体的各三角面片,v1~v5分别为被分解后的三角面片的各顶点。
图14 基于STL格式的微四面体创建流程
假设已知上述实体各顶点的坐标值,就可以得到如图15所示的各点、面、体的参数关系。
图15 微四面体分解
图15中,ns为空间四面体的个数;nf为四面体被分解成的三角面片的个数。
利用上述方法构造微四面体,就可以得到基于微四面体空间单元的多材料异质零件模型。其每个微四面体可视为相对独立的实体单元(见图16),每个微四面体单元结构信息由4个顶点(A,B,C,D)、4个面法向量(u,v,s,t)表示,而其材料信息由下式描述。
图16 微四面体各点定义
Pm=[m1,m2,…,mk]T=M·
式中:Pm指四面体上任意一点的材料信息;M为四面体顶点材料分布矩阵。
在使用上述方法构建的基于单色STL格式的微四面体多材料异质零件CAD模型的基础上,建立微四面体各顶点的材料信息与色彩信息的映射函数,创建以彩色STL格式描述的多材料异质零件CAD模型,就可以为后续的多材料异质零件CAD模型的可视化和成形制造奠定基础。
异质零件的CAD建模是异质零件3D打印技术的关键性、基础性问题,本文在介绍异质零件3D打印成形原理的基础上,论述了面向异质零件CAD建模所采取的几种数据存储格式。STL格式作为3D打印领域的“准标准”,有着极其广泛的应用,因此本文重点围绕STL数据模型的细化、基于STL数据格式的微四面体定义,以及异质零件微四面体构建方法,介绍了异质零件CAD建模的基础理论,为后续异质零件的建模和模型设计可视化奠定理论基础。