一种基于阶梯斜高和体积误差的3D打印自适应分层方法

文档序号:28052338发布日期:2021-12-17 21:25阅读:171来源:国知局
一种基于阶梯斜高和体积误差的3D打印自适应分层方法
一种基于阶梯斜高和体积误差的3d打印自适应分层方法
技术领域
1.本发明属于3d打印技术领域,具体涉及一种基于阶梯斜高和体积误差的3d打印自适应分层方法。


背景技术:

2.3d打印是基于零件模型采用逐层堆积方式完成零件的加工。采用3d打印加工零件时,其无需考虑其复杂性,也无需设计和制造加工用专用模具或刀具,因此3d打印已在各行各业中得到了广泛应用,特别适用于单件生产。
3.3d打印是采用逐层堆积方式完成模型的成型,所以需要对被打印零件的模型进行分层处理。3d打印的关键是在保证零件打印精度的条件下提高其打印速度。打印速度与打印精度相互制约,因此,如何根据模型的特征自动调节打印厚度以兼顾打印精度和打印效率是3d打印研究的重点问题之一。由于自适应分层算法能根据模型的特征使用不同的打印厚度,可以做到兼顾模型打印精度的同时提高打印效率,因此,对3d打印的研究中,分层算法的研究主要集中在自适应分层算法的改进上。
4.目前,常用的自适应分层算法中,基于阶梯斜高的自适应分层算法分层依据片面,不能完全体现模型的表面特征;基于模型曲面曲率的自适应分层算法适用于模型表面可参数化的情况,当模型表面较复杂时无法使用此方法;基于相邻分层面面积变化率的自适应分层算法容易因模型结构产生突变而产生误判;基于竖直切分得到的轮廓参考线的自适应分层算法,对一些回转体有较强的适应性,但对表面不规则的复杂模型无法保证其打印精度。


技术实现要素:

5.本发明的目的是提供一种基于阶梯斜高和体积误差的3d打印自适应分层方法,依据模型的打印方向即模型成型方向(此处定义为z向)上三角形面片的高度差,并结合体积误差与阶梯斜高,实时调整打印厚度以提高零件的打印效率和精度。
6.本发明所采用的技术方案是,一种基于阶梯斜高和体积误差的3d打印自适应分层方法,具体按照以下步骤实施:
7.步骤1,定义允许阶梯斜高c
max
、允许体积误差δv
max
、最小打印厚度δh
min
和最大打印厚度δh
max
;设置模型总高h和首层坐标z0,当前打印层i=0;
8.步骤2,求当前分层面的最小高度差δh
min
和最大高度差δh
max

9.步骤3、根据δh
min
、δh
max
以及δh
min
和δh
max
,选当前打印厚度δh
i
,并根据条件选择相应的操作;当δh
min
≤δh
min
或δh
min
≥δh
max
,则取δh
i
=δh
min
,跳转到步骤8;当δh
max
≤δh
min
,则取δh
i
=δh
max
,进入步骤4;否则,取δh
i
=min{δh
max
,δh
max
},进入步骤4;
10.步骤4,计算以δh
i
为打印厚度进行打印时所产生的最大体积误差δv
max

11.步骤5,比较最大体积误差δv
max
与允许体积误差δv
max
的关系,若δv
max
<δv
max
,则跳转至步骤8;否则计算最大阶梯斜高c
max

12.步骤6,判断最大阶梯斜高c
max
与允许阶梯斜高c
max
的关系;若c
max
<c
max
,则跳转至步骤8,反之,跳转至步骤7;
13.步骤7,对δh
i
层厚进行切分;
14.步骤8:以δh
i
为打印层厚打印前,以分层面z=z
i+1
(z
i+1
=z
i
+δh
i
)来切分模型,提取模型轮廓并以此轮廓对零件进行打印。
15.本发明的特点还在于,
16.步骤2中,具体为:
17.设当前分层面为第i层,沿打印方向即z向的层高为z
i
;与第i分层面即z=z
i
平面相交的三角形面片

abc中,设第j个三角形面片为s
j
,其三个顶点的坐标分别为(x
j1
,y
j1
,z
j1
)、(x
j2
,y
j2
,z
j2
)、(x
j3
,y
j3
,z
j3
),计算三角形面片s
j
最高顶点的z坐标z
i,j,max
和最低顶点的z坐标z
i,j,min
,如式(1)和式(2)所示;
18.z
i,j,max
=max{z
j1
,z
j2
,z
j3
}
ꢀꢀ
(1);
19.z
i,j,min
=min{z
j1
,z
j2
,z
j3
}
ꢀꢀ
(2);
20.且z
i,j,min
≤z
i
≤z
i,j,max
,则三角形面片s
j
的高度差δh
ij
,如式(3)所示;
21.δh
ij
=z
i,j,max

