1、引言

80年代以来,特别是进入90年代以后,在计算机技术的强大支撑下,CAD技术发展非常迅速.CAD从出现到今天,经历了从一维到三维的发展过程.CAD一开始只是帮助人们进行复杂的设计计算,设计结果只是一堆数据,即一维的CAD.为了将工程设计图用计算机来实现,出现了二维CAD系统,它基本能满足传统工业生产的需要.随着产品复杂性的增加和数控技术的发展,有的产品很难用二维工程图来表示,而且二维工程图的表示容易产生二义性;另一方面根据二维工程设计图将无法实现三维的数控加工,例如汽轮机叶片、飞机机头等的加工.由此产生了三维CAD,这是目前较流行的CAD软件.根据产品开发设计、零件加工制作的需要,三维CAD已不能满足人们的需要,现代产品设计开发希望CAD中能包含更多的信息,如加工工艺信息、装配工艺信息、性能信息、销售信息、产品生命周期信息等.因此,下一代的CAD应该是四维CAD,是数据较完备的CAD.回顾CAD的发展,其中一个重要的方向就是朝着数据的不断完备发展的.在过去近40年的发展中,主要实现了图形几何数据的完备性,当今正逐步使非图形几何拓扑数据不断地完备.这也是实现复杂产品开发设计、快速成形加工、CAD/CAPP/CAM集成的基础.

2、解决问题的方法

由于生产和市场的需求,为了使CAD数据达到一定的完备性,许多学者进行了大量的研究工作.对于这一问题,较为流行的解决办法是,用一个标准的数据模型表达CAD的数据.目前大家公认的比较好的标准数据模型是STEP(Standard for the Exchange of Product model data)标准.国际标准化组织于1984年设立了一个委员会ISOTC/18sc/14,以PDES为基础,同时主要参考了美国的IGES、PDDI、PDES、法国的SEP、德国的VDAFS、欧洲的CAD*I等标准,开发了STEP标准.PDES(Product Data Exchange Specification)标准是IGES技术委员会吸取以前的经验于1984年组织的一项研究,它不同于IGES,是为集成化系统发展的.用以定义零件或装配件,使设计、分析、制造、试验、检验及产品支持等等都能直接应用产品定义数据.在PDES基础上开发出来的STEP标准,不仅包括曲线、曲面、实体、形状特征等几何信息,还包括许多非几何信息,如公差、表面粗糙度、材料等.它覆盖产品整个生命周期,如设计、制造、管理、测试及检验等所需要的全部信息.而且STEP还在不断地丰富和完善,STEP将是一个实现CAD/CAPP/CAM集成的、较理想的数据交换标准[3].具有一定规模的CAD软件公司,都声称开发了STEP标准的接口,这为用户的开发提供了方便,使用STEP标准不失为一种完善CAD数据完备性的有效手段.但是,对于已有的工程设计,要使之符合STEP标准,需要进行大量的数据转化工作.另外,对于没有提供STEP接口的CAD软件,要加上STEP功能,也不是一件容易的事.

总而言之,为了获得较完备的CAD数据,重新开发一套CAD系统是不现实的,目前大多采用在原CAD基础上增加功能的方法来实现CAD数据的完备.由于解决问题的侧重点不同,所以数据完备的侧重点也不同.有的注重材料,试图用CAD设计采用复合材料制成产品的组成结构,以实现快速成形加工.有的注重加工工艺,需要完备CAD的加工工艺数据,实现与CAPP、CAM等的数据交换等等.近期可望有各种分项的CAD数据完备性的研究成果出现,最终的发展将以四维的形式构建CAD的数据模型.本文将提出一个较为简单的方法,使CAD数据达到一定的完备性.该方法的核心是利用原CAD软件的开放性及开发功能,获取或增加必要的CAD加工工艺数据.

3、实施方案分析

3.1 需要解决的具体问题

我们在进行CAD/CAPP/CAM的集成研究中,碰到了CAD与CAPP/CAM间进行数据交换的问题.目前商品CAD/CAM软件实现的CAD/CAPP/CAM集成,严格地说是CAD/NC-CAPP-CAM的集成.而我们研究的项目是较广义的CAD/CAPP/CAM集成,它不仅包含为数控加工设备生成NC代码程序需要的NC-CAPP,还包含对传统非数控加工制造进行工艺设计、生产调度和生产管理,生成符合我国标准的加工工艺文件等需要的CAPP.这就要求CAPP根据CAD的设计结果完成各类加工工艺的设计,CAD的设计图形几何拓扑信息已经可以采用OLE技术传给CAPP,但是非几何拓扑信息还不能直接获得.CAPP的设计结果(如加工工序尺寸等)还应传回CAD系统,CAD系统应能根据CAPP的设计结果对工程设计图进行必要的修改,然后又将结果传给CAPP.只有进行反复多次数据交换后,才能完成CAPP设计.在此需要解决的一个首要问题是,CAD加工工艺数据的完备性.要求CAD产品设计的数据中应包含大量的非几何拓扑信息,如尺寸公差、形位公差、表面粗糙度、材料、热处理、加工技术要求等.为实现CAD数据完备性重构CAD系统,难度较大,对一般用户而言还不具备开发的力量.本研究决定探索在原CAD软件系统的统一构架上,根据实际需要,进行CAD数据完备性实施性研究.

