蒙凡胜 温建勇 李建军 肖祥芷 |
1 引 言
3.1 设计变量及设计变量约束的表达 设计变量是实现动态设计的基础,零件的参数化设计及变量装配设计是通过各种设计变量来实现的。设计变量的类表示如下: class Design Variable:{ char *m_name;//变量名称 value_type m_type;//变量类型 double m_real;//变量值 int m_int;//变量值 Point3d m_point;//变量值 char*m_string;//变量含义 Design Variable*next;} 在级进模设计中,设计变量约束有如下3种:①等式约束,如上、下模板的Z方向坐标Z2=Z1+H。②限制约束,常为不等式约束。③规则约束,模具设计中的一些经验知识。 采用设计变量约束网络(Variable Constraint Network,VCN)来管理设计变量及其表达式。VCN是在模具典型结构的设计过程中逐步建立和完善的,用户可交互的对设计变量和变量约束进行增加、修改、删除等。 3.2 零件信息的表达 装配体中相同的零件会出现多次,它们的几何信息、物理特性都相同,不同之处在于空间位置,利用面向对象的方法,可以将零件表达为各个类的一个个对象,这些类存储零件的图形(由块组成)、位置(中心点的坐标(x,y,z)用数学表达式表达)、属性(约束变量值及尺寸大小)。而设计一个零件的过程就是一个实例化的过程。零件的基类表示如下: class Copart:public AcDbEntity{ Char *_instant;//零件的名称 Point3d mCenter;//零件的定位点 AcGe Vector3d mRot;//零件的方向矢量 AcDbHardPointerID mdef; //零件的信息,如尺寸变量、零件个数等,以CoParDef(见下文)类存储,以对象ID标识 AcDbObjectIDArray mEntIds;//组成零件的实体信息,从图块中获得 AcDbObjectIDArray mHoles;//零件上的孔的信息,由于级进模的装配关系多为板孔关系,故此信息须记录 AcDbObjectIDArray mCons;//零件的约束链,以CoCons类(见下文)存储,以对象ID标识} 存储零件信息(约束变量,尺寸变量等)的CoPartDef类封装了该零件的零件编号、数量、标识及变量表达式等。 3.3 装配约束关系的表达 在级进模中各零件的装配约束关系主要有以下几点:①接触关系;②依附关系;③装配尺寸关系。 在级进模结构中,接触关系和装配尺寸关系相对比较简单,它们用不同的类进行封装,它们共同的基类CoCons表示如下: class CoCons:public AcDbObject{ pointerID mBody1,mBody2;//装配关系所约 束的两个零件或子装配体 pointerID mGeomRefl,mGeomRef2;//约束 关系的两个图形参考实体 } 而依附关系较复杂,在模具结构中,依附关系主要为板件上孔、槽等的描述。因此可用特征的隐式表达的方法,通过约束类型以及用变量表达式表示的约束参数来描述依附约束关系。当建立两个零件之间的约束关系时,包括约束关系链的一方称为拥有者(Owner),另一方称作连接者(Connector)。当任一方被删除后,它们的约束关系也被删除。在模具结构中,孔的类型主要有通孔、带螺纹阶梯孔、螺纹孔、盲孔、阶梯孔、凸、凹模的型孔等。通过总结,可将这些建立成装配约束关系库,系统可根据装配关系库自动建立零件间的约束关系。下面为约束关系的一个实例,通孔(如图2)的描述: Relation(弹簧、凹模垫板) { Owner:弹簧(ID6) Connector:凹模垫板(ID3) Type:通孔 Paremeters:{ Center=[rxof(ID6),xyof(ID6),rzof(ID3)]; Ndir=[0,0,1];D=max(D1∷ID5,D∷ID6);H=T∷ID3;}}
正向设计的过程为:先进行概念设计,确定模具的总体结构,从模具装配图库中调出相应的典型模架装配图,在此基础上,对装配图上的零件进行功能与形状设计,同时进行装配关系的定义(即贴合、同心、依附等)及修改,对所选零件的各个视图进行参数化驱动或其它操作,并求解约束,约束求解采用动态变量约束求解。如设计方案中的一些不满意,则须进行反向设计,如涉及到增加或删除约束,则对VCN进行动态变量约束求解;如只需要进行修改零件的尺寸或设计变量,则选择需要进行修改的零件,然后根据所选择零件的约束,进行约束求解,并对相关零件进行设计修改。 所谓动态变量约束求解,即在建立VCN过程中,每输入一个设计变量约束,如已知条件可以充分满足该设计变量约束,就求解该约束。在此采用了分类分步分解的求解策略,将等式约束和其他约束分类进行分步处理,依次求解部分可解约束、循环处理,并应用序列分解方法选择可解约束和决定约束求解的顺序。等式约束的序列分解算法如下: (1)把所有等式约束表达成一个邻接矩阵M1,行表示等式约束,列表示设计变量,‘1'表示某设计变量出现在所有行的等式约束中,‘0'表示没有出现。初始化一个堆栈S1。 (2)找出M1只含一个设计变量(对应只有一个‘1')的行,如果没有,则不可顺序求解,转入(4)。 (3)对只含一个设计变量的行,读取该行的等式约束指针,并压入堆栈S1,从矩阵中去掉该行,去掉含此设计变量的列,继续(2)。 (4)求解S1中的等式约束所组成的方程组,返回。 当等式约束不可能再进行序列分解处理时,则需要进行方程组的联立求解,其它类型的约束也可用以上类似的方法进行处理。 而反向设计中,如涉及到约束的增加或减少,也可对VCN进行动态变量约束求解。如约束不变,只是变量值发生了变化,则采用的约束关系的求解算法如下(如图3): (1)找到零件P1的约束链; (2)依次取约束链中的约束关系,得到约束关系记录的连接者Pc,如已到链尾则转(5); (3)如Pc的约束链中存在P1,则约束有效,转(4),否则继续(2);
(5)依次取Pc中连接者ID链中每一个ID,取得零件PID,从PID的约束链中得到相应的约束关系,同样进行(4)。 4 结束语 采用以上的装配信息的表达方法,正、反向设计相应的求解策略及面向对象的程序设计方法,在模具典型结构设计中,零件及子装配体的定义、存储、管理、操作,装配关系及约束变量的表达及求解将更加方便,这就给典型结构的动态交互设计奠定了基础。同时,也就能更好地利用MFC的可视化技术,使用户能方便地进行交互的定义模具典型结构,并能进行动态设计及修改。 |