z
i
ꢀꢀ
(3);
22.求与当前分层面z=z
i
平面相交的所有三角形面片s
j
高度差δh
ij
的最小值和最大值即最小高度差δh
min
和最大高度差δh
max
,如式(4)和式(5)所示;
23.δh
min
=min{δh
ij
}
ꢀꢀ
(4);
24.δh
max
=max{δh
ij
}
ꢀꢀ
(5);
25.式中,j=1,
……
,m,m是与第i分层面即z=z
i
平面相交的三角形面片的个数。
26.步骤4中,具体为:
27.步骤4.1,根据三角形面片s
j
的三顶点坐标(x
j1
,y
j1
,z
j1
)、(x
j2
,y
j2
,z
j2
)、(x
j3
,y
j3
,z
j3
)求得其法矢量n
j
;已知打印方向即模型成型方向为d,则n
j
与d间的夹角θ
j
满足式(6);
[0028][0029]
步骤4.2,计算以δh
i
为打印厚度打印时第i和第i+1分层面即z=z
i
和z=z
i+1
平面间三角形面片的台阶效应最大时产生的最大体积误差δv
max

[0030]
步骤4.2中,具体如下:
[0031]
三角形面片s
j
与以δh
i
为打印厚度打印形成的轮廓间产生了打印误差即体积误差δv
ij
,δv
ij
采用式(7)求得:
[0032]
δv
ij
=s
ij
l
ij
ꢀꢀ
(7);
[0033]
式中,s
ij
表示因打印厚度δh
i
导致的实际打印产生的轮廓与模型的理想轮廓在分层面z=z
i
和z=z
i+1
平面间的三角形面积;l
ij
表示分层面z=z
i
和z=z
i+1
平面与模型轮廓上三角形面片s
j
相交所得梯形或三角形的中线长度;s
ij
的计算如式(8)所示:
[0034][0035]
将式(6)、(8)代入(7)中可得式(9):
[0036][0037]
当前打印层产生的最大体积误差δv
max
为:δv
max
=max{δv
ij
};
[0038]
当θ
j
的取值范围为θ
j
∈[π/2+2kπ,π+2kπ]时,体积误差取绝对值;当θ
j
=2kπ时,体积误差为零;
[0039]
以打印厚度δh
i
进行3d打印时,当前分层面z=z
i
和打印后形成的分层面z=z
i+1
与三角形面片s
j
的相交情况有12种,分三种情况求解l
ij