3.2 可行性分析

要使CAD的数据在原有的基础上得到进一步的完备,实现的必要条件是,原CAD系统必须具有一定的开放性或可开发性.这一点大多数商品CAD软件都考虑到了,即使是具有STEP标准接口的CAD软件也有开发功能模块.研究中我们选择了一种具有开发功能接口、暂时没有STEP标准接口、在我国应用极为广泛的CAD软件作为研究的对象,说明如何使CAD的数据较为完备,如何解决一些可能碰到的技术问题.

AUTOCAD软件在我国应用最为广泛.凡有CAD应用的地方,几乎都有AUTOCAD软件.不少厂家的产品都是采用AUTOCAD来设计的.本研究要使CAD的数据在原有的基础上加以完备,这对工厂的生产实践具有一定的现实意义和指导意义.AUTOCAD软件价格便宜,对硬件环境的要求不高,对用户具有良好的开放性,升级后的AUTOCAD软件对用户的前期开发工作具有良好的继承性,等等.选择AUTOCAD作为研究对象,具有一定的普遍意义和普及推广应用价值.

要使CAD的数据满足加工工艺的要求,除了产品的几何拓扑信息外,还需要尺寸及其精度要求、形位公差、表面粗糙度等几何精度要求、材料、热处理等加工技术要求.在AUTOCAD中这些非图形几何信息是以3种形式储存的,即“TEXT”或“MTEXT”(文本标注形式)、“DIMENSION”(尺寸标注形式)以及“ATTRIB”(属性形式).其中“TEXT”(或“MTEXT”)形式、“ATTRIB”形式较为简单,而“DIMENSION”形式较为复杂,下面就这2种形式的数据格式进行分析[4],以找出获得这些非图形几何信息的方法.

“TEXT”形式数据存储格式:

((-1. (0.“TEXT”)    ; 图元类型

(8.“0”)      ; 图层名

(10 8.0 6.0 0.0)  ; 文本的插入点

(40.0.2)     ; 文本的高度

(1.“R50”)    ; 文本值

(50.0.0)     ; 旋转角度

(41.1.0)     ;文本缩放比例因子

(51.0.0)     ;文本倾斜角度

(7.“STANDARD”)  ; 文本字型名

(71.0)      ; 文本生成标志

(72.0)      ;水平定位选项

(73.0)      ;垂直定位选项

(210 0.0 0.0 1.0)  ; 拉伸矢量

)

“DIMENSION”形式数据存储格式:

((-1. (0.“DIMENSION”)   ;图元类型

(8.“0”)       ;图层名

(2.“*D0”)      ;无名块名称

(10 6.99385 7.05435 0.0)  ;尺寸样式的定义点

(11 5.86265 7.05435 0.0)  ;尺寸标注文本的中点

(12 0.0 0.0 0.0)  ;针对Baseline与Continue标注的插入点

(70.0)    ;尺寸标注类型代码

(1.“”)   ;由用户键入的尺寸标注文本值

(13 4.73145 7.31522 0.0) ;线性型和角度型尺寸标注的定义点

(14 6.79385 7.20652 0.0) ;线性型和角度型尺寸标注的定义点

(15 0.0 0.0 0.0) ;直径型、半径型和角度型尺寸标注的定义点

(16 0.0 0.0 0.0)  ;角度尺寸标注的尺寸弧线定义点

(40.0.0)      ;引出线长度

(50.0.0)      ;角度

(51.0.0)      ;水平方向

(52.0.0)      ;尺寸界线角度

(53.0.0)      ;尺寸文本旋转角度

(210 0.0 0.0 1.0)  ;拉伸矢量

(3.“*UNNAMED”)  ;尺寸样式名

)

由以上图元数据结构可知,对于“TEXT”形式,数据值是跟在组码1后面的组值.对于“DIMENSION”形式,则分为2种情况,一种情况是,在尺寸标注时用户键入了尺寸值,其数据值就是跟在组码1后面的组值;另一种情况是,在尺寸标注时用户确认了尺寸测量值,则组码1后面的组值为空(“”),其数据值以“无名块”的形式隐含在“DIMENSION”图元中.无名块的结构与一般的块结构不同,不能用查找“INSERT”图元的方法访问.

提取用“DIMENSION”形式标注的尺寸数据的方法有3种.第1种方法为直接提取法,条件是标注的尺寸是由用户键入的,可采用直接提取组码1后面的组值获得数据.第2种方法为“炸开”提取法,先用“EXPLODE”命令,使“DIMENSION”形式标注的尺寸图元“炸开”,分裂成单个的图元,这时尺寸数据便成为“TEXT”形式的图元,然后再采用提取“TEXT”图元组码1后面的组值,而获得数据.第3种方法为访问无名块提取法,利用tlbserach函数(对于AUTOCAD R12以后的版本还可以利用nentsel函数)获取进入无名块的通道,再利用entnext函数获取无名块中的各个子图元,从“TEXT”的子图元提取组码1后面的组值,而获得数据.

第1种方法是有条件的提取法,有较大的局限性.第2种方法比较简便,而且可以与“TEXT”的标注方式统一处理.缺点是破坏了原“DIMENSION”标注的结构,而且“无名块”的“炸开”,将增大零件图的存储量.例如对一项普通的尺寸标注而言,“炸开”后,尺寸线、尺寸界线、箭头等都将成为独立的图元实体.采用第2种方法的最大不足是,“DIMENSION”中无名块的“炸开”将给以后的图形修改带来很大的麻烦.第3种方法编程较复杂,但保护了原“DIMENSION”标注的结构,尺寸数据仍然按无名块的结构方式储存,既提取了数据信息,又没增加存储量,是一个较好的方法.

3.3 ACAD上的实施

AUTOCAD本身带有AUTOLISP用户开发工具,R11.0以后的版本还支持用C语言来开发,这为用户加入自己设计的功能提供了很好的条件.AUTOLISP具有很强的符号处理功能,下面就用它来开发获取非图形几何信息的功能.

1)获取“TEXT”图元中的数值,其中namet为实体名

(setq ent(entget namet))      ;获取图元数据

(if(equal(cdr(assco 0 ent))“TEXT”);判别是否为文本

(setq datum(cdr(assco 1 ent)));是文本则提取数据

)

2)获取“DIMENSION”图元中的数值.利用tlbserach函数编制访问无名块提取法的程序段,这样在R10以上的版本中都可以运行.

