您的位置:网站首页 > CAM

如何于CAD图形中获取工艺信息?

时间:2011-02-28 10:31:09 来源:

  1 引言

  CAD技术的不断和完善,使其对产品及零件的描述越来越接近于现实,二维CAD对产品及零件的描述已达到和超过了人工设计的水平。80年代末以来,我国进口了不少世界一流的CAD/CAM软件,这些软件在国民建设中、在跟踪国际先进技术发展趋势促进我国科技进步的工作中,起到了突出的作用。但我国绝大部分中小还没有能力使用几十万元甚至上百万元一套的CAD软件,大部分工程技术人员主要使用的还是AutoCAD这类价格便宜的软件,大部分积累下来的工程技术资料是二维形式的。即使在拥有先进的CAD/CAM软件的厂家,由于台套数不足,也仍然采用“两条腿”走路的方法。本文将从一般的CAD软件出发,研究从CAD图形数据中获取加工工艺信息的方法,并选择其中一种进行较详细的实验性研究。对中小企业实现CAPP、机生产管理提供。

  2 CAD中工艺信息的表示方法

  由于加工生产的需要,希望CAD的数据中能包含足够的加工工艺信息,如尺寸及其精度、形位公差、表面粗糙度等几何精度要求,材料、热处理、装配等技术要求。为达到CAD信息集成的目的,一种流行的方法是,在构造特征时就加入相应的工艺信息,并用一个标准的中性格式如STEP标准来描述[1]。我国大多数中小企业的计算机工程设计,就是用AutoCAD软件设计完成的。

  在AutoCAD中记录或描述加工工艺信息,是以三种形式来实现的,即“TEXT”或“MTEXT”(文本标注形式)、“DIMENSION”(尺寸标注形式)以及“ATTRIB”(属性形式),其中“TEXT”或“MTEXT”形式较为简单,“DIMENSION”形式较为复杂,下面就其数据格式进行分析[2,3]。

  假设在CAD的设计图纸上有一个线性水平标注的尺寸及其公差,如图所示,其基本尺寸为:15mm,下偏差为:-0.011mm,上偏差为:-0.006mm。表1及表2分别表示了该尺寸的DXF表示形式及IGES表示形式。

 

图 水平标注尺寸

  对于用DXF文件表示的尺寸,表1仅列出了关键的部分。组码0表示图元的类型,组值“TEXT”表示为文本;组码8表示图层名为“0”层;组码1表示标注的尺寸等。其中对于获取加工工艺信息而言,最重要的组码是“0”和“1”。首先要找到组码0的组值为“TEXT”的图元,然后再从组码1中获取基本尺寸、下偏差或上偏差(如表1中加黑的斜体字)。

表1 DXF文件格式

  对于用IGES文件表示的尺寸,表2仅列出了我们感兴趣的部分,其中加黑的斜体字分别为基本尺寸、下偏差或上偏差。

表2 IGES文件格式

  另外,还有一种常用的数据表示形式,即AutoCAD数据库对象存储形式,其格式上接近于DXF格式,是以表的形式储存的。上一例子的AutoCAD数据库存储格式为:(-1.<>图元名;(0.“DIMENSION”)图元类型;(2.“*D0”)无名块名称;(1.“”)由用户键入的尺寸标注文本值等。该组数据中,最重要的是组码0和组码1的组值。由组码0的组值“DIMENSION”,可以确定是否找到了尺寸标注图元,由组码1可以直接读出标注的基本尺寸值。在本例中,标注时的基本尺寸值选用了AutoCAD的自动测量值,因此组码1的组值为空。

  对于用“TEXT”、“MTEXT”(文本标注形式)或“ATTRIB”(属性形式)记录或描述加工工艺信息的情况,其AutoCAD数据库存储格式较为简单,它们有一个共同的特点,就是在组码1后直接跟着相应的信息。

  3 从CAD中获取工艺信息的方法

  3.1 方法的选择

  由以上分析可知,从CAD的图形中获取加工工艺信息,可以用两种方法来实现。第一种为离线的获取方式,即可以通过对STEP、DXF或IGES格式文件的处理,获取有关的加工工艺信息。虽然这三种标准的格式差别很大,但是都独立于CAD,可以在别的环境中处理信息。第二种为在线的获取方式,即不退出AutoCAD,直接从其数据库对象存储中获取有关的加工工艺信息。第一种方式有赖于STEP、DXF及IGES的不失真转换,否则会丢失信息;另外获取信息时较为盲目,只能全部获取,不能有选择地获取;操作实时直观性差。第二种方式能在AutoCAD下直观实时地获取数据;从理论上讲,凡是设计图上标注的信息都能获取;另外还可以进行有目的、有选择的信息获取。

  3.2 方案的实施研究

  AutoCAD本身带有AutoLISP用户开发工具,LISP语言具有很强的符号处理和表处理功能,是建立专家系统的有力工具。

  (1)获取“TEXT”、“MTEXT”或“ATTRIB”图元中的数值

  获取“TEXT”、“MTEXT”(文本标注形式)或“ATTRIB”(属性形式)记录或描述的加工工艺信息的程序设计,其中设namet为实体名。

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

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

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

  若为“MTEX”或“ATTRIB”,则用其图元类型名代替程序中的“TEXT”即可。

  (2)获取“DIMENSION”图元中的数值

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

  获取用“DIMENSION”形式标注尺寸数据的方法有三种:直接提取法,其标注的尺寸是由用户键入的,可采用直接获取组码1后面的组值获得数据;“炸开”提取法,先用“EXPLODE”命令,使“DIMENSION”形式标注的尺寸图元“炸开”,分裂成单个的图元,这时基本尺寸、下偏差及上偏差的数据都变成“TEXT”形式的图元,然后再获取“TEXT”图元组码1后面的组值而获得数据;访问无名块提取法,利用tlbserach函数获取进入无名块的通道,再利用entnext函数获取无名块中的各个子图元,从“TEXT”的子图元获取组码1后面的组值而获得数据。 内容来自"岁月联盟"

  第一种方法是有条件的提取法,有较大的局限性。第二种方法比较简便,可以与“TEXT”的标注方式统一处理;其缺点是破坏了原“DIMENSION”标注的结构,而且“无名块”的“炸开”将增大零件图的存储量,特别是会给以后的图形修改带来很大的麻烦。例如,对一项普通的尺寸标注而言,“炸开”后,尺寸线、尺寸界线、箭头等都将成为独立的图元实体。第三种方法编程较复杂,但保护了原“DIMENSION”标注的结构,尺寸数据仍然按无名块的结构方式储存,既获取了数据信息,又未增加存储量,是一个较好的方法。用第三种方法(利用tlbserach函数)编制的获取工艺信息的程序如下:

  (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)尺寸精度的自动转化功能

  本研究中建立了尺寸精度的自动转化功能。在进行CAP时,人们更关心的是尺寸的精度等级而不是具体的数值。根据我国的标准公差规定,我们建立了尺寸精度的自动转化功能模块。该模块用AutoLISP语言设计,能在AutoCAD环境下运行,为实现CAPP提供了方便。

  4 结束语

  本文研究解决了在原CAD图形数据的基础上,获取加工工艺信息的方法,从中选择了在线的获取方式进行研究。在AutoCAD软件上进行了具体的实施实验,找出了实施中需要解决问题的关键点,为工厂在现有CAD技术资料中获取加工工艺信息、使现有技术资料得到充分的利用、实现CAPP提供了很好的。