[0040]
第一种情况:两相邻分层面z=z
i
和z=z
i+1
平面同时与三角形面片两边均相交且相邻分层面间无三角形面片顶点,分层面z=z
i
和z=z
i+1
平面与三角形面片s
j
各边的交点坐标为p
j1
(x
pj1
,y
pj1
,z
pj1
)、p
j2
(x
pj2
,y
pj2
,z
pj2
)、o
j1
(x
oj1
,y
oj1
,z
oj1
)、o
j2
(x
oj2
,y
oj2
,z
oj2
),由此可得线段p
j1
p
j2
和o
j1
o
j2
,如式(10)及式(11)所示;
[0041][0042][0043]
l
ij
的长度如式(12)所示:
[0044][0045]
其中,p
j1
(x
pj1
,y
pj1
,z
pj1
)、p
j2
(x
pj2
,y
pj2
,z
pj2
)、o
j1
(x
oj1
,y
oj1
,z
oj1
)、o
j2
(x
oj2
,y
oj2
,z
oj2
)可按以下方法求得:
[0046]
三角形面片s
j
三个顶点的坐标分别为a(x1,y1,z1)、b(x2,y2,z2)和c(x3,y3,z3),过顶点a(x1,y1,z1)和b(x2,y2,z2)的直线方程如式(13)所示:
[0047][0048]
过顶点a(x1,y1,z1)和c(x3,y3,z3)的直线方程如式(14)所示::
[0049][0050]
点p
j1
在直线ab上,点p
j2
在直线ac上,同时,p
j1
和p
j2
在第i分层面z=z
i
上,即得z=z
i
。将z=z
i
分别代入式(13)、(14)可得交点坐标分别如式(15)及式(16)所示;
[0051]
p
j1
(x
pj1
,y
pj1
,z
pj1
):
[0052]
p
j2
(x
pj2
,y
pj2
,z
pj2
):
[0053]
点o
j1
在直线ab上,点o
j2
在直线ac上,同时也在第i+1分层面即z=z
i+1
平面上,即得z=z
i+1
;将z=z
i+1
分别代入式(13)、(14)可得交点坐标分别如式(17)及式(18)所示;
[0054]
o
j1
(x
oj1
,y
oj1
,z
oj1
):
[0055]
o
j2
(x
oj2
,y
oj2
,z
oj2
):
[0056]
第二种情况:两相邻分层面即z=z
i
和z=z
i+1
平面同时与三角形面片两边相交且相邻分层面间有三角形面片的顶点,分层面z=z
i+1
平面与三角形面片s
j
的顶点a(x1,y1,z1)重合,o
j1
(x
oj1
,y
oj1
,z
oj1
)=o
j2
(x
oj2
,y
oj2
,z
oj2
)=(x1,y1,z1);分层面即z=z
i
和z=z
i+1
平面分别与三角形面片s
j
的顶点a(x2,y2,z2)和b(x2,y2,z2)重合,p
j1
(x
pj1
,y
pj1
,z
pj1
)=p
j2
(x
pj2
,y
pj2
,z
pj2
)=(x2,y2,z2),o
j1
(x
oj1
,y
oj1
,z
oj1
)=o
j2
(x
oj2
,y
oj2
,z
oj2
)=(x1,y1,z1);
[0057]
根据分层面z=z
i
和z=z
i+1
平面与三角形面片s
j
间的关系可得到分层面z=z
i
和z=z
i+1
平面与三角形面片s
j
各边的交点坐标p
j1
(x
pj1
,y
pj1
,z
pj1
)、o
j1
(x
oj1
,y
oj1
,z
oj1
)、o
j2
(x
oj2
,y
oj2
,z
oj2
)可利用式(15)、(17)、(18)计算,p
j2
(x
pj2
,y
pj2
,z
pj2
)可由式(19)求得:
[0058]
p
j2
(x
pj2
,y
pj2
,z
pj2
):
[0059]
再利用式(10)、(11)和式(12)可求得l
ij

[0060]
由于两分层面z=z
i
和z=z
i+1
平面之间存在三角形面片顶点c(x3,y3,z3),求过三角形面片顶点c且平行于分层面的三角形面片s
j
的截线长度l'
ij
,取l
ij
和l'
ij
中较大值即得l
ij
,如式(20)所示;
[0061]
l
ij
=max{l
ij
,l'
ij
}
ꢀꢀ
(20);
[0062]
l'
ij
按以下方法求得:
[0063]
将q
j1
(x
qj1
,y
qj1
,z
qj1
)代入直线方程式中可得式(21):
[0064]
q
j1
(x
qj1
,y
qj1
,z
qj1
):
[0065]
交线段q
j1
q
j2
的长度l'
ij
如式(22)所示:
[0066][0067]
第三种情况:两相邻分层面z=z
i
和z=z
i+1
平面只有一层与三角形面片相交,根据式(10)求出交线段p
j1
p
j2
的长度即为l
ij
;根据式(19)、(15)和(10)求出交线段p
j1
p
j2
的长度,再依据式(21)和(22)求出交线段q
j1
q
j2
的长度l’ij
,代入式(20)中即可得到l
ij
;依据式(22)求出交线段q
j1
q
j2
的长度l’ij
即为最后的l
ij
;将各l
ij
代入式(9)即可得到在分层面z=z
i
和z=z
i+1
平面间打印层与三角形面片j形成体积误差δv
ij

[0068]
步骤5中,对第j个三角形面片s
j
,在点p上的阶梯斜高c
j
如式(23)所示;
[0069]
c
j
=δh
i
|cosθ
j
|
ꢀꢀ
(23);
[0070]
以δh
i
为打印厚度进行打印时产生的最大阶梯斜高c
max
,如式(24)所示;
[0071]
c
max
=max{c
j
}
ꢀꢀ
(24)。
[0072]
步骤7中,具体为:
[0073]
步骤7.1,找到与当前分层面z=z
i
平面相交的众多三角形面片s
j
的θ
j
的最小值θ
i
,且记cos(θ
i
)为a
zmax
(i):
[0074]
a
zmax
(i)=max{cos(θ
i
)}
ꢀꢀ
(25);
[0075]
步骤7.2,在分层面z=z
i
平面打印δh
i
层后得到分层面z=z
i+1
(z
i+1
=z
i
+δh
i
);提取与第i+1分层面即z=z
i+1
平面相交的所有三角形面片,得到与即z=z
i
和z=z
i+1
平面同时相交的三角形面片法矢量n
j
与打印方向d的夹角θ
j
中的最小值θ
i+1
,且记为a
zmax
(i+1):
[0076]
a
zmax
(i+1)=max{cos(θ
i+1
)}
ꢀꢀ
(26);
[0077]
取z
max
=max{a
zmax
(i),a
zmax
(i+1)};
[0078]
采用式(27)计算α
slab

