层次多叉树映射布尔体廓后验误差的自适应层切
Adaptive slice method based on posterior error of hierarchical N-ary tree mapping Boolean volume contours
通讯作者:
收稿日期: 2023-09-1
基金资助: |
|
Received: 2023-09-1
Fund supported: | 浙江省重点研发计划项目(2021C01149);浙江省自然科学基金资助项目(LZ22E050008);宁波市自然科学基金资助项目(2021J150). |
作者简介 About authors
郭洪帅(1989—),男,博士生,从事数字化设计研究.orcid.org/0000-0002-4037-4002.E-mail:
在给定构建方向下,层切厚度影响熔融沉积成型零件表面的阶梯效应,层切轮廓及其层次关系是路径规划的研究基础. 为此,提出基于布尔体廓运算的自适应层切方法,在零件模型不同高度层切面上构建局部轮廓拓扑并计算内核域,根据内核点连线与轮廓环的交点,将轮廓环数据映射到一维坐标轴,基于拓扑映射判定轮廓环层次关系. 建立层次关系多叉树,以树高映射体廓特征变化的布尔运算,根据层变阈值设计自适应层厚,通过体廓后验误差估计任意层厚的体积误差,验证自适应层切的有效性. 实例打印及不同自适应层切方法对比结果表明,采用体廓后验误差计算的层切体积误差精度比牙尖高度法的更高;通过控制体廓特征部位的层厚来减小体积误差,有助于提高模型特征部位的表面成型精度.
关键词:
Under the given build orientation, slice thickness affects the step effect on the surface of the fused deposition modeling part, and slice contour with its hierarchical relationship is the research basis for path planning. An adaptive slice method based on the operation of Boolean volume contours was proposed. Local contour topology was constructed on different height slice-plane of a part model and the kernel region was calculated. Contour loops were mapped to one-dimensional axis according to the intersections of connection lines between kernel points with the contour loops. The hierarchy relationship of contour loops was determined by topological mapping. N-ary tree was built by the hierarchical relationship. The Boolean operation of volume contour with feature change was mapped by the height of the N-ary tree. Adaptive slice thickness was designed according to the slice variation threshold. Volume error under any slice thickness was estimated by the posterior error of volume contour. The effectiveness of adaptive slice was verified by the volume error. According to printing examples and the comparison of different adaptive slice methods, the calculation accuracy of slice volume error obtained by contour posterior error is higher than that obtained by the method of cusp height. Volume error is reduced by controlling slice thickness on the part of volume contour features, and surface forming accuracy on the region of model features is improved with the volume error reduced.
Keywords:
本文引用格式
郭洪帅, 张树有, 伊国栋, 刘晓健, 谭建荣.
GUO Hongshuai, ZHANG Shuyou, YI Guodong, LIU Xiaojian, TAN Jianrong.
层切算法根据层厚是否变化主要分为两类:均匀层厚和自适应层厚. 均匀层厚算法简单、使用广泛,自适应层厚算法制造的零件精度更高和构建时间更短[3-4]. 阶梯误差与模型构建方向和层厚直接相关,在构建方向确定的情况下,自适应层厚算法可以最大化减小模型在特征变化部位的层切厚度,减小阶梯误差对表面打印精度的影响,提高零件局部特征域的打印精度,尤其是对于复杂零件的制造,自适应层厚算法相比均匀层厚算法更具优势[5]. 自适应层厚算法通过分析模型的特征变化确定层厚变化部位[6]. 现有方法主要通过最小厚度切割或检查尖锐特征点获取模型几何形状变化区域,通过特定切面上的几何形状来评估局部变化偏差,当偏差小于设定的阈值时执行层厚设计策略. 自适应层厚算法需要大量的切面与模型的求交运算,计算代价非常高,当相邻切片之间存在复杂几何形状时,评估误差较大[7].
针对不同层厚对零件模型表面体积误差的影响,本研究提出层次多叉树映射布尔体廓后验误差的自适应层切方法. 对零件模型重建拓扑后提取任意层轮廓环并计算内核域,通过拓扑映射判断轮廓环层次关系,根据轮廓环层次关系多叉树映射体廓布尔运算,设定层变阈值计算自适应层厚,通过体廓后验误差验证所提算法的有效性.
1. 轮廓环层次关系计算
1.1. 任意层闭合轮廓环集合提取
在原始网格模型中,任意面间的邻接关系未知,建立零件模型的Rg-Tree[10]来提取指定层高的邻接面集:给定任意层高z,所有与XOY平行的切平面Pz存在交点的面片定义为当前层的层切面,根据Rg-Tree中模型的拓扑关系依次匹配层切面中所有面邻接关系,进而确定当前层轮廓. 根据层厚计算轮廓层高zi,解析任意面fi的顶点及其法向,基于顶点在Z方向的最小值zmin、最大值zmax及层厚u确定fi所属的层数ni,将fi存入列表. 一般情况下,zmin、zmax并不恰好等于层高zi,即fi可能落在多个层切面内,fi所属的分层一般为[nmin]~[nmax],其中nmin= zmin/u,nmax = zmax/u,[n]表示不小于n的最小整数.
对于2D闭合可定向的二维流形M,不存在退化面并且没有自交或伪接触,特别地,任意面间的交集要么是空,要么是两者的一条边或者一个顶点,因此Pz与M相交的面必是首尾相接的封闭面集. 对于任意层封闭面集,基于Rg-Tree,从任意面fi依次匹配其邻接面直至返回至fi,得到封闭面集Fi. 设第i层数据共有m组轮廓面集即F={F1,···, Fm},对F中面添加标记,将fi存储到Fi,基于Rg-Tree查询fi的未标记邻接面片fadj(同一层邻接面不可能多于3个),将fadj存入Fi完成一个轮廓的邻接匹配;若闭合轮廓匹配完成后F中还有未标记的面片,则匹配第2个闭合轮廓直至所有未标记面片标记为空.
根据投影及相似关系,计算Pz与F的交点,并按照各面的邻接顺序排列所有交点,将F={F1,···, Fm}转换为轮廓面集C={C1,···, Cm}. 设Pz在Z向的坐标为zi,将fi投影至XOY平面,利用相似关系计算交点在X及Y方向的坐标值集合Ii ={(x1, y1, zi), (x2, y2, zi),···, (xs, ys, zi)}. 进一步确定交点的先后顺序,任意层高zi下,C中交点按照拓扑邻接关系连接为首尾相连的多边形. 考虑任意Ci的集合Fi = {f1, f2 ,···, fn},若Pz穿过F,则s≤n(若穿过fi顶点,则s < n);如图1(a)所示,轮廓在没有穿过面片顶点的情况下,n = s. 无论逆时针或者顺时针连接交点建立多边形,通过第2个面片的交点顺序唯一确定,否则多边形轮廓因交点缺失而无法有效闭合. 一般情况下,层厚的数量级很小,zi不会穿过面片顶点,本研究默认Fi同Pz存在2个交点(相邻面片仅有1个交点重合). 如图1(b)所示,以任意面片集合Fi为例,假设f1的交点为(v1, v2),f2的交点为待定. 如果插入v1、v2(其中f1的2个点插入顺序任意),第2个面片的插入点可能会存在(a1,a2)或者(a2,a1),(b1,b2)或者(b2,b1)2种情况,插入顺序正确是偶然情况,比如插入点b,但是有可能插入错误的a,无论是哪种情况只能是其中之一.
图 1
如图2所示为插入点分析图,插入点顺序判断规则如下. 1) |
图 2
1.2. 基于拓扑映射的轮廓环层次关系计算
层次关系判断方法主要有射线法和坐标极值法[11]. 射线法通过作平行于坐标轴的射线判断包含关系,需要大量的辅助射线并控制射线的间距;坐标极值法效率高,但会出现凹点轮廓环误判. 本研究提出基于拓扑映射确定轮廓环层次关系判别算法. 通过内核域计算,对内核点连线同轮廓的交点作拓扑映射,根据映射轴点的极值排序确定轮廓环层次关系,实现对应轮廓层次关系的有效判断. 相比于射线法,所提方法只进行1次拓扑映射即可判断层次关系,不仅减少了线段与轮廓环求交次数,还降低了算法的计算量.
给定任意多边形P,若P内存在点o,使得对于P内的任意点p的线段op完全位于P内,则点o的轨迹为P的内核域[12]. 如图3所示,阴影部分即为P的内核域K,将K中的任意点k作为判断轮廓环层次关系的辅助点,以k为起始点的射线与P有且仅有一个交点. K由P的边线裁切而成,K必定为凸多边形. 依次扫描多边形P的顶点构造凸多边形序列{K1,K2, ···, Kn-1},其中Kn-1=K(P)为所求内核域[12]. 根据P在坐标轴上的最大值和最小值初始化矩形内核域K,计算P所有顶点的凹凸性,以当前点及其后继点所构成直线l判断当前点的前驱点Ppre在该直线的左边或右边. 通过l将P分为2个部分,选择1个部分作为临时内核处理并下个点:若当前点为凸点,则选择的核与Ppre方向相同;若当前点为凹点,则选择的核与Ppre方向相反,更新临时核至所有点计算完毕并输出内核域K(P)顶点集合. 对于凹点过多的轮廓环,以其中凹点计算辅助内核点.
图 3
对于存在厚度的实体模型,任意2个轮廓环存在2种层次关系:包含或相离. 如图4(a)所示,L1、L2、L3均为有序交点连接的复杂多边形轮廓环,其中L1包含L2、L3,L2、L3相离. 以L1、L2为例,分析任意2个轮廓环层次关系. 分别计算L1、L2,内核点I1、I2及线段
图 4
图 4
轮廓环层次关系(
Fig.4
Hierarchical relationship of contour loops (
图 5
1.3. 多实体的轮廓环层次关系计算
对所有的轮廓环分别计算最小外接矩形R,以面积最大矩形包围的轮廓环LR作为基环. 无论是单实体还是多实体模型,基环一定是外轮廓环. 单实体基环只有一个,多实体基环个数则由实体个数决定,但LR必定是其中任意实体的基环. 如图5(a)所示为单实体实例,所有的轮廓环只在一个最大的轮廓环L1内部(均在基环内部). 假定单实体内包含n个轮廓环L1~Ln,L1~Ln的层次关系按算法 1计算.
算法 1 基于拓扑映射的轮廓环层次关系判断
输入:轮廓环L1~Ln
输出:L1~Ln层次关系集合H
设L1作为基环并将L1标记为H-1;
计算L2~Ln的最小外接矩形R1~Rn及其面积;
计算L2~Ln的任意内核点I2~In;
For
For
判断Li、Lj的层次关系;
If Li包含Lj
标记Li为H-i;
If Lj包含Li
标记Li、Lj均为H-i;
End For
End For
Return 层次关系集合H
每个实体分别对应1个基环,根据基环数目可以判断实体个数. 对于单实体,当i=1时,实际上是对L1与L2~Ln环作层次关系判断;若存在与L1相离的环,则当前层切面是多实体轮廓环. 如图6所示为多实体层切面的轮廓环L={L1, L2, L3,···, Ln},假定L1为基环,从L中剔除L1及其内部轮廓环后,依次判断L中所有轮廓环同L1的位置关系:凡是与L1相离的LR为第2个实体的基环,从L中剔除LR(假设为L2)及其内部轮廓环,L中与L1~L2均相离的LR为第3个实体的基环,依次类推. 若存在m(m > 1)个基环,则将多实体分解为m个单实体,按照单实体判断方式(算法 1)对m个基环内所有轮廓环层次关系进行判定.
图 6
图 7
图 7 轮廓环层次关系及环向判断流程
Fig.7 Judgment process of hierarchical relationship and direction for contour loops
2. 层次关系多叉树构建
为了表达各层切面内所有轮廓环的层次关系,基于轮廓环层次关系矩阵构建多叉(N-ary)树管理轮廓环层次关系,实现轮廓环层次化存储、查询与数据转换. 多叉树中每个结点是独立存储的数据结构,记录1个轮廓环(包括有序顶点集合、环向、索引key值、布尔符号、面积等信息)及对其父、子结点的引用. 其中第1层只有1个结点(即根结点Root),从第2层开始,每个子结点包含1个或者多个子结点,根据对轮廓环层次关系及环向的研究需要,层次多叉树的成员属性及其结点数据结构的定义如图8所示.
图 8
对于层次关系矩阵ML,元素L12=0表示L1与L2相离,L12=1表示L1包含L2,L12 = −1表示L2包含L1. 根结点所在层为0,以每一层切面轮廓数据为基本单位,Loop的环号为结点的索引值,层高h用于确定布尔运算符. 根据ML依次插入各个Loop,若h为奇数,则Loop布尔符号为正;若为偶数,则布尔符号为负. N-ary树构建完毕后所有Loop的包含关系与之映射关系也唯一确定. 任意Loop的插入规则:对于待插入环Li,优先处理存在包含关系的Loop,若Li与已插入的Loop不存在包含关系,则Li必为根结点的子结点;若存在包含关系(包括多层嵌套包含关系),则在N-ary树中必然属于同一个分支. 进一步,已插入结点的Loop,对存在包含关系的Loop结点进行判断,多层嵌套包含(单层也适用)关系下,Li必然存在于不存在子结点的结点Lc下,通过该条件可以判定插入位置Lc. 确定插入位置后仍然需要判断Li与插入结点处的Lc是包含还是被包含关系,利用多叉树的子函数add和insert_node插入Li,即如果是包含关系,Li作为子结点用add函数,如果是被包含关系,Li作为Lc父结点用insert_node函数插入,须注意Loop下标的对应关系及其插入位置.
层次关系树构建算法的核心是新结点的插入位置判断. 根据层次关系建立对应层高父子结点的映射关系,N-ary树的构建如算法 2所示. 算法中,函数T.add_node()表示以当前结点cur_node作为父结点插入子结点node_i,函数T.insert_node()表示以当前结点cur_node作为子结点插入父结点node_i. N-ary树中,同一层次Loop方向相同,存在层次关系的2个Loop的方向必定相反,如果基环的环向给定,则其他轮廓环向随之确定.
算法 2 基于轮廓环层次关系构建多叉树
输入:轮廓C={C1,C2,···,Cm},层次关系矩阵ML=Matrix
输出:N-ary 树T
对C建立按面积大小排列的Node列表N
初始化N-ary 树T,T
For i
node_i = N[i],k = node_i.key−1
相离列表list = [],层次关系列表list_non = []
For node in T do
j = node.key−1
If j<k
loc = Matrix[j][k]
Else
loc = −Matrix[k][j]
If loc == 0
list
Else
list_non
End For
If len(list_0) == len(list_non_0)
T.add_node(node_i.key, 0, node_i)
Else
For node in list_non do
If node.children == None
cur_node = node, j = cur_node−1
If j<k
loc = Matrix[j][k]
Else
loc = Matrix[k][j]
If loc == 1
T.add_node(node_i.key,cur_node.key,node_i)
If loc == −1
T.insert_node(node_i.key,cur_node.key,node_i)
End For
End For
Return T
3. 布尔体廓后验误差估计的自适应层切
3.1. 布尔体廓关联自适应层厚
将轮廓环层次关系映射为树高,作为层厚变化系数实现自适应层切. 对模型M进行均匀层切预处理,沿构建方向d以层厚u均匀层切,假设在d下M的最大高度为hmax,最小高度为hmin,则打印层数LN=(hmax−hmin)/u,令mi为hi下轮廓环集合Li={
式中:
式中:
确定模型M在层高hi处的细节特征变化情况,若体廓变化量超过一定的阈值,则该部位可能为需要减小层厚u的位置. 即便A(Li)与A(Li+1)相近,但
作为判断打印层细节特征的参考量,Len(Loop)表示轮廓环长. 环数mi作为每层判断实体子特征数,定义环数变化量为
对于截面存在多孔特征的复连通区域的模型,通过参数
式中:
3.2. 体廓后验误差估计
基于牙尖高度(cusp height)的体积误差计算方法[16],无法计算存在轮廓环层次关系的任意层体积误差. 为了精确计算自适应层切的逐层体积误差,提出体廓后验误差估计方法. 后验误差是模型层切后,在轮廓环层次关系已知的情况下求得模型的层切体积误差,而牙尖高度法根据层厚直接计算(不需要层切数据)层切体积误差.
基于N-ary树对轮廓环层次关系的映射关系,计算当前层的切片的体廓作为实际体积Vr,如图9所示. 根据微积分基本定理,只要
图 9
进一步减小层厚(u<0.01 mm),将微分后的体廓之和近似为该层的理论体积Vc,定义当前层的体积误差Ve为
式中:Vr由式(1)计算得到. 假设当前层厚为u,若减小层厚为w,则将理论体积Vc近似表示为
式中:切片体积vci由式(1)计算得到,[u/w]表示不大于[u/w]的最大整数. 若对整个模型按照w层切,按照式(10)计算任意多连通域的复杂模型体积. 通过定义体廓误差计算模型特征变化部位的局部体积误差,验证所提方法的有效性. 与牙尖高度法相比,采用体廓后验误差计算方法,可以更加精确地计算每一层体积误差,有助于验证在体廓特征部位的层切结果,使特征部位的层厚更合理且体积误差更小.
如图10所示为基于体廓后验误差的自适应层切设计流程. 通过预层切及Rg-Tree的拓扑关系,确定各层切面内所有轮廓环的层次关系,根据N-ary树进行层次关系的映射转换,通过布尔运算计算当前层轮廓环数据的自适应层变系数,得到模型的自适应层切高度,通过控制层厚阈值,基于布尔体廓计算各层的后验体积误差,验证所提自适应层切方法的有效性.
图 10
4. 实例验证
采用如图11所示的飞行器传感器支架模型测试轮廓环层次关系计算、层次关系多叉树构建、自适应层切及体廓后验误差计算等方法. 该模型包含多孔、多分支子特征,对轮廓环层次关系的测试具有很强的针对性,曲面特征适用于自适应层切方法的验证. 测试环境为Ubuntu 20.04,实现语言为Python 3.8.10,层切模型可视化及渲染采用VTK 9.2.2实现.
图 11
4.1. 任意层切面内轮廓环层次关系及环向计算
对网络模型构建Rg-Tree,选择层切面轮廓最为复杂的构建方向测试模型各个层切面内轮廓环的层次关系. 取构建方向d为(−1, 0, 0),层厚u=8.901 mm,进行轮廓环层次关系测试. 由Rg-Tree提取网格任意层的拓扑邻接面片,如图12(a)所示. 其中第7层切片共277个邻接面片,4个轮廓的面片依次为100-55-59-63,切片高度x7 = 9.394 mm;第10层切片共438个邻接面片,8个轮廓的面片依次为42-39-68-73-69-66-41-40,切片高度为x10=36.098 mm.
图 12
图 13
图 14
图 15
图 15 层切可视化及各层轮廓环数据
Fig.15 Slice visualization and contour loop data of each layer
4.2. 层次多叉树映射体廓布尔运算
对第7层和第10层的所有轮廓环计算层次关系并计算环向,如图16所示. 第7层共4个轮廓环,L1~L4均为基环且互为相离关系,如图16(a)所示. 第10层共8个轮廓环,L3、L4、L5、L6为基环;且L3包含L1,L4包含L7,L5包含L8,L6包含L2,如图16(b)所示. 第10层8个Loop输出层次关系如表1所示. 表中,0表示两个轮廓环是相离关系,1表示包含关系,−1表示被包含关系,+表示正向(逆时针),−表示反向(顺时针),=表示自身轮廓环. 由轮廓环层次关系,构建第10层轮廓N-ary树,将8个轮廓根据面积大小顺序依次插入树中,映射层次关系为树的高度,通过广度优先遍历所有结点,以P、C、D、A、L分别表示父结点、子结点、环向、面积、周长,输出各结点如表2所示. 10层N-ary 树结构如图17所示,各层的Loop结点序号表示按面积倒序插入.
图 16
表 1 第10层轮廓环层次关系
Tab.1
轮廓索引 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
1− | = | 0 | −1 | 0 | 0 | 0 | 0 | 0 |
2− | 0 | = | 0 | 0 | 0 | −1 | 0 | 0 |
3+ | 1 | 0 | = | 0 | 0 | 0 | 0 | 0 |
4− | 0 | 0 | 0 | = | 0 | 0 | −1 | 0 |
5− | 0 | 0 | 0 | 0 | = | 0 | 0 | 1 |
6+ | 0 | 1 | 0 | 0 | 0 | = | 0 | 0 |
7+ | 0 | 0 | 0 | 1 | 0 | 0 | = | 0 |
8+ | 0 | 0 | 0 | 0 | −1 | 0 | 0 | = |
表 2 第10层轮廓构建层次多叉树结点信息
Tab.2
Key | h | P | C | D | A/mm2 | L/mm |
0 | 0 | 0 | 4-6-3-5 | None | 0 | 0 |
4 | 1 | 0 | 7 | + | 154.193 | 62.303 |
7 | 2 | 4 | None | − | 31.525 | 52.195 |
6 | 1 | 0 | 2 | − | 129.891 | 64.999 |
2 | 2 | 6 | None | + | 15.407 | 44.937 |
3 | 1 | 0 | 1 | + | 75.721 | 67.691 |
1 | 2 | 3 | None | + | 18.525 | 15.512 |
5 | 1 | 0 | 8 | − | 59.897 | 77.513 |
8 | 2 | 5 | None | − | 23.698 | 42.004 |
图 17
图 17 轮廓环层次关系的层次多叉树
Fig.17 Hierarchical N-ary tree based on hierarchical relationship of contour loops
4.3. 体廓后验误差的自适应层切及打印
通过层次多叉树,以层变系数
图 18
如图19所示,选取权值
图 19
图 19 不同阈值的自适应层切与均匀层切对比
Fig.19 Comparison between adaptive slice and uniform slice by different thresholds
根据所提出的体廓误差计算方法及式(9),分别计算不同阈值下各层体积误差,结果对比如图20所示. 图中,h为层高. 当
图 20
图 20 不同阈值的体廓后验误差对比
Fig.20 Comparison of posterior error based on volume contour by different thresholds
在局部特征位置区域体积误差对比中,当阈值
图 21
图 21 不同方法体积误差收敛验证对比
Fig.21 Volume error convergence verification comparison of different methods
当采用更小的层厚(u=0.0178 mm),各层体积误差如图22所示,模型的体积误差为6.348 mm3. 当u<0.001 mm时,可以准确计算模型的体积;取u=0.001 mm,采用所提出方法计算模型各层切片的体积之和(模型体积)为47 831.829 mm3. 作为对比,采用SolidWorks和开源Trimesh方法计算模型体积,分别为47 865.134、47 986.257 mm3. 采用的层厚越小,计算精度越高,所提方法在0.001 mm即可达到SolidWorks、Trimesh的计算精度. 因此,采用式(9)通过体廓估算每层体积误差是有效的.
图 22
图 22 基于布尔体廓计算5000层体积误差
Fig.22 Volume error of 5000 layers calculated based on Boolean volume contour
采用3组自适应层厚策略,对比相对体积误差法[17]、B样条插值法[18]中的自适应层切算法和所提算法的打印实例,打印结果如图23所示. 图中,模型a、b、c为相对体积误差法[17]的打印实例,模型d、e、f为B样条插值法[18]的打印实例,模型g、h、j为所提算法的打印实例. 分别对图23中各模型的3个区域进行局部细节放大,初始层厚均设置为0.2 mm,对比结果如图24所示. 在不同层厚范围下,采用相对体积误差法、B样条插值法以及所提算法对图24中的模型进行层切,对比不同算法运行的层切时间ts,结果如表3所示. 在层厚范围变化更大的情况下(0.50u~2.00u),所提算法在判断轮廓环层次关系方面更具优势,算法程序运行最少;随着层厚进一步减小(0.25u~0.80u),当构建轮廓环层次关系多叉树时,由于插入大量数据结点导致效率降低,虽然运行时间有所提高,但跟其他2种算法相差不大.
图 23
图 24
图 24 不同自适应层厚局部放大细节对比结果
Fig.24 Comparison results of local amplification details with different adaptive slice thicknesses
表 3 不同层切方法的运行时间对比
Tab.3
层切方法 | ts/s | ||
t = 0.50u~2.00u | t = 0.50u~1.00u | t = 0.25u~0.80u | |
相对体积误差 | 18.341 | 25.294 | 30.142 |
B样条插值 | 20.219 | 27.831 | 31.752 |
本研究 | 13.482 | 24.295 | 32.328 |
根据体廓误差计算方法,在层厚为0.2 mm的情况下,基于不同自适应层厚系数采用均匀层切、相对体积误差法、B样条插值法以及所提算法对模型层切,分别对比图24中3个采样区域(I、II、III)的体积误差、平均误差、模型的整体体积误差Vew以及总体层数,结果如表4所示. 可以看出,所提算法在体积误差不增加的情况下,总体层数显著减少;通过自适应减小特征部位层厚,体积误差进一步减小(图24(c));如果层厚系数设置过大导致层数过少,会增大局部区域体积误差以及整体体积误差(图24(a)). 通过SopTop金相电镜MX-6R对图24(c)中f-I、f-II、f-III、i-I、i-II、i-III测量表面微观形貌特征如图25所示. 可以看出,所提算法在实现有效自适应层切的情况下,I、II特征部位处的成型精度更高.
表 4 不同方法的自适应层切结果实例对比
Tab.4
t/mm | 层切方法 | Ve/mm3 | Vew/mm3 | LN | |||
I | III | IIII | |||||
u = 0.2 | 均匀层切 | 1.224 | 0.993 | 1.142 | 1.120 | 10.841 | 445 |
0.50u~ 2.00u | 相对体积误差 | 2.213 | 1.504 | 1.616 | 1.778 | 11.223 | 382 |
B样条插值 | 2.058 | 1.672 | 1.791 | 1.840 | 11.349 | 395 | |
本研究 | 1.953 | 1.396 | 1.713 | 1.687 | 11.310 | 376 | |
0.50u~ 1.00u | 相对体积误差 | 1.739 | 1.104 | 1.433 | 1.425 | 11.104 | 398 |
B样条插值 | 1.674 | 1.015 | 1.339 | 1.343 | 11.237 | 409 | |
本研究 | 1.421 | 1.047 | 1.257 | 1.242 | 10.972 | 391 | |
0.25u~ 0.80u | 相对体积误差 | 1.097 | 0.839 | 0.979 | 0.972 | 9.641 | 503 |
B样条插值 | 1.106 | 0.815 | 0.916 | 0.946 | 9.329 | 512 | |
本研究 | 1.037 | 0.872 | 0.984 | 0.964 | 9.785 | 483 |
图 25
图 25 金相电镜实验测量微观形貌特征
Fig.25 Experiments measure of microscopic morphological features by metallographic electron microscopy
5. 结 语
针对构建方向确定后的层切算法进行研究,提出层次多叉树映射布尔体廓后验误差的自适应层切方法,在整体模型体积误差不增大的情况下减小了体廓特征部位的体积误差,提高了表面成型精度. 1) 基于Rg-Tree局部拓扑轮廓重建方法,获取任意层切片中的闭合轮廓环,采用拓扑映射方法将轮廓环映射至一维坐标轴,根据极值排序对轮廓环层次关系进行有效判断. 2) 构建层次关系多叉树,将树高映射体廓的布尔运算,根据相邻层的层变系数与层厚阈值的关系计算自适应层高,减小了体廓特征部位的体积误差,提高了表面成型精度. 3) 提出体廓后验误差估计方法,相比于基于牙尖高度体积误差计算方法,所提方法对层厚不敏感,计算的体积误差精度更高. 复杂模型的轮廓环层次关系判断会增加多叉树的构建时间,下一步将采用GPU加速方法,实现轮廓环关系判断的并行运算,提高算法运行效率.
参考文献
Variable-geometry nozzle for surface quality enhancement in 3D concrete printing
[J]. ,DOI:10.1016/j.addma.2020.101638 [本文引用: 1]
Additive manufacturing: challenges, trends, and applications
[J]. ,
Slicing procedures for layered manufacturing techniques
[J]. ,DOI:10.1016/0010-4485(94)90032-9 [本文引用: 1]
An accurate slicing procedure for layered manufacturing
[J]. ,DOI:10.1016/0010-4485(95)00083-6 [本文引用: 1]
Adaptive slicing based on efficient profile analysis
[J]. ,DOI:10.1016/j.cad.2018.09.006 [本文引用: 1]
Adaptive direct slicing of the solid model for rapid prototyping
[J]. ,DOI:10.1080/002075400189581 [本文引用: 1]
Direct slicing and G-code contour for rapid prototyping machine of UV resin spray using PowerSOLUTION macro commands
[J]. ,DOI:10.1007/s00170-003-1575-4 [本文引用: 1]
Shape and performance controlled advanced design for additive manufacturing: a review of slicing and path planning
[J]. ,DOI:10.1115/1.4045055 [本文引用: 1]
An optimal algorithm for 3D triangle mesh slicing
[J]. ,DOI:10.1016/j.cad.2017.07.001 [本文引用: 1]
Multi-orientation optimization of complex parts based on model segmentation in additive manufacturing
[J]. ,DOI:10.1007/s12206-022-1231-2 [本文引用: 1]
Contour generation algorithm for projection mask stereolithography 3D printing process
[J]. ,DOI:10.1088/1757-899X/469/1/012006 [本文引用: 1]
An optimal algorithm for finding the kernel of a polygon
[J]. ,DOI:10.1145/322139.322142 [本文引用: 2]
基于拓扑映射的视图轮廓信息自动获取算法
[J]. ,
The algorithm of automatic acquisition of view outline information based on topological mapping
[J]. ,
A new approach to z-level contour machining of triangulated surface models using fillet endmills
[J]. ,DOI:10.1016/j.cad.2004.10.005 [本文引用: 1]
Build orientation optimization based on weighted analysis of local surface region curvature
[J]. ,
Volumetric adaptive slicing of manifold mesh for rapid prototyping based on relative volume error
[J]. ,
/
〈 | 〉 |