|
摘 要:- P+ c; k' [/ n X' M/ y/ i
冲模典型结构,是指由标准模架、模具的固定和定位装置及导向装置、卸料装置等组成的一个有机装配体,它是进行模具结构设计的基础。在以往的模具CAD系统中,进行模具结构设计时,往往预先定义好几种典型的模具结构供用户设计时选择
/ S' o" J2 G4 J9 ^' ` F
+ Y3 n. Q5 B$ u+ {冲模典型结构,是指由标准模架、模具的固定和定位装置及导向装置、卸料装置等组成的一个有机装配体,它是进行模具结构设计的基础。在以往的模具CAD系统中,进行模具结构设计时,往往预先定义好几种典型的模具结构供用户设计时选择,然后再在此基础上进行模具结构设计。这虽然大大地减少了设计者的工作量,提高了设计效率,但由于冲模结构的复杂与多变性,又限制了系统的实用范围,也不能让用户进行设计修改,从而降低了设计的灵活性。& ~/ z2 A1 f, |* W" ~
为了满足不同用户的需求,使他们能够方便地自定义所需要的模具结构,并能在设计过程中进行动态的设计修改。本文研究了在参数化技术的基础上,利用变量装配设计方法,建立一个支持层次功能划分,并能方便用户进行动态设计修改的模具装配模型,并以Auto CAD R14为平台,利用面向对象的ObjectARX为二次开发工具,结合MFC库(Microsoft Fundamental Library)予以实现
- }1 u) F! L, Y1 [1 动态设计的关键技术
4 t3 H# L u7 j; r2 w动态设计是在设计变量、设计变量约束、装配约束驱动下的一种可变的装配设计,其中设计变量是定义产品功能要求和设计者意图的产品整体或其零部件的最基本的功能参数和形状参数,设计变量约束即设计约束或变量约束,设计变量和设计变量约束控制装配体中的零部件的形状。装配约束是装配体内各个零部件的配合关系,它确定了零部件的位置。, X! m2 ?, `( ]4 [. n
动态设计的过程是正向设计与反向设计相互结合的过程,所谓正向设计是指从概念设计到详细设计,从而得到装配设计方案的自上而下的设计过程。而反向设计是指对产品设计方案中的一些不满意的地方提出要求或限制条件,结合原有的装配功能要求,通过约束求解对原有的设计方案进行设计修改的过程。
, R2 [. |( r& G; [' `( T实现动态设计的关键技术主要有如下两点:
" | [4 e% _1 o(1)参数化技术。参数化设计为设计者提供了一个动态设计的环境。近几年来,零件图的参数化设计已经比较成熟,这使将参数化方法引入装配设计成为可能。利用参数化技术,不仅可以实现装配图中零部件的动态设计修改,还可以通过装配模型定义装配关系,以一组变量的某种特定的形式或装配特征来表达装配关系,通过尺寸的驱动,在装配图模型的基础上参数化生成装配图。% P0 y$ o# {1 Y, W6 k
(2)变量装配设计理论。变量装配设计理论是一种支持产品功能的装配设计理论,其主要特点有:①支持从上到下的产品形状和功能构想;②支持面向功能的产品设计;③支持动态装配设计。在装配设计中,概念设计、装配设计、零件设计是三个相互交叉的过程。变量装配设计对概念设计产生的设计变量和设计变量约束进行记录、表达、转播,使各个阶段设计主要是在产品功能和设计者意图的基础上进行,它始终是在产品的功能约束下进行和完成的。其设计过程如图1。
# U1 z. j- T, T5 E 9 Z# N/ A+ f! H
2 模具典型结构动态交互设计的实现
, L5 ~. T) c, `) q2.1 设计变量及设计变量约束的表达
; m7 v% |3 m+ l& D+ O D设计变量是实现动态设计的基础,零件的参数化设计及变量装配设计是通过各种设计变量来实现的。设计变量的类表示如下:
# @; p) e' q' e+ }$ i) T class Design Variable:{6 a4 ?8 c' F0 P
char *m_name; //变量名称 8 u0 j: j( V( t* a6 A( J
value_type m_type;//变量类型% i% W; D/ P& C, G7 Y
double m_real; //变量值 . J% ^* V2 [; _* c. u0 a* E8 B1 b, i
int m_int; //变量值) r. U! ~" p# o( D$ k; C/ S; {1 X
Point3d m_point; //变量值
: W) e4 B' D* ?2 X char*m_string; //变量含义0 G/ j& }* G* k
Design Variable *next;}
" q4 ]0 p5 D7 T4 Y* ]在级进模设计中,设计变量约束有如下3种:①等式约束,如上、下模板的Z方向坐标Z2=Z1+H。②限制约束,常为不等式约束。③规则约束,模具设计中的一些经验知识。/ ~) q3 `9 J. d
采用设计变量约束网络(Variable Constraint Network,VCN)来管理设计变量及其表达式。VCN是在模具典型结构的设计过程中逐步建立和完善的,用户可交互的对设计变量和变量约束进行增加、修改、删除等。
2 E( ]; \! }0 I9 q4 \, P2.2 零件信息的表达. [/ X: V0 B& U# N, h/ Y3 [+ H
装配体中相同的零件会出现多次,它们的几何信息、物理特性都相同,不同之处在于空间位置,利用面向对象的方法,可以将零件表达为各个类的一个个对象,这些类存储零件的图形(由块组成)、位置(中心点的坐标(x,y,z)用数学表达式表达)、属性(约束变量值及尺寸大小)。而设计一个零件的过程就是一个实例化的过程。零件的基类表示如下:& Y, J! U9 W- j% k
class Copart:public AcDbEntity{! L- @" ^& j" z$ ]1 I
Char *_instant; //零件的名称
" M' k( D( D, o' f+ ^; }8 m7 N" U; O Point3d mCenter; //零件的定位点" d3 Z4 Q/ M4 y4 L* `* t
AcGe Vector3d mRot; //零件的方向矢量4 B3 i- @% ~2 K' X
AcDbHardPointerID mdef; //零件的信息,如尺寸变量、零件个数等,以CoParDef(见下文)类存储,以对象ID标识
* G0 W; m7 x. L; qAcDbObjectIDArray mEntIds;//组成零件的实体信息,从图块中获得
. a7 d$ x3 w$ U( ^1 V3 S6 UAcDbObjectIDArray mHoles;//零件上的孔的信息,由于级进模的装配关系多为板孔关系,故此信息须记录
* N& I2 I F; f' z- s. ] K0 t: jAcDbObjectIDArray mCons;//零件的约束链,以CoCons类(见下文)存储,以对象ID标识 }
; s) x& t/ q" g! ~# A$ D/ j. R( n存储零件信息(约束变量,尺寸变量等)的CoPartDef类封装了该零件的零件编号、数量、标识及变量表达式等。' B2 T2 {/ ]: t _2 I+ x
2.3 装配约束关系的表达
/ X$ n1 Y4 ]- d6 }0 v在级进模中各零件的装配约束关系主要有以下几点:①接触关系;②依附关系;③装配尺寸关系。8 \6 X5 e! p; {2 u/ q# [) {
在级进模结构中,接触关系和装配尺寸关系相对比较简单,它们用不同的类进行封装,它们共同的基类CoCons表示如下:0 C# R; T- [2 r$ } c" J+ l4 N
class CoCons:public AcDbObject{. M" i9 x3 P7 [0 \+ }' d. i) i
pointerID mBody1,mBody2;//装配关系所约
# H6 t: D, d+ k: N! M" H 束的两个零件或子装配体7 w2 G) l& [, A9 r0 k8 e$ a
pointerID mGeomRefl,mGeomRef2;//约束8 n7 v: j7 u. H+ J, h3 Q! i6 ~
关系的两个图形参考实体
) ~! E. z- C% Y# B }7 m4 w5 }7 n8 M# X" a n, u0 Q
而依附关系较复杂,在模具结构中,依附关系主要为板件上孔、槽等的描述。因此可用特征的隐式表达的方法,通过约束类型以及用变量表达式表示的约束参数来描述依附约束关系。当建立两个零件之间的约束关系时,包括约束关系链的一方称为拥有者(Owner),另一方称作连接者(Connector)。当任一方被删除后,它们的约束关系也被删除。在模具结构中,孔的类型主要有通孔、带螺纹阶梯孔、螺纹孔、盲孔、阶梯孔、凸、凹模的型孔等。通过总结,可将这些建立成装配约束关系库,系统可根据装配关系库自动建立零件间的约束关系。下面为约束关系的一个实例,通孔(如图2)的描述:+ q6 [7 K3 b/ w6 K+ b
Relation(弹簧、凹模垫板)
! J! ?: T- ?. i4 ?2 j* v9 W {) h9 e) K" n# I5 ~& p6 r3 |( C0 g- {
Owner:弹簧(ID6)1 f! z9 P* R2 n) c
Connector:凹模垫板(ID3). h- s* t* A& }4 K7 r6 p7 l. m
Type:通孔2 z% F3 r1 e0 _. s4 z- a% j
Paremeters:{& u5 {" K, l8 R1 r: A
Center=[rxof(ID6),xyof(ID6),rzof(ID3)];
" Q; b* Q5 n5 p2 F# z4 bNdir=[0,0,1];D=max(D1∷ID5,D∷ID6);H=T∷ID3;}}( j, u% W5 ^9 ]
% V1 d3 n4 T2 v2 I1 D- y& l" l; o0 l2.4 动态设计及其约束求解1 O J7 z- \/ h0 @7 t
正向设计的过程为:先进行概念设计,确定模具的总体结构,从模具装配图库中调出相应的典型模架装配图,在此基础上,对装配图上的零件进行功能与形状设计,同时进行装配关系的定义(即贴合、同心、依附等)及修改,对所选零件的各个视图进行参数化驱动或其它操作,并求解约束,约束求解采用动态变量约束求解。如设计方案中的一些不满意,则须进行反向设计,如涉及到增加或删除约束,则对VCN进行动态变量约束求解;如只需要进行修改零件的尺寸或设计变量,则选择需要进行修改的零件,然后根据所选择零件的约束,进行约束求解,并对相关零件进行设计修改。5 ?: t" ~6 U( h: X" e$ t
所谓动态变量约束求解,即在建立VCN过程中,每输入一个设计变量约束,如已知条件可以充分满足该设计变量约束,就求解该约束。在此采用了分类分步分解的求解策略,将等式约束和其他约束分类进行分步处理,依次求解部分可解约束、循环处理,并应用序列分解方法选择可解约束和决定约束求解的顺序。等式约束的序列分解算法如下:8 E- `6 q! i* s( X Q% a' i0 L, I
(1)把所有等式约束表达成一个邻接矩阵M1,行表示等式约束,列表示设计变量,‘1’表示某设计变量出现在所有行的等式约束中,‘0’表示没有出现。初始化一个堆栈S1。# l5 a$ b+ H3 _' h: ~
(2)找出M1只含一个设计变量(对应只有一个‘1’)的行,如果没有,则不可顺序求解,转入(4)。
' k- s! H3 y) q(3)对只含一个设计变量的行,读取该行的等式约束指针,并压入堆栈S1,从矩阵中去掉该行,去掉含此设计变量的列,继续(2)。) G1 H1 z% k% [" b
(4)求解S1中的等式约束所组成的方程组,返回。
" I) a& [4 Y5 o7 {& G+ M" Q$ h当等式约束不可能再进行序列分解处理时,则需要进行方程组的联立求解,其它类型的约束也可用以上类似的方法进行处理。& ]; {% f/ `+ V6 R
而反向设计中,如涉及到约束的增加或减少,也可对VCN进行动态变量约束求解。如约束不变,只是变量值发生了变化,则采用的约束关系的求解算法如下(如图3):$ k' `4 }, o6 {6 i2 F, x) z4 M5 U0 x
(1)找到零件P1的约束链;
6 F1 c# r0 `1 b5 S# f(2)依次取约束链中的约束关系,得到约束关系记录的连接者Pc,如已到链尾则转(5);
5 l5 _# ?9 [- x(3)如Pc的约束链中存在P1,则约束有效,转(4),否则继续(2);
5 ?. S6 w6 v) e4 B) P$ w
) K1 E5 u- c& ?9 G* Y(4)根据约束中记录的约束参数,求解变量表达式,得到相应的图形;
- y8 r. [; B5 ~3 S, C(5)依次取Pc中连接者ID链中每一个ID,取得零件PID,从PID的约束链中得到相应的约束关系,同样进行(4)。1 k' o9 O) Q( k2 T
3 结束语) m/ K: {/ c9 y- h& J% X& q* v
采用以上的装配信息的表达方法,正、反向设计相应的求解策略及面向对象的程序设计方法,在模具典型结构设计中,零件及子装配体的定义、存储、管理、操作,装配关系及约束变量的表达及求解将更加方便,这就给典型结构的动态交互设计奠定了基础。同时,也就能更好地利用MFC的可视化技术,使用户能方便地进行交互的定义模具典型结构,并能进行动态设计及修改 |
|