[0079]
α
slab
=[δh
i
·
z
max
/c
max
]
ꢀꢀ
(27);
[0080]
步骤7.3,若α
slab
≤1,则进行步骤8;否则按式(28)计算新的δh
i
,并跳转到步骤4;
[0081]
δh
i
=δh
i

slab
ꢀꢀ
(28)。
[0082]
步骤8中,具体为:
[0083]
步骤8.1,提取打印轮廓,以分层面z=z
i+1
切分模型进行打印;
[0084]
步骤8.2、以取定的打印厚度沿提取的轮廓进行打印;
[0085]
步骤8.3、判断是否已经完成打印;打印后的模型高度为z
i+1

z0,或模型最高点z坐标为z
max
=z0+h;若z
i+1
<z
max
,则跳转到第2步;否则结束打印。
[0086]
本发明的有益效果是:将三角形面片z向即模型的打印方向的高度差与打印厚度
相关联以保证模型需精细打印部分的特征,同时将体积误差与阶梯斜高相结合来控制打印厚度,以保证打印效率的条件下提高模型的打印精度,改善基于阶梯斜高算法的片面性。
附图说明
[0087]
图1是3d打印中阶梯状表面引起的误差图;
[0088]
图2是本发明方法中打印层即z=z
i
与三角形面片相交图;
[0089]
图3是本发明方法中打印层即z=z
i
与三角形面片相交的特殊图;
[0090]
图4是本发明方法中第i层与第i+1层即z=z
i
和z=z
i+1
平面与三角形面片s
j
产生的体积误差的几何图;
[0091]
图5是本发明方法中相邻分层面即z=z
i
和z=z
i+1
平面与三角形面片相交图;
[0092]
图6是本发明方法中三角形面片的分层图(一);
[0093]
图7是本发明方法中三角形面片的分层图(二);
[0094]
图8是本发明方法中三角形面片的分层图(三);
[0095]
图9是本发明方法中阶梯斜高的几何图;
[0096]
图10是本发明方法中切线段方向判断图;
[0097]
图11是本发明一种基于阶梯斜高和体积误差的3d打印自适应分层方法的流程图;
[0098]
图12是本发明方法中松鼠的stl模型;
[0099]
图13是采用均匀分层方法打印得到的松鼠模型;
[0100]
图14是采用自适应分层方法打印得到的松鼠模型;
[0101]
图15是采用本发明的3d打印自适应分层方法打印得到的松鼠模型。
具体实施方式
[0102]
下面结合附图和具体实施方式对本发明进行详细说明。
[0103]
3d打印是依据零件的3d模型采用逐层堆积方式完成零件的加工。设当前分层面为第i层,其打印厚度为δh
i
,打印后得第i+1层。如此进行即得具有阶梯状表面的打印件,如图1所示,3d打印所得到的阶梯状零件表面与零件模型表面存在误差。定义此误差为体积误差,其大小与打印层厚δh
i
和零件的表面特征有关。实时调整打印厚度以提高打印精度是本发明的核心。
[0104]
本发明是基于零件的stl文件提出的自适应分层方法,其目的是为保证零件的打印效率和精度,重点考虑模型上需精细打印的模型特征,所设计的方法依据打印方向(即z向)上三角形面片高度差,并结合体积误差与阶梯斜高,实时调整打印厚度以提高零件的打印效率和精度。
[0105]
本发明一种基于阶梯斜高和体积误差的3d打印自适应分层方法,如图11所示,具体按照以下步骤实施:
[0106]
步骤1,定义允许阶梯斜高c
max
、允许体积误差δv
max
、最小打印厚度δh
min
和最大打印厚度δh
max
;设置模型总高h和首层坐标z0,当前打印层i=0;
[0107]
步骤2,求当前分层面的最小高度差δh
min
和最大高度差δh
max
;具体为:
[0108]
3d打印时,以零件的stl模型为参考进行分层后逐层打印,对零件的stl模型,其表面由众多三角形面片表示。当前分层面z=z
i
与三角形面片的相交情况有五种,如图2所示,
其中,第五种情况如图3所示。
[0109]
设当前分层面即第i层,沿打印方向即z向的层高为z
i
;与第i分层面即z=z
i
平面相交的三角形面片

