1、二维半零件
平面型腔(指以平面封闭轮廓为边界的平底槽腔)的数控加工在实际生产中较常见,CAD/CAM软件一般将平面型腔的数控加工(即平面铣削)作为CAM的基本功能模块,但许多软件的这一功能仅仅局限于单个型腔,型腔中虽然可以带有多个岛屿,但岛屿顶面要在同一高度平面上(岛屿同高),并与型腔的顶面共面。对于岛屿不同高的单型腔零件,如图1所示,长方体型腔loop0(顶面高h0,底面高h3)中含有两个柱体岛屿loop1(顶面高h1)和loop2(顶面高h2),h0>h1>h2>h3,只能采用分而治之的办法,由用户将其分解为3个高度段[h1,h0],[h2,h1],[h3,h2]的3个型腔分别编程处理。
(a) (b)
图1 不同高岛屿的单型腔零件
(a) (b)
图2 多型腔零件
在实际生产中会遇到更复杂的情况:一个零件包含多个型腔,每个型腔的深度不同,且包含多个高度不同的岛屿,岛屿中又镶嵌着不同深度的内层型腔,内层型腔又包含岛屿,见图2。型腔loop0(顶面高h0,底面高h5)包含loop1岛屿(顶面高h3),loop2岛屿(顶面高h2)在loop1岛屿上,形成一个台阶。loop2中镶嵌着内层型腔loop3(底面高h4),loop4(底面高h6)为loop3的内层型腔,它比最外层型腔loop0底面还低。loop5岛屿(顶面高h1),为loop4型腔的岛屿,它的顶面高于loop2岛屿。这类零件称为二维半零件,即由一系列柱体(棱线平行Z轴,母线为垂直Z轴的某个平面上的封闭曲线)经过和、交、差布尔运算得出形状的零件。
二维半零件的数控加工在基于单型腔(岛屿同高)的CAM系统中,只能由用户将零件分解为多个单型腔分别编程处理,这样使问题变得很复杂,因此开发二维半零件的数控加工功能具有较强的工程应用价值。
2、二维半零件的几何造型
基于实体造型的CAD/CAM系统,采用实体造型的方法很容易对二维半零件进行造型。世界著名的CAD/CAM软件——美国EDS公司研制的UGⅡ就采用了实体造型,它生成二维半零件的数控加工刀具轨迹的步骤大致如下:
建立二维半零件的实体模型。
确定加工区域。
选取加工区域的各边界轮廓(boundary),并由用户选取inside和outside开关,以确定边界属于型腔边界(outside)或岛屿边界(inside);
确定边界平面(boundary plane),由两种方式确定,即自动确定(默认轮廓所在平面)或用户定义平面;
选取底平面(floor)。
选取加工参数并生成刀具轨迹。
在基于曲面造型的CAD/CAM系统中,如果将二维半零件采用曲面造型方法表示为组合曲面,作为组合曲面进行数控编程,则造型和数控编程计算量大,问题过于复杂,显然不可取,而专门开发相应的实体造型功能也不经济。因而,确定满足数控加工需要的简易的造型方法是解决二维半零件数控加工问题的前提。
一个型腔由二维边界轮廓、型腔顶面和底平面唯一确定。一个岛屿由二维边界轮廓、岛屿的顶面和底平面唯一确定。然而,在二维半零件中,岛屿的底面是某个型腔的底面或某个岛屿的顶面,如图2中,岛屿loop2的底面是岛屿loop1的顶面,岛屿loop5的底面是型腔loop4的底面。型腔的顶面或是零件的顶面(图2中loop0)或是某个型腔的底面(图2中loop4)或是某个岛屿的顶面(图2中loop3)。如果每个型腔或岛屿用3个信息(轮廓、顶面、底面)表示,则存在信息冗余。
二维半零件的数学模型
设想一张很大的木质平板,在平板上画出零件的俯视图,即所有边界的封闭轮廓线(假定零件的型腔底面和岛屿顶面均平行于XOY平面)。沿每条轮廓线将平板锯开,平板被分割成若干块。图2中零件被锯成loop0,loop1,loop2,loop3,loop4,loop56块。然后在锯缝处粘上具有弹性的可任意拉伸的理想化的橡胶薄膜,平板又变成封闭不透的了(每个小木块可不受其他小木块约束拉到任意高度位置),最后,将各小木块沿Z轴方向移动到各型腔底面或岛屿顶面高度位置,二维半零件形状就形成了。
从上面的模型可以得出:二维半零件的形状由零件顶面(平板面)、各型腔轮廓和型腔底面高度、各岛屿轮廓和岛屿顶面高度唯一确定。如果少于这些几何信息,则无法确定二维半零件的形状。
二维半零件的造型方法
二维半零件造型的一种思路为:(1)给定几何信息,即零件顶面高度、每个型腔的二维轮廓信息和型腔底面高度、每个岛屿的二维轮廓信息及岛屿顶面高度。(2)给出拓扑信息,确定轮廓代表型腔或岛屿(UGⅡ由用户选取inside和outside开关来确定)。这种方法需要用户给出轮廓环的拓扑信息。
本文设计的造型方法为:用户只需给出几何信息,拓扑关系由程序利用几何信息自动生成。这种方法需要的信息量最小,而且操作方便,用户不必输入任何拓扑信息,其具体算法为:
如果是凸台零件,先加一个比毛坯稍大的外框轮廓,构成一个虚拟的型腔,这样就转化为带岛屿的型腔,凸台即为其岛屿。
在XOY平面上画出每个轮廓环,零件的顶面高度采用缺省值Z=0,将型腔轮廓沿Z轴方向移动到各型腔底面高度位置,将岛屿轮廓沿Z轴方向移动到岛屿顶面高度位置。拓扑关系由程序自动建立,步骤大致如下:
用户任意捡取各轮廓环,因为此时轮廓环建立在各自的高度上,因此可以获得轮廓环的二维几何信息和高度信息,零件的顶面高度采用缺省值Z=0,得到所有几何信息。
将轮廓环投影到XOY平面上,根据轮廓环的相互位置关系(相交、相离、包含)建立树状结构,使得父环包含子环以及子环的各兄弟环,兄弟环之间不相互包含。图2零件的树状结构JN_gloop-2b为:typedef struct jn_gloop_2b
{
int flag;
float high;
struct jn_loop
struct jn_gloop_2b
struct jn_gloop_2b
*ptr;
*brother
*son;
} JN_gloop_2b;
其中,flag取1代表岛屿,flag取-1代表型腔,暂时均取0;high表示轮廓环的高度值;*ptr表示二维轮廓环的链表指针。
岛屿和型腔的识别:最外层的环(即树根上或树根的兄弟环)是型腔,flag取-1;比父环高的子环是岛屿,flag取1;比父环低的子环是型腔,flag取-1。如图2中,loop0,loop3,loop4是型腔;loop1,loop2,loop5是岛屿。
3 刀具轨迹生成
二维半零件的数控加工采用分层切削。所有轮廓环的高度值从大到小排序,相同的高度值只保留一个,如图2中的h0(h0=0),h1,h2,h3,h4,h5,h6。将零件从顶面高度值到最低型腔的底面高度值分为几个区间,如图2中的[h1,h0],[h2,h1],[h3,h2],[h4,h3],[h5,h4],[h6,h5]。在同一高度区间内,不同层上的刀轨(除Z坐标外)相同,因而只需对每个高度区间计算刀具轨迹。
按给定的层切下刀量,计算每一层的高度,确定落在那一个高度区间,并根据岛屿顶面余量和型腔底面余量适当调整高度值(只在个别高度上调整)。然后确定在该高度层(高度值记为L-H)上的加工区域。具体步骤如下:
图3 图2零件在不同高度区间的刀具轨迹
从树根及其每个兄弟环上分别寻找第一个高度值低于L-H的型腔,并将环建立在树状结构JN_gloop的树根及其每个兄弟环上。
在JN_gloop_2b中从步骤(1)中已搜索到的型腔子环及其每个兄弟环开始分别寻找第一个高度值高于L-H的岛屿,并将环建立在树状结构JN_gloop的相应子环及其兄弟环上。
重复1,2的过程,直至没有子环和兄弟环为止。
由1,2,3得出图2零件在[h3,h2]高度区间上的树状结构JN_gloop:typdef struct jn_gloop
{
struct jn_loop
struct jn_gloop
struct jn_gloop *ptr;
*brother
*son;
} JN_gloop;
在JN_gloop中,2n-1层(n为正整数)上的环是型腔轮廓环,2n-1层上的每一个型腔轮廓环与2n层上的子环及其兄弟环(该型腔的岛屿环)构成了一个连通的加工区域,不含岛屿为单连通,含岛屿为多连通。由上可知,在[h3,h2]高度区间上有两个加工区域:第一个区域为含岛屿loop2的loop0型腔,第二个区域为含岛屿loop5的loop3型腔。
对每一个加工区域按行切方式或环切方式计算刀具轨迹,一个加工区域加工完后,抬刀到安全平面上,然后在安全平面以上移动到另一个加工区域,下刀进行另一个区域的加工。
图3表示了图2零件在不同高度区间的刀具轨迹。
按照该算法编写的程序,已在南京航空航天大学CAD/CAM工程中心开发的SuperMan CAD/CAM系统中实现。实践证明,该造型方法简便易行,算法稳定、可靠,提高了系统的加工编程能力。