在机械零部件加工制造中,通常先通过三维软件绘制实体,然后通过数据处理软件将三维实体数据转换为二维的轮廓顶点数据进行制作,在三维数据转换为二维的过程中,由于分层过程会造成实体表面一些信息的丢失,如物件上下表面[1],在分层的时候根据分层厚度所在高度z值来确定实体的上表面,而三维实体高度z'实际与分层数据z值有差距,在制作的时候,按照分层得到的z值进行制作,不是从实际表面数据开始的,而是从分层的那个数据开始的;对于下表面,制作过程中,过固化会导致下表面突出实际表面的情况。在制作过程中识别模型的上下表面并进行补偿,对提高零部件的精度具有十分重要作用。
![]() |
图 1 制造过程中上下表面丢失造成的误差 Fig. 1 Errors caused by loss of upper and lower surface in the manufacturing process |
一些客户追求物件的表面质量,不希望成型后再进行打磨或者加工处理,寄希望于一次成型就保证物件的表面质量,因此对识别的上下表面扫面制作的时候单独进行制作处理,能更加提高上下表面的光滑度,保证成型件的精度。
1 多边形的布尔运算多边形布尔运算主要指2个不同多边形间的并、交、差、异或运算。这里主要用到的是2组多边形的差运算,但是差运算也是通过求多边形数组的交运算后再经过其他运算得到,最核心的是先求交运算。
多边形的交运算是指2个对象之间的重叠部分。具体求取过程为:先求出2个多边形的边的所有交点,通过多边形线段间的拓扑关系求取,沿着某个多边形的边界前进,到达一个交点后,就沿着另外一个多边形的边界前进,知道遍历完所有的交点,便可得到多边形相交的部分。
![]() |
图 2 多边形的交运算 Fig. 2 Intersection operation of polygons |
如图 2,求出多边形ABC和多边形P1P2P3的交点I,J,K,A,从点I出发,沿着BC走向,找到交点J,然后跳到另外一个多边形,直到返回交点处,再跳到另外一个多边形,依次遍历完所有的多边形的交点,具体算法在文献[2 -3]中有详尽的描述;对于多边形数组,算法的基本原理与2个简单多边形的交运算一样,只是多些运算[2, 4];对多边形布尔运算算法进行优化,从而使算法计算速度较快、效率更高[5 -7]。
多边形P的补充用
$\left\{ \begin{align} & P\cup Q=\overline{\overline{P\cap Q}}{ \text{,}} \\ & P-Q=P\cap \overline{Q}{ \text{,}} \\ & Q-P=Q\cap \overline{P}{ \text{,}} \\ \end{align} \right.$ | (1) |
由式(1)可见,要求出多边形的差运算及其他运算,最主要的是先求出多边形的交,因为其他各种运算都可以转换为交运算[5]。
分层后得到许多层数据,设第i -1,i,i + 1层轮廓数组
$\left\{ \begin{align} & {{L}_{\text{low}}}(i)=L(i)-L(i-1) {\text{,}}\\ & {{L}_{up}}(i)=L(i)-L(i+1) {\text{。}}\\ \end{align} \right.$ | (2) |
在机械制造前期数据处理过程中,将三维实体分层得到二维轮廓数据,是一个将连续的实体离散化的过程,因此层与层二维数据之间是相互关联的,根据相邻层间的连续拓扑关系,可由此推断层实体的上下表面。本文针对二维轮廓数据进行运算, 先计算各层轮廓数据的面积,根据相邻层间面积的变化来判断实体在相邻层间是否突然多出、少出一部分,其中突变部分恰是要实体的上下表面,同时三维实体分层最终得到最低、最高层分别是实体下、上表面,通过二维多边形间的线段相关关系经过布尔运算求取数据[8],具体数据流程如图 3所示。
![]() |
图 3 模型上下表面识别流程图 Fig. 3 Flow chart of identifying the upper and lower surfaces of model |
二维轮廓的面积计算,double fArea,如果是外轮廓,计算得到的面积是正值,内轮廓则为负值。
如果为外轮廓,fArea不变,反之,fArea=-fArea;计算第j层的所有轮廓面积之和,假设第j层有m个轮廓,根据计算的fArea求出每个轮廓的面积,然后加和:
$S(j)=\sum\limits_{i=1}^{m}{{{S}_{i}}{\text{,}}}$ | (3) |
求出第j层轮廓之和后,计算与之相邻的上层轮廓面积之差,j=1...n -1,
$\left\{ \begin{align} & \Delta {{S}_{j}}=S(j+1)-S(j) {\text{,}}\\ & {{\Delta }^{2}}Su \!=\!\left| |\Delta S{{u}_{k}}|\!-\!|\Delta S{{u}_{k-1}}| \right| \!{\text{,}}\!\!\!\! \left( j\!=\!1\!\ldots n\!-\!1 \right)\left( k=2\!\ldots n\!-\!1 \right)\!{\text{,}}\\ & {{\Delta }^{2}}Sb=\left| |\Delta S{{b}_{k}}|-|\Delta S{{b}_{k-1}}| \right| {\text{。}}\\\end{align} \right.$ | (4) |
按式(4)计算出所有差
![]() |
图 4 模型上下表面的识别 Fig. 4 Identification of the upper and lower surfaces of model |
图 4(a)中灰点表示该层与相邻层存在面积突变,图 4(b)中的上表面分别与图 4(a)中面积突变层相对应,图 4(c)与图 4(d)分别为梯形台的面积和层数关系,虽然面积随着层数发生了变化,但是不突变,因此中间也不会存在上下表面。
针对分层好的二维层轮廓数据,来识别模型上下表面,变量定义如下:I为层数;maxLayerNum为最大层数;Q为上下表面所在层数的集合;L(I)为第I层轮廓的集合;
1)上下表面所在层的识别, 具体步骤如下
①I取值1……maxLayerNum;
②如果I为1或者maxLayerNum,则该层数据为上下表面,将I存入Q中;
③如果
④如果
⑤如果
⑥结束。
2)上下表面的计算
①从Q中取出值i,如果i为1或者maxLayerNum,则该层数据为上下表面的轮廓数据;否则,执行②;
②计算第i层相邻层的轮廓面积S(i -1),S(i),S(i + 1),如果|S(i)-S (i-1)|
③Q为空,则结束;否则返回①。
3)上下表面的补偿
根据
① ifz > h, 若补偿轮廓为
② ifz < h, 若补偿轮廓
三维实体分层会造成实体上下表面数据的丢失导致制作加工误差较大,本文采用布尔运算,通过实体三维数据间的拓扑关系,根据实体分层得到的二维数据中层与层间离散数据的相邻几何关系,求取实体中存在的上下表面,并根据分层厚度对上下表面在制作过程中进行补偿,从而保证了零部件制作的尺寸和精度。经实际证明模型上下表面的识别和补偿有效地提高了机械制造加工精度。
[1] | 洪军.面向STL模型特征的支撑生成技术研究[D].西安:西安交通大学, 2000. |
[2] |
汪国昭, 汪嘉业. 多边形组的布尔运算[J]. 计算机研究与发展 , 1987, 24 (10):59–64.
WANG Guo-zhao, WANG Jia-ye. Boolean operation on polygons[J]. Journal of Computer Research and Development , 1987, 24 (10) :59–64. |
[3] |
武运兴. 基于边界识别的多边形的布尔运算[J]. 计算机辅助设计与图形学学报 , 1994, 6 (4):260–265.
WU Yun-xing. Polygon Boolean operation based on edges recognition algorithm[J]. Chinese Journal of Computer-Aided Design & Computer Graphics , 1994, 6 (4) :260–265. |
[4] |
刘红军, 王从军, 黄树槐. 带有孔洞的多边形的布尔运算[J]. 华中科技大学学报(自然科学版) , 2003, 31 (8):18–20.
LIU Hong-jun, WANG Cong-jun, HUANG Shu-huai. Boolean operation for polygon with holes[J]. Journal of Huazhong University of Science & Technology (Natural Science Edition) , 2003, 31 (8) :18–20. |
[5] | 朱二喜.基于图形内角的两个任意多边形的交并差算法[D].上海:上海交通大学, 2009. http://xuewen.cnki.net/CJFD-BJLG801.016.html |
[6] | 阮孟贵, 章毓晋.任意多边形布尔运算的快速算法[C]//第十五届全国图象图形学学术会议论文集.北京:中国图象图形学学会, 2010. |
[7] | CUI C, WANG J C, MA J S. A new method of applying polygon Boolean operations based on trapezoidal decomposition[J]. GIScience & Remote Sensing , 2010, 47 (7) :566–578. |
[8] |
罗恒, 李涤尘, 解瑞东, 等. 快速成型中基于直骨架原理的轮廓偏置算法[J]. 计算机辅助设计与图形学学报 , 2011, 23 (11):1908–1914.
LUO Heng, LI Di-chen, XIE Rui-dong, et al. An algorithm of contour offsetting based on the principle of straight skeleton for rapid prototyping[J]. Journal of Computer-Aided Design & Computer Graphics , 2011, 23 (11) :1908–1914. |