abc中,设第j个三角形面片为s
j
,其三个顶点的坐标为(x
j
1,y
j1
,z
j1
)、(x
j2
,y
j2
,z
j2
)、(x
j3
,y
j3
,z
j3
),计算三角形面片为s
j
最高顶点的z坐标z
i,j,max
和最低顶点的z坐标z
i,j,min
,如式(1)和式(2)所示;
[0110]
z
i,j,max
=max{z
j1
,z
j2
,z
j3
}
ꢀꢀ
(1);
[0111]
z
i,j,min
=min{z
j1
,z
j2
,z
j3
}
ꢀꢀ
(2);
[0112]
且z
i,j,min
≤z
i
≤z
i,j,max
,则三角形面片s
j
的高度差δh
ij
,如式(3)所示;
[0113]
δh
ij
=z
i,j,max

z
i
ꢀꢀ
(3);
[0114]
与当前分层面z=z
i
平面相交的所有三角形面片s
j
高度差δh
ij
的最小值和最大值即为最小高度差δh
min
和最大高度差δh
max
,如式(4)和式(5)所示;
[0115]
δh
min
=min{δh
ij
}
ꢀꢀ
(4);
[0116]
δh
max
=max{δh
ij
}
ꢀꢀ
(5);
[0117]
式中,j=1,
……
,m,m是与第i分层面即z=z
i
平面相交的三角形面片的个数;
[0118]
步骤3、根据设置的最小打印厚度δh
min
、最大打印厚度δh
max
以及当前分层面最小高度差δh
min
和最大高度差δh
max
,试选当前打印厚度δh
i
,并根据条件选择相应的操作;
[0119]
具体如下:
[0120]
(1)当最小打印厚度δh
min
≤δh
min
或δh
min
≥δh
max
,则取当前打印厚度δh
i
=δh
min
,跳转到步骤8;
[0121]
(2)当最大打印厚度δh
max
≤δh
min
,则取δh
i
=δh
max
,进入步骤4;
[0122]
(3)否则,取δh
i
=min{δh
max
,δh
max
},进入步骤4;
[0123]
步骤4,计算以δh
i
为打印厚度进行打印时产生的最大体积误差δv
max
,具体为:
[0124]
步骤4.1,参考图4,根据三角形面片s
j
的三顶点坐标信息(x
j1
,y
j
1,z
j1
)、(x
j2
,y
j2
,z
j2
)、(x
j3
,y
j3
,z
j3
)求得其法矢量n
j
;已知打印方向即模型成型方向为d,则n
j
与d间的夹角θ
j
满足式(6);
[0125][0126]
步骤4.2,计算以δh
i
为打印厚度打印后在第i和第i+1分层面即z=z
i
和z=z
i+1
平面间三角形面片的台阶效应最大时产生的最大体积误差δv
max
;具体如下:
[0127]
参考图4,实际打印时,打印厚度δh
i
>0,因此导致无法沿模型的理想轮廓打印,致使在三角形面片s
j
与打印形成的轮廓间形成了打印误差即体积误差δv
ij
,δv
ij
采用式(7)求得:
[0128]
δv
ij
=s
ij
l
ij
ꢀꢀ
(7);
[0129]
式中,s
ij
表示以打印厚度δh
i
打印后得到的零件轮廓与模型的理想轮廓在两分层面z=z
i
和z=z
i+1
平面间形成的三角形的面积;l
ij
表示分层面z=z
i
和z=z
i+1
平面与模型轮廓上三角形面片s
j
相交所得梯形或三角形的中线长度;s
ij
的计算如式(8)所示:
[0130][0131]
将式(6)、(8)代入(7)中可得式(9):
[0132][0133]
当前打印层产生的最大体积误差δv
max
为:δv
max
=max{δv
ij
};
[0134]
当θ
j
的取值范围为θ
j
∈[π/2+2kπ,π+2kπ](k为整数)时,体积误差是负数,需要取绝对值;
[0135]
当θ
j
=2kπ时,即三角形面片的法向矢量与模型的打印方向的单位矢量垂直,此时不会有阶梯误差出现,即体积误差为零;
[0136]
以打印厚度δh
i
进行3d打印时,第i和第i+1分层面即z=z
i
和z=z
i+1
平面与三角形面片s
j
的相交情况有12种,如图5所示,分三种情况求解l
ij