(setq ent(car(entsel)));选择尺寸标注图元,并获得图元名

(setq entt(entget ent‘(“ACAD”)));获得图元定义表

(setq named(cdr(assoc 2 entt)));获取无名块的块名

(setq head(tblsearch“BLOCK”named));取出块头信息

(setq entname(cdr(assoc -2 head)));取出块中第一个子图元名

(while(/=entname nil)    若有子图元则继续

(setq ent(entget entname));取出块中子图元的定义表

(if(equal(cdr(assco 0 ent))“TEXT”);判别是否为文本子图元

(progn;若为文本子图元则继续

(setq datuml(cdr(assco 1 ent)));提取文本数值(尺寸数值)

(setq entname(entnext entname));取出下一个子图元名

(setq ent(entget entname));取出子图元的定义表

(if(equal(cdr(assco 0 ent))“TEXT”);判别是否为文本子图元

(progn    ;若为文本子图元则继续

(setq datum2(cdr(assco 1 ent)));提取文本数值(下偏差)

(setq entname(entnext entname));再取出下一个子图元名

(setq ent(entget entname));取出子图元的定义表

(if(equal(cdr(assco 0 ent))“TEXT”);是否为文本子图元

(setq datum3(cdr(assco 1 ent)));是,则提取文本数值(上偏差)

)        ;提取上偏差结束

)          ;提取下偏差结束

)          ;提取尺寸数值结束

(setq entname(entnext entname));取出下一个子图元名)

3.4 实施效果

完备CAD加工工艺数据后,为实现CAD与CAPP间的加工工艺数据的交换打下了良好的基础,CAPP可获得从CAD传来的工程图形(几何拓扑信息)及加工工艺信息(非几何拓扑信息),以实现产品的计算机辅助加工工艺设计.CAD能从CAPP获取加工工序尺寸、工序尺寸公差、形位公差、表面粗糙度等信息,并实现了自动地修改工序图所需的工序数据,完成了CAD与CAPP的集成.

4、结束语

本文提出了CAD数据完备性的设想,指出CAD可能从三维发展到四维,这是产品开发设计、零件加工制作的需要.根据这一设想,在AUTOCAD软件上进行了具体的实施研究,找出了实施中需要解决问题的关节点,为工厂在现有CAD技术资料的基础上,完备CAD数据,使现有技术资料得到充分的利用提供了很好的参考.为在普通通用的软件系统平台上实现CAD/CAPP/CAM的集成提供了重要基础.