基于STL格式的增材制造八棱柱状支撑结构的设计与优化
2021-11-09史廷春岳秀艳
葛 啸 史廷春 岳秀艳
(①杭州电子科技大学自动化学院,浙江 杭州 310018;②杭州电子科技大学图书馆,浙江 杭州 310018)
随着工业4.0时代的到来,制造技术逐步向智能化转变[1]。近年来,增材制造技术逐渐成熟,三维打印如何快速建造各类结构复杂的形体,提高系统效率、质量及降低成本成为了主要研究目标[2]。新形势下,应该加快推动增材制造在我国的发展,推进我国由“制造大国”向“制造强国”的转变[3]。熔融沉积制造(fused deposition modeling,FDM)是一种以数字模型文件STL(stereolithography)为基础,运用热塑性粘合材料,通过逐层打印的方式来制造产品的增材制造技术。FDM技术的一个主要特点是熔丝必须沉积在模型实体或支撑结构上,支撑结构在打印过程中起到支撑模型悬空部分的作用,支撑不足会影响成型稳定性,过多会增加模型打印时间和成本。模型制作完毕后,这些支撑必须被剥离。因此,如何在打印过程中减少支撑成为研究的重要内容之一[4]。
当前有许多关于3D打印支撑结构问题的研究。Hu R等人[5]将模型分解为多个小组件,运用少量支撑的打印方向将小组件组装成完整的模型。基于立体光固化工艺,李卫等人[6]提出了齿形支撑结构的算法,以提高模型表面质量,减少形变;易于剥离支撑结构,提高精度。通过几何方法[7],无导数优化方向的算法[8],拓扑优化算法[9],超卷积神经网络检测[10]及遗传算法等均可简化支撑设计,减少打印时间。此外,Fazzini Gianfranco[11],Barile Gianluca等人[12]提出的优化算法可以在熔融沉积过程中减少打印支撑结构。模型划分算法可以将模型划分为适应打印空间的锥体[13]。Jang S等人[14]将3D模型转换为分层深度图像的几何表示,识别有效支撑点来减少支撑结构。在寻找支撑结构时,常规方法是选取模型中外法向量朝下且与水平面夹角较小的面作为待支撑部位。现有的许多切片引擎(Cura,MeshMixer)均采用这种方法[4]。在添加支撑结构时,Strano G等人[15]提出在所需表面下方挤出稀疏密度的网格支撑结构,该方法支撑稳定性好但浪费材料。而临界角约束的树形支撑结构可以有效减少支撑材料,缩短打印时间[16]。
本文提出一种八棱柱状支撑结构,相比四棱柱状支撑结构该截面更趋近于圆形,从而减少打印过程中电机启停次数,节省时间和材料,降低成本。实验结果表明,本文提出的算法在保证模型稳定成型的基础上,能够有效节省打印时间和耗材。
1 FDM工艺的支撑结构
在设计FDM支撑结构时,为了提高支撑结构的合理性,需综合考虑以下要素:(1)支撑要保证足够的强度和稳定性:避免打印过程中发生变形。(2)支撑应尽可能少:多余的支撑需要额外的材料,加工时间和后处理任务。(3)支撑应易于剥离:若支撑与模型粘接过牢,后处理更加困难且降低模型表面质量[6]。
2 算法流程
首先系统读取STL文件;根据定义的临界角进行待支撑区域检测,检测后的区域向二维区域投影;根据投影区域范围进行等距采样;计算采样点在模型上的Z坐标,生成支撑结构;然后将支撑结构三角化并写入STL文件;最后输出包含支撑结构的STL文件。算法流程如图1。
3 STL文件读取
STL文件是由3D建模软件导出的一种将模型表面三角化的文件。它包含80字节的模型名称,4字节的三角面片数量,3×3×4字节的顶点和法向矢量信息,2字节的属性信息。每个STL文件大小为:84字节+50字节×三角面片数量。STL文件有两种格式:二进制格式和ASCⅡ格式。二进制格式文件尺寸较小,仅占ASCⅡ格式的1/6。本文选用的STL文件读取方式为二进制。
4 待支撑区域检测
基于STL文件,待支撑区域的三角面片分为悬吊面、悬吊边和悬吊点3种类型。
4.1 悬吊面的定义与识别
4.1.1定义临界角
模型在成型过程中是否需要添加支撑结构,取决于模型表面的倾斜角度。模型分层把模型在Z向上分成一系列具有一定厚度(0.05~0.30 mm)的薄层,分层破坏了模型的连续性,使之在侧向产生了台阶[17]。由于成型材料从喷嘴挤出时有一定的线宽,熔融材料的粘结特性使新成型的外轮廓比上一层更大,从而产生了自支撑倾斜角,即临界角。如图2所示,根据公式(1),设置层厚h越小,θ值越大,自支撑能力越强,超出这个范围的区域为待支撑区域。
(1)
4.1.2 提取悬吊面
根据模型中三角面片的外法向量与Z轴正向(重力的反方向)间的夹角关系来提取支撑区域[20]。其中Z轴正向向量为v(0,0,1),三角面片的外法向量为n,两者满足:
n·v=|n|·|v|cosθ
(2)
利用两者关系来计算夹角θ,此时得到的θ值为弧度值,再将弧度转化为角度。如图3所示,若θ大于一定的阈值,则该三角面片为待支撑三角面片。
4.1.3 待支撑区域投影
生成一个三维空间的支撑结构,空间采样需要大量的计算,会大大降低算法效率。所以将待支撑区域向工作平面投影,得到需要支撑的二维投影区域。将所有待支撑三角面片的顶点z坐标值设为0,如图4所示,得到待支撑区域的二维投影区域[18]。
4.1.4 投影区域采样
如果所有的待支撑三角面片都添加支撑,会造成支撑过多和移除困难。因此,对待支撑区域进行采样十分必要。待支撑区域投影到XOY平面,根据设定的x、y间距参数均匀分布支撑点,间距参数直接影响支撑密度、质量,并且x、y间距参数应大于设定的支撑体外接圆直径,这两个参数适当搭配,保证合理的支撑密度。
(1)等距采样法
对待支撑区域进行采样,若采样点太稀疏,不能保证模型成型;反之,支撑结构不易去除和浪费材料。所以采样点的数量应在合理范围内,既保证模型正常成型、又节省材料[19]。这里采用等距采样法,如图5所示。采样距离为d,X向间距Nx,Y向间距Ny分别为:
Nx=(Xmax-Xmin)/d
(3)
Ny=(Ymax-Ymin)/d
(4)
(2)重心法
若待支撑区域的二维投影区域非矩形,则进行采样后,需要判断采样点是否在投影区域内。本文采用重心法来判断一个点是否在三角形内,三角形的3个点在同一平面上,若选中其中1个点,其余两个点是相对该点的位移。如选择点A为起点,则点B相当于在AB方向移动一段距离得到,点C相当于在AC方向移动一段距离得到[20],如图6所示。
依次遍历待支撑区域,找到包含该二维点的三角面片,否则去掉该采样点,如图5中黑色点。然后建立三角形平面方程计算二维点在平面内的z值,得到支撑顶点的三维坐标(x,y,z)。
4.2 悬吊边的定义与识别
如图7所示,作平面使其经过线段AB的中点E,并与线段AB在XOY面的投影正交,该平面与两个面片的交线为GE和EH。悬吊边的特征如下:
(1)悬吊边与XOY平面夹角小于设定值。
(2)包含悬吊边的2个三角面片均为非待支撑面。
(3)包含悬吊边的2个三角面片的单位法矢量和向下。
4.3 悬吊点的定义与识别
悬吊点的特征如图8所示,图8a中的A为悬吊点,图8a中的A非悬吊点。悬吊点的特征如下:
(1)z坐标低于与其共线的其他点z坐标。
(2)包含该点的边不是悬吊边。
(3)包含该点的面不是悬吊面。
(4)悬吊点向下延伸,与其相交的首个三角面片的法矢量向上,或与模型表面交点个数为偶数[21]。
5 支撑结构生成
用Matlab生成八棱柱状支撑结构,根据XOY平面的采样点矩阵和支撑顶点三维坐标矩阵,分别以这两个矩阵中的点作为支撑结构的上下表面中点,每个点距中点的长度为a,构成八棱柱状支撑结构。
支撑结构三角化,根据公式(5)计算三角面片的法向量n;v1、v2是三角形两条边的基向量;上下表面顶点分别和中心点构造成三角形;侧面划分为2个三角形(ADB,BDC),根据右手定则,每个面的法向量需指向实体的外侧。如图9所示,八棱柱支撑的上方8个顶点可以依次确定为:
(x,y+a,z),(x+a×sin(π/4),y+a×sin(π/4),z),(x+a,y,z),(x+a×sin(π/4),y-a×sin(π/4),z),(x,y-a,z),(x-a×sin(π/4),y-a×sin(π/4),z),(x-a,y,z),(x-a×sin(π/4),y+a×sin(π/4),z)。同理下方8个顶点将上述坐标中z换成0。将得到的所有顶点坐标,法向量坐标写入STL文件中。
6 实验结果与分析
本文用SolidWorks制图并生成STL文件,Matlab开发待支撑区域的自动生成系统,可以快速找到三维模型的待支撑面,添加支撑结构。
(1)图10为悬吊边、悬吊点的模型图,对应检测结果和生成支撑后的模型。
(2)STL文件载入Inspire-S250型打印机进行实验。在相同的打印参数下,将3D打印机自带切片软件生成的支撑结构与本文算法生成的支撑结构进行对比,如图11所示。
(3)STL文件转成G代码后,载入Prusa-i3型打印机中进行实验。在相同的打印参数下,将Cura切片软件生成的支撑结构与本文算法生成的支撑结构进行对比,如图12所示。实验结果如图13所示。
实验结果分析:表1表明,本文支撑结构相比于Inspire-S250型打印机支撑结构,打印时间缩短了26.98%,材料节省了22.09%;表2表明,本文支撑结构相比于Cura切片软件的支撑结构,打印时间缩短了14.85%,材料节省了27.23%。
表1 打印结果对比
表2 打印结果对比
7 结语
(1)本文提出的八棱柱状支撑结构的设计方法,能够快速准确地生成支撑结构,节约模型打印时间和材料,为模型三维打印支撑结构提供了优化方案。
(2)本文提出的八棱柱状支撑结构是在四棱柱状支撑结构上的一种改进方法。支撑结构越趋近于圆形,越节省打印时间和耗材,但是支撑结构三角化更加复杂,写入STL文件数据量更加庞大;另外圆柱状支撑结构经过Cura切片后,会出现不兼容等情况。如图14所示。
(3)本文算法在采样时悬吊球采样了2行8列,斜面采样了2行3列,对于采样点采样情况,采样点越多,打印越稳定,打印时间越长,支撑结构越难拆除;采样点越少,稳定性下降,打印时间越短,支撑结构越容易拆除。下一步研究将进一步考虑采样点个数,采样间距问题,增强算法的适用性,使之适用于大多数模型。