[0137]
第一种情况:两相邻分层面即z=z
i
和z=z
i+1
平面同时与三角形面片两边均相交且相邻分层面间无三角形面片顶点,图5中(1)至(6)所示可表示为图6。根据解析关系可得分层面即z=z
i
和z=z
i+1
平面与三角形面片s
j
各边的交点坐标p
j1
(x
pj1
,y
pj1
,z
pj1
)、p
j2
(x
pj2
,y
pj2
,z
pj2
)、o
j1
(x
oj1
,y
oj1
,z
oj1
)、o
j2
(x
oj2
,y
oj2
,z
oj2
),由此可得线段p
j1
p
j2
和o
j1
o
j2
,如式(10)及式(11)所示;
[0138][0139][0140]
l
ij
的长度如式(12)所示:
[0141][0142]
其中,p
j1
(x
pj1
,y
pj1
,z
pj1
)、p
j2
(x
pj2
,y
pj2
,z
pj2
)、o
j1
(x
oj1
,y
oj1
,z
oj1
)、o
j2
(x
oj2
,y
oj2
,z
oj2
)可按以下方法求得:
[0143]
如图6所示,三角形面片s
j
三个顶点的坐标分别为a(x1,y1,z1)、b(x2,y2,z2)和c(x3,y3,z3),过顶点a(x1,y1,z1)和b(x2,y2,z2)的直线方程如式(13)所示:
[0144][0145]
过顶点a(x1,y1,z1)和c(x3,y3,z3)的直线方程如式(14)所示::
[0146][0147]
点p
j1
在直线ab上,点p
j2
在直线ac上,考虑到打印时喷头是垂直于分层面的,此时分层面即为一条直线,如图5所示,第i分层面z=z
i
,即得z=z
i
。将z=z
i
分别代入式(13)、(14)可得交点坐标分别如式(15)及式(16)所示;
[0148]
p
j1
(x
pj1
,y
pj1
,z
pj1
):
[0149]
p
j2
(x
pj2
,y
pj2
,z
pj2
):
[0150]
点o
j1
在直线ab上,点o
j2
在直线ac上,考虑到打印时喷头垂直于分层面,此时分层面即为一条直线,如图5所示,第i+1分层面z=z
i+1
平面,即得z=z
i+1
。将z=z
i+1
分别代入式(13)、(14)可得交点坐标分别如式(17)及式(18)所示;
[0151]
o
j1
(x
oj1
,y
oj1
,z
oj1
):
[0152]
o
j2
(x
oj2
,y
oj2
,z
oj2
):
[0153]
第二种情况:图5中(7)、(8)、(9)情况,两相邻分层面z=z
i
和z=z
i+1
平面同时与三角形面片两边相交且相邻分层面间有三角形面片的顶点,其中(8)、(9)为(7)的特殊情况:图5中(8)为分层面z=z
i+1
平面与三角形面片s
j
的顶点a(x1,y1,z1)重合,结合图5(8)得o
j1
(x
oj1
,y
oj1
,z
oj1
)=o
j2
(x
oj2
,y
oj2
,z
oj2
)=(x1,y1,z1);图(9)为第i和第i+1分层面z=z
i
和z=z
i+1
平面分别与三角形面片j的顶点a(x2,y2,z2)和b(x2,y2,z2)重合,结合图5(9)得p
j1
(x
pj1
,y
pj1
,z
pj1
)=p
j2
(x
pj2
,y
pj2
,z
pj2
)=(x2,y2,z2),o
j1
(x
oj1
,y
oj1
,z
oj1
)=o
j2
(x
oj2
,y
oj2
,z
oj2
)=(x1,y1,z1)。基于此,只需对图5(7)具体分析。如图7所示。根据分层面z=z
i
和z=z
i+1
平面与三角形面片s
j
间的关系可得到分层面z=z
i
和z=z
i+1
平面与三角形面片s
j
各边的交点坐标p
j1
(x
pj1
,y
pj1
,z
pj1
)、o
j1
(x
oj1
,y
oj1
,z
oj1
)、o
j2
(x
oj2
,y
oj2
,z
oj2
)可利用式(15)、(17)、(18)计算,p
j2
(x
pj2
,y
pj2
,z
pj2
)可由式(19)求得:
[0154]
p
j2
(x
pj2
,y
pj2
,z
pj2
):
[0155]
再利用式(10)、(11)和式(12)可求得l
ij

