|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
从CAD图形中获取工艺信息的方法 ; `, ]2 p4 ~7 ^' H3 E
摘要为了加工和实现CAPP的需要,本文研究了在原CAD图形数据的基础上,获取加工工艺信息的方法,并从中选择了一种进行了实验性研究。 ( y6 V& H& Z; p) O/ _$ G d: K
关键词:CAD工艺信息获取
3 O0 e) A9 W5 i& i/ e: a* B
1 P2 T, k, D H7 P* T/ v2 Y0 X1引言 - {* [* j! p$ N5 P5 K! D$ N
! c0 i: d$ F) ]+ F! {: ]
CAD技术的不断发展和完善,使其对产品及零件的描述越来越接近于现实,二维CAD对产品及零件的描述已达到和超过了人工设计的水平。80年代末以来,我国进口了不少世界一流的CAD/CAM软件,这些软件在国民经济建设中、在跟踪国际先进技术发展趋势促进我国科技进步的工作中,起到了突出的作用。但我国绝大部分中小企业还没有能力使用几十万元甚至上百万元一套的CAD软件,大部分工程技术人员主要使用的还是AutoCAD这类价格便宜的软件,大部分积累下来的工程技术资料是二维形式的。即使在拥有先进的CAD/CAM软件的厂家,由于台套数不足,也仍然采用“两条腿”走路的方法。本文将从一般的CAD软件出发,研究从CAD图形数据中获取加工工艺信息的方法,并选择其中一种进行较详细的实验性研究。对中小企业实现CAPP、计算机生产管理提供参考。
1 p" d4 |1 t: k, J/ D" L( f9 Q- f( u/ r' {5 t
2CAD中工艺信息的表示方法 * p, Q {: l8 x
8 b5 N$ d( X( @" H由于加工生产的需要,希望CAD的数据中能包含足够的加工工艺信息,如尺寸及其精度、形位公差、表面粗糙度等几何精度要求,材料、热处理、装配等技术要求。为达到CAD信息集成的目的,一种流行的方法是,在构造特征时就加入相应的工艺信息,并用一个标准的中性格式如STEP标准来描述[1]。我国大多数中小企业的计算机工程设计,就是用AutoCAD软件设计完成的。
2 u [4 E2 b4 h: m1 K% g% L1 D! o J. Q/ a( y9 [2 R* N
在AutoCAD中记录或描述加工工艺信息,是以三种形式来实现的,即“TEXT”或“MTEXT”(文本标注形式)、“DIMENSION”(尺寸标注形式)以及“ATTRIB”(属性形式),其中“TEXT”或“MTEXT”形式较为简单,“DIMENSION”形式较为复杂,下面就其数据格式进行分析[2,3]。
9 \2 g) D: G5 W& T, X' d- |+ E+ A* D) I
假设在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文件格式 + T# w) g/ R: p
| 0 | 0 | 0 | | TEXT | TEXT | TEXT | | 8 | 8 | 8 | | 0 | 0 | 0 | | 6 | 6 | 6 | | BYBLOCK | BYBLOCK | BYBLOCK | | 62 | 62 | 62 | | 0 | 0 | 0 | | 10 | 10 | 10 | | 16.69 | 17.545 | 17.5 | | 20 | 20 | 20 | | 14.91 | 14.784 | 15.036 | | 30 | 30 | 30 | | 0.0 | 0.0 | 0.0 | | 40 | 40 | 40 | | 0.18 | 0.18 | 0.18 | | 1 | 1 | 1 | | 15.000 | -0.011 | -0.006 | | 72 | 72 | 72 | | 1 | 1 | 1 | | 11 | 11 | 11 | | 17.065 | 17.905 | 17.905 | | 21 | 21 | 21 | | 15.0 | 14.874 | 15.126 | | 31 | 31 | 31 | | 0.0 | 0.0 | 0.0 | | 73 | 73 | 73 | | 2 | 2 | 2 |
对于用IGES文件表示的尺寸,表2仅列出了我们感兴趣的部分,其中加黑的斜体字分别为基本尺寸、下偏差或上偏差。 另外,还有一种常用的数据表示形式,即AutoCAD数据库对象存储形式,其格式上接近于DXF格式,是以表的形式储存的。上一例子的AutoCAD数据库存储格式为:(-1.对于用“TEXT”、“MTEXT”(文本标注形式)或“ATTRIB”(属性形式)记录或描述加工工艺信息的情况,其AutoCAD数据库存储格式较为简单,它们有一个共同的特点,就是在组码1后直接跟着相应的信息。 . W- g3 ~' Z0 e$ ?! r% T( Z
) | S2 ~* ~ ^3 g) Y3从CAD中获取工艺信息的方法
D n" K8 F. F, m& n N& d' y) m# u A7 M6 O
3.1方法的选择 ( U. j$ K( [) K2 b6 }/ g# [0 g
: C5 z$ ?% N: n由以上分析可知,从CAD的图形中获取加工工艺信息,可以用两种方法来实现。第一种为离线的获取方式,即可以通过对STEP、DXF或IGES格式文件的处理,获取有关的加工工艺信息。虽然这三种标准的格式差别很大,但是都独立于CAD,可以在别的环境中处理信息。第二种为在线的获取方式,即不退出AutoCAD,直接从其数据库对象存储中获取有关的加工工艺信息。第一种方式有赖于STEP、DXF及IGES的不失真转换,否则会丢失信息;另外获取信息时较为盲目,只能全部获取,不能有选择地获取;操作实时直观性差。第二种方式能在AutoCAD下直观实时地获取数据;从理论上讲,凡是设计图上标注的信息都能获取;另外还可以进行有目的、有选择的信息获取。 ' J8 b7 c9 o$ J( u0 [7 b' A
" g# j( Z9 A# V& G3 b3.2方案的实施研究 2 ?$ d$ I0 J+ p- M- L; h
3 d+ H) \' G4 X- E+ oAutoCAD本身带有AutoLISP用户开发工具,LISP语言具有很强的符号处理和表处理功能,是建立专家系统的有力工具。
0 M- o* p$ M- a3 r1 K
( a+ q/ b* E, t, ]. j(1)获取“TEXT”、“MTEXT”或“ATTRIB”图元中的数值 : [1 y! b" a: B8 i8 ?9 k y
3 o9 y. j8 G: ~获取“TEXT”、“MTEXT”(文本标注形式)或“ATTRIB”(属性形式)记录或描述的加工工艺信息的程序设计,其中设namet为实体名。 , j: m' @4 C( H: Y4 I
4 x, [2 s8 T( _+ L+ c6 _% |3 j, a(setq ent (entget namet));获取图元数据
& Q% T* p' O% ?+ ~1 D" M$ Y/ O(if (equal (cdr (assco 0 ent))“TEXT”);判别是否为文本 ! K T( H0 g, D$ T3 I/ v9 f8 |
(setq datum (cdr (assco 1 ent))));是文本则提取数据
; N' N" b$ y3 \7 G" ]- i' \
, N0 \9 M" D0 m; d# d( u若为“MTEX”或“ATTRIB”,则用其图元类型名代替程序中的“TEXT”即可。
; s( x6 R% X& m$ I g3 T, ~' e$ N& z
(2)获取“DIMENSION”图元中的数值
3 w2 E" ^/ p" n' ~& x* Y9 D
1 _: R2 q0 b+ {. ~5 U, _1 Z: ]对于“DIMENSION”形式的标注一种情况是,在尺寸标注时用户键入了尺寸值,其数据值就是跟在组码1后面的组值;另一种情况是,在尺寸标注时用户确认了尺寸测量值,则组码1后面的组值为空(“”),其数据值以“无名块”的形式隐含在“DIMENSION”图元中。无名块的结构与一般的块结构不同,不能用查找“INSERT”图元的方法访问。 . ?) X; d; |6 G2 s% V. ?- s; G
& {) Q' g- o0 J: D, e6 N3 c/ k
获取用“DIMENSION”形式标注尺寸数据的方法有三种:直接提取法,其标注的尺寸是由用户键入的,可采用直接获取组码1后面的组值获得数据;“炸开”提取法,先用“EXPLODE”命令,使“DIMENSION”形式标注的尺寸图元“炸开”,分裂成单个的图元,这时基本尺寸、下偏差及上偏差的数据都变成“TEXT”形式的图元,然后再获取“TEXT”图元组码1后面的组值而获得数据;访问无名块提取法,利用tlbserach函数获取进入无名块的通道,再利用entnext函数获取无名块中的各个子图元,从“TEXT”的子图元获取组码1后面的组值而获得数据。
$ @( |8 e/ T$ ?- R4 p8 {1 k" p u/ ?/ M L2 f
第一种方法是有条件的提取法,有较大的局限性。第二种方法比较简便,可以与“TEXT”的标注方式统一处理;其缺点是破坏了原“DIMENSION”标注的结构,而且“无名块”的“炸开”将增大零件图的存储量,特别是会给以后的图形修改带来很大的麻烦。例如,对一项普通的尺寸标注而言,“炸开”后,尺寸线、尺寸界线、箭头等都将成为独立的图元实体。第三种方法编程较复杂,但保护了原“DIMENSION”标注的结构,尺寸数据仍然按无名块的结构方式储存,既获取了数据信息,又未增加存储量,是一个较好的方法。用第三种方法(利用tlbserach函数)编制的获取工艺信息的程序如下:
8 e' F5 x4 w' ?/ P i u4 ]8 S1 P/ Q: G5 y' o) b h0 c2 I# I
(setq ent (car(entsel))) 0 c; ?/ U1 n) G) F/ e/ {; G1 M
;选择尺寸标注图元,并获得图元名 5 q8 h* ~$ v# ? t. V
(setq entt (entget ent ’(“ACAD”))) 2 d6 [- Z0 q2 n7 N) ^* ^6 ]
;获得图元定义表 ( o) G' d6 c f: ? G$ J
(setq named (cdr (assoc 2 entt))) ! ? z8 a7 u2 P- j! G6 n( k
;获取无名块的块名
b, N$ M. l8 J4 ](setq head (tblsearch “BLOCK” named))
- K- C# ^9 R& _& x5 d' G;取出块头信息
5 y+ ?( ?' Q, q. V, z(setq entname (cdr (assoc-2 head)))
6 @! @6 w. R0 c;取出块中第一个子图元名 $ N$ `4 T+ C2 p% f6 @4 o
(while (/=entname nil);若有子图元则继续 # _. o; M2 A1 Z- V& Y
(setq ent (entget entname)) - x# R! {% N+ M
;取出块中子图元的定义表 2 n, L$ J9 y4 I3 E1 Y& Z2 K; z
(if (equal(cdr (assco 0 ent )) “TEXT”)
3 H( h2 ^7 G$ n* r9 m# r0 w;判别是否为文本子图元 " u+ {" r+ K3 T U! Y9 ~# j
(progn;若为文本子图元则继续
' k' F- v0 x5 B' |. H0 e* y(setq datuml(cdr(assco 1 ent)))
, W2 }+ C% e6 t l6 X3 \7 i;提取文本数值(尺寸数值)
4 M; @8 {4 t1 F, b( R+ |1 }* \* N7 Q(setq entname(entnext entname)) 2 S3 A" N. G- q7 ?" i4 _
;取出下一个子图元名
1 ^2 B- H* O9 d0 m) e7 i(setq ent (entget entname)) 6 @% j8 W7 k3 X0 G( q4 j
;取出子图元的定义表 0 c8 a) {; _* U3 B& [: M) K* [
(if (equal(cdr(assco 0 ent))“TEXT”)
, }8 P$ B" a' e;判别是否为文本子图元
! U4 a8 f; K( ]7 \* |(progn;若为文本子图元则继续 3 [) {7 I* O7 l: a e
(setq datum2(cdr(assco 1 ent)))
* H0 }" {% P4 S4 m. z$ m;提取文本数值(下偏差)
! M: e/ L; j; Q5 A. u( }& R(setq entname(entnext entname))
+ U/ K3 v/ S/ l1 h6 X;再取出下一个子图元名
; g* j$ ~! ^+ K8 k7 {8 c(setq ent (entget entname))
0 w, x1 i, h7 v- T+ ]2 J7 V2 s5 ];取出子图元的定义表
) H4 M" X4 a0 [% n(if(equal(cdr(assco 0 ent))“TEXT”) 4 ~9 r! A( v. y# X
;是否为文本子图元 0 L: P7 d. t" m0 {! [
(setq datum3(cdr(assco 1 ent)))
0 W3 ^. c. n& R/ g9 b) g;是,则提取文本数值(上偏差) 2 o% t5 V5 s: ]( i/ \1 w
);提取上偏差结束
% d& p: \0 U" G6 a5 D3 r) l1 r9 {) + g( Y L3 X& b- C
);提取下偏差结束 / f$ |- N4 F, G/ h& { N: \
) - ]. B) G4 T# ~& S7 q
);提取尺寸数值结束 * r( o J9 k% H. P g9 E
(setq entname(entnext entname)))
0 M( M( W* X# c3 x2 q2 x/ i" V& B;取出下一个子图元名 ) Z% M- C% `, ~. a- @) I
* `5 |- ^+ R5 U9 G0 m6 c(3)尺寸精度的自动转化功能 ; L$ V. p' {' p4 { r
" H8 p$ R/ U, J9 Y) T
本研究中建立了尺寸精度的自动转化功能。在进行CAP时,人们更关心的是尺寸的精度等级而不是具体的数值。根据我国的标准公差规定,我们建立了尺寸精度的自动转化功能模块。该模块用AutoLISP语言设计,能在AutoCAD环境下运行,为实现CAPP提供了方便。 2 j$ ?% d5 N- ]
3 X6 C5 A/ W/ S4结束语
; G9 `; `+ o6 x9 D& n5 Q7 z# \- E: t/ e3 G' j0 i, ~" L
本文研究解决了在原CAD图形数据的基础上,获取加工工艺信息的方法,从中选择了在线的获取方式进行研究。在AutoCAD软件上进行了具体的实施实验,找出了实施中需要解决问题的关键点,为工厂在现有CAD技术资料中获取加工工艺信息、使现有技术资料得到充分的利用、实现CAPP提供了很好的参考。 |
|
|