王平 刘德仿 花锋 李青祝 周临震 }-8ZSWog6f
Ki_8g
1 引言 Ce%fz~*b
ZY Ci&l
目前,尽管三维CAD软件(如UG/NX、Pro/E及CATIA等)在国内众多企业中得到了广泛的应用,但利用计算机进行设计出图,并根据图纸指导生产依然是大多数企业应用CAD系统的主要方式。由于工程图中有大量的标注符号(尺寸、公差、技术要求等),因此,在工程图制作过程中(尤其对于复杂的工程图),不可避免要产生错误,从而使得图纸不符合工程图纸的原意,进而传递错误的设计信息。为有效地保证产品工程图质量,开展工程图质量验证技术研究,就显得尤为重要。国内外学者在相关方面也做了较多的研究,如:Dave Elliman[1]对工程图中线及圆弧的识别方法进行了研究,并提出了相应的实现算法;S. Ablameyko等[2]结合实例研究基于工程图的三维模型构建技术及实现方法;杨若瑜,胡笳等[3,4]将工程图中所有符号的几何特征转换为一个约束网络,实现了基于约束网络的工程图符号识别方法,并对工程图对象规则自动获取方法进行了研究;王为光、王知衍[5]讨论了模型的外观和轮廓校对,为实现模型校对提供了一个图形化的系统集成环境等等。但对于基于规则的产品工程图质量验证理论及实现技术的研究则甚少,本文基于UG/NX平台,在UG/NX Check-Mate框架下,运用UG/KF,通过将工程图国家标准或企业标准描述成不同的工程规则,并运用这些规则,对工程图进行验证,以确定工程图是否满足这些标准,进而达到对工程图质量进行控制的目的。同时,由于工程图规则是以类的形式表示的,所以可有效地对规则进行组织和管理。文中着重讲述了UG/Drafting模块下,图形元素的识别、工程图规则的分类、工程图规则的KF表示、工程图规则的管理及基于规则的产品工程图质量验证过程。最后以产品工程图中剖切符号验证为例进行了说明。 fZ6"DJZ
g/v"E+
2 基于规则的产品工程图质量验证模型 G$HXc$OY
VBe.&b8
基于规则的产品工程图质量验证,就是通过验证产品工程图规则,以判断工程图是否符合要求(如国标或企业标准等),进而达到验证产品工程图质量的目的。这一过程可表示为: r: :LQ$
S7fX1y[
Drawing_Quality_Verification: L=V(R) >I^_kBa
S.t. rule1,rule2,…,ruleN (uk-c~T!u
ow!NH,'Hy
其中:L为最终的产品工程图,R为待验证的产品工程图,V为验证工程图规则,若发现错误,则报错,并提示设计人员,rule1,rule2,…,ruleN为产品工程图建立规则。 UOwEA9q%
+l8`oQuG
3 UG/Drafting 下的图形元素及识别 ha -KfkPFE
zQNkjQ{mx
UG/drafting是美国UGS公司大型CAD/CAM/CAE/PDM软件UG/NX中的工程图设计模块,其工程图数据是直接从三维模型数据库中得到的。不仅可生成与三维模型相一致的工程图,并保证随着实体模型的改变而同步更新工程图尺寸,减少因模型改变工程图更新所需要的时间,而且能高效地完成工程图的管理、视图的操作、尺寸标注、注释与标签、公用符号、几何公差符号、识别符号、自定义符号、剖面、基准尺寸等制图对象的操作和与之有关的设置。 / ~\ I
),u)#`.l
G
在UG/NX平台上,工程图的图元对象标识主要采用:标签(Tag),Tag在UG/NX运行过程中保持唯一性,当系统退出再次打开该工程图之后,同一个图元对应的Tag则将被重新赋值。而图元对象的识别可通过UG/KF,UG/KF是UG /NX软件系统提供的基于KBE思想的开发工具,其KF语言是一种面向对象的语言,它支持类,继承,封装的思想,不需要编译,可直接调用,能与UG/OPEN相互调用,即UG/KF可以调用UG/OPEN编写的方法函数,同时,UG/OPEN也可以通过查询接口,修改和创建UG/KF内部对象。UG/KF提供了大量的工程图图元特征识别函数,可完成对工程图图元的特征识别。如函数: Munal=wL
i;GF/pi
mqc_askEntities(DIMENSION)/* 得到所有尺寸Tag */ zZ11J0UI
mqc_askDrawingViewScales() /* 得到所有视图名和比例 */ 8qi6>}A
mqc_askDimensionText()/* 得到所有尺寸文本 */ e71dNL'$
mqc_askNoteText() /* 得到所有注释文本 */ HL*Fs /W
mqc_askAnnotationTextProperty() /* 得到所有标注文本属性 */ XX:?7:j}[8
mqc_askAllDrawingNames() /* 得到所有工程图名 */ &0='z
mqc_askWorkViewName() /* 得到工作视图名 */ {|Pg]#Wi&
…… )A6 eD
\ O#6H5F
对于KF中没有提供的图元识别函数,可自行编写相应的函数,然后通过KF调用该函数即可。 f#mcWL1}
MMYV8;c
4 工程图规则分类及其表示 9jC>OZ0s
ee+*&CT)
4.1 工程图规则分类[6] ER ^#J**
J_H=GHMp}
(1)图纸幅面及格式 K\2UwX
.e,(}_[[<
表示图纸的基本幅面、图框尺寸及标题栏。其中图纸幅面主要有A0,A1,A2,A3,A4。 y_F{C 9KE
:qQpBr$
(2) 比例 NPFrn[M$
f L}3I(VK
表示图形与实物对应要素的线性尺寸之比。 有原值比例1:1、缩小比例(1:1.5、1:2等)及放大比例(2:1、2.5:1等) d;-/F b{4
j18qY4Gw)
(3)字体 !jIpgs5
a0]n>C`~
在图样上除了表示机件形状的图形外,还要用文字和数字来填写标题栏,说明机件的大小、技术要求和其它内容。 yL#bZ9W
}
c2aW4TX2
(4)图线及其画法 p903*F^[,
06dk K)`
机件的形状是用各种不同粗细和线型的图线表达的。如对可见轮廓采用粗实线、不可见轮廓采用虚线及对于轴线和对称中心线采用细点画线等。 yl#(jb[?1
|1@/gqa
(5)尺寸注法 NdlJdq
e9 `n@
主要包括尺寸界线、尺寸线、箭头及尺寸数字的注法等 N!u(G
[It
E+{U
(6)简化注法及其它标注形式 9\aR{e,1
wP <)
主要是指国标规定的一些简化注法和其它标注形式。如在同一个图形中,对于尺寸相同的孔、槽等组成要素,可仅在一个要素上注出其尺寸和数量等。 =WYI|3~Cz
FuKp`T-H
4.2 工程图规则的表示 lg(*:To3B
~G;lEp
有效的工程图规则表示是实现基于规则的产品工程图质量验证关键。KF作为UG/NX软件内嵌的面向对象的知识解释性语言,支持产生式规则表示法、框架表示法及面向对象表示法,设计人员借助于KF可方便地以类的形式定义创建工程图规则,下面就产生式规则和面向对象工程图规则的KF表示加以论述。 >C1**GQ
k$u/6lw]IB
(1) 产生式工程图规则的表示 VEuT!^0Z
Y@+e)p{
工程图规则的表示,不仅要能够实现纯符号的逻辑判断,而且还能支持表达式运算,以便数值运算问题。为此,宜采用BNF(Backus-Naur-Form)的规范方式表示。其规则表示形式为: ,dG2[<?o
F_?aoP&5
<规则>∷=(IF{<条件>} THEN {<结论>}) :JEzfI1
<条件>∷=(<表达式>∣<事实>) e{~3&
<表达式>∷=({<变量><谓词><属性值>}) ~`<(T)rs
<事实>∷=({<事实项>}) -S ASn
<谓词>∷=(< > = + - * / sin、cos、tg、log …) 2[ #7YWs
<属性值>∷=({<变量>∣<数值>}) k6pXc<]8
<结论>∷=({<陈述>∣<操作>}) #:Tb(R
<陈述>∷=({<陈述项>}) ks=l
Nz9
<操作>∷=({<操作函数>}) Q|O! cEW/
w,<nH:~
运用KF表示产生式工程图规则时,可将规则存储于.dfa文件中。例如: ^D{!!)O
D(m2^\O[
(Name Parameter) Line_type: thick; <ah!!
(list)Line_type_list: {Thick, Thin, Normal}; RO]Vn]qb
(Any Uncached) do_check: 8w:A""
@{ $all_curve << mqc_askEntities(_curve) SXA`o<Ma
If(Line_type=Nth(1,Line_type_list)) vp4l g1/
Then Donothing i"#36CVT~
Else /]mfI&l+9
ug_mqc_log( LOG_WARNING, { $all_curve }, “find different line type curve” ); p\7(`0?8VN
}; sI@y)z
c']3N
(2)面向对象的工程图规则表示 6zJ<27
r fl-(_3
面向对象的工程图规则表示法较适合对具有层次结构的规则进行表示。通过类、子类、对象构成规则层次结构。通过抽象、封装、继承及多态机制支持分类规则的表示。通过类描述工程图规则的一般形式为: aBH!K
2itJD1;
# 类定义 (.:!_OB0N
DefClass: <类名> (<父类>); 4490l"
# 属性定义 (sXR@Ce$
(Data_type Behavioral_flag1 Behavioral_flag2 ...) Attribute_Name: Rule; (4hCT*
# 方法定义(Method Return Type) id:( type1 $var1, …) @{Statements…}; Y6>@zznk
# 函数定义 2]$
7
Defun: id(arglist) block Return Type; Jj_ t0"
fG+/p 0sJ?
5 工程图验证规则的管理 lf<