[0156]
由于两分层面z=z
i
和z=z
i+1
平面之间存在三角形面片顶点c(x3,y3,z3),如图7所示,需求过三角形面片顶点c且平行于分层面的三角形面片的截线长度l'
ij
,取l
ij
和l'
ij
中较大值即得l
ij
,如式(20)所示;
[0157]
l
ij
=max{l
ij
,l'
ij
}
ꢀꢀ
(20);
[0158]
l'
ij
按以下方法求得:
[0159]
将q
j1
(x
qj1
,y
qj1
,z
qj1
)代入直线方程式中可得式(21):
[0160]
q
j1
(x
qj1
,y
qj1
,z
qj1
):
[0161]
交线段q
j1
q
j2
的长度l'
ij
如式(22)所示:
[0162][0163]
第三种情况:如图5中(10)、(11)、(12)所示,两相邻分层面z=z
i
和z=z
i+1
平面只有一层与三角形面片相交,如图8所示,结合图8与5(10),根据式(10)求出交线段p
j1
p
j2
的长度即为l
ij
;结合图8与5(11),需要根据式(19)、(15)和(10)求出交线段p
j1
p
j2
的长度,再依据式(21)和(22)求出交线段q
j1
q
j2
的长度l’ij
,代入式(20)中即可得到最后的l
ij
;结合图8与图5(12),需要依据式(22)求出交线段q
j1
q
j2
的长度l’ij
即为最后的l
ij
。将各l
ij
代入式(9)即可得到由第i和i+1分层面z=z
i
和z=z
i+1
平面间与三角形面片j形成的体积误差δv
ij

[0164]
步骤5,比较最大体积误差δv
max
与允许体积误差δv
max
的关系,若δv
max
<δv
max
,则跳转至步骤8;否则计算最大阶梯斜高c
max

[0165]
具体如下:参考图4,阶梯斜高的定义如图9所示,对第j个三角形面片s
j
,在点p上的阶梯斜高c
j
如式(23)所示;
[0166]
c
j
=δh
i
|cosθ
j
|
ꢀꢀ
(23);
[0167]
以δh
i
为打印厚度进行打印时产生的最大阶梯斜高c
max
,如式(24)所示;
[0168]
c
max
=max{c
j
}
ꢀꢀ
(24);
[0169]
步骤6,判断最大阶梯斜高c
max
与允许阶梯斜高c
max
的关系;若c
max
<c
max
,则跳转至步骤8,反之,跳转至步骤7;
[0170]
步骤7,对δh
i
层厚进行切分,具体如下:
[0171]
步骤7.1,找到与当前分层面z=z
i
相交的众多三角形面片s
j
的θ
j
的最小值θ
i
,且记
cos(θ
i
)为a
zmax
(i):
[0172]
a
zmax
(i)=max{cos(θ
i
)}
ꢀꢀ
(25);
[0173]
步骤7.2,欲以δh
i
为打印层厚打印,得分层面z=z
i+1
(z
i+1
=z
i
+δh
i
);提取与第i+1层即z=z
i+1
平面相交的所有三角形面片,得到与z=z
i
和z=z
i+1
平面同时相交的三角形面片s
j
法矢量n
j
与打印方向d的夹角θ
j
中的最小值θ
i+1
,且记为a
zmax
(i+1):
[0174]
a
zmax
(i+1)=max{cos(θ
i+1
)}
ꢀꢀ
(26);
[0175]
取z
max
=max{a
zmax
(i),a
zmax
(i+1)};
[0176]
采用式(27)计算α
slab

[0177]
α
slab
=[δh
i
·
z
max
/c
max
]
ꢀꢀ
(27);
[0178]
步骤7.3,若α
slab
≤1,则进行步骤8;否则按式(28)计算新的δh
i,
并跳转到步骤4;
[0179]
δh
i
=δh
i

slab
ꢀꢀ
(28);
[0180]
步骤8:以δh
i
为打印层厚打印前,以z=z
i+1
(z
i+1
=z
i
+δh
i
)为分层面来切分模型,提取模型轮廓并对零件进行打印,具体为:
[0181]
步骤8.1,在模型打印前,先提取打印轮廓。以z=z
i+1
分层面切分模型进行打印时,打印轮廓的提取如下:
[0182]
(1)参考步骤2的方法求出所有与分层面z=z
i+1
平面相交的三角形面片s
j
,并采用步骤4.2所示方法沿打印方向依次求出所示三角形面片s
j
与分层面z=z
i
平面的交点坐标p
j1
(x
pj1
,y
pj1
,z
i
)、p
j2
(x
pj2
,y
pj2
,z
i
)和线段p
j1
p
j2

[0183]
其中,线段p
j1
p
j2
的求取参考图2和图3分不同的情况进行:
[0184]
情况1:三角形面片的三个顶点都在分层面上,则相交线段为三角形面片其中的一边,其端点为p
j1
(x
pj1
,y
pj1
,z
i
)、p
j2
(x
pj2
,y
pj2
,z
i
)。
[0185]
情况2:三角形面片穿越分层面且有两个顶点z坐标相同,按以上空间直线两点式求交点的公式计算。
[0186]
情况3:三角形有且仅有一个顶点在平面内,其他两个顶点在平面的同一侧,此顶点即为p
j1
(x
pj1
,y
pj1
,z
i
)。
[0187]
情况4:三角形面片有一条边在平面内,此时三角形面片的这条边即为相交线段。
[0188]
情况5:三角形面片穿过切平面且其中一个顶点在平面内,计算交点时选取任一边的长度均可。
[0189]
(2)截面内线段的连接
[0190]
对封闭轮廓进行连接时,需要对这些乱序的线段进行排序。按照一般图形学的规定,内轮廓顺时针为正,外轮廓逆时针为正,如图10所示;
[0191]
(a)修正所有交线段的方向;参考图10,定义式(28):
[0192]
f=(n
j
×
p
j1
p
j2
)
·
d
ꢀꢀ
(28);
[0193]
式中,n
j
为三角形面片s
j
的法矢量;p
j1
p
j2
为交线段p
j1
p
j2
向量;d为打印方向;
[0194]
若f>0,则为正向;若f<0,则为反向,并交换线段两端点的坐标值;
[0195]
(b)修正交线段方向后,将这些交线段按所属轮廓不同进行分组并连接。
[0196]
以任取一条交线段作为初始线段,计算初始线段终点到其余交线段起点的距离,取距离最小的交线段作为下一条线段。再将此交线段做为新的初始线段,重复上述操作。进行此操作时,需要设置一个合适的距离。一般的,这个距离很小。如果通过计算两线段间的
距离大于所设置的距离值时,判定后者属于另一个闭合轮廓,并以它作为下一个闭合轮廓的初始线段。依此将所有交线段进行连接即得在该分层面上的闭合轮廓。
[0197]
(c)存储当前轮廓线,并将z
i+1
设置为新一轮循环的z
i

[0198]
步骤8.2、以取定的打印厚度沿提取的轮廓进行打印。
[0199]
对不同的stl模型,利用本发明所提出的阶梯斜高和体积误差的自适应分层方法,从打印时间、层数、精度等三个方面,与均匀分层方法和其它的自适应分层方法进行比较说明本发明所设计的分层算法的优越性。现定义最小层厚值为0.1mm,最大层厚值0.4mm,阶梯斜高为0.1mm,最大体积误差为0.1mm3。用户可根据需要自行设置。此处随机附上3个模型进行分层打印仿真证明了本发明的正确性。
[0200]
步骤8.3、判断是否已经完成打印。打印后的模型高度为z
i+1

z0,或模型最高点z坐标为z
max
=z0+h;若z
i+1
<z
max
,则跳转到第2步。否则结束打印。
[0201]
利用本方法以图12所示的松鼠模型为例,三角形面片个数为2958,模型尺寸为8.22
×
16.39
×
17.32,单位mm,利用均匀分层方法、自适应分层方法和本发明所设计的分层方法进行打印。打印结果如图13、图14以及图15所示,由图15可以明显看到尾巴部分和部分细节特征图比图14以及图13更加精确。为从本质上证明本发明所设计的自适应分层方法的优越性,表1给出了用3种方法打印松鼠模型时的打印时间、打印层数和打印精度的结果:本发明所设计的自适应分层方法的时间和层数分别为1.552和143,自适应分层方法的时间和层数分别为1.452和135,均匀分层方法的时间和层数分别为2.566和295,可知本发明所设计的自适应分层方法比均匀分层方法在时间和层数上都有所提高,而本发明改进自适应分层方法虽然在时间和层数上比自适应分层方法略高,但精度为0.0864,自适应分层方法的精度为0.0965,在精度上,本发明所设计的自应分层方法比现有的自适应分层方法大约提高了11.3%。
[0202]
表1松鼠模型3种方法比较
[0203]
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1