摘要:本文结合具体实例对二三维一体化CAD系统中,工程图纸的自动生成技术进行了深入的探讨,给出了剖切视图和复杂视图的具体算法,并介绍了二、三维双向关联和互驱动的相关技术。
1 引言
随着CAD基础理论和应用技术的不断发展,对CAD系统的功能要求也越来越高。设计人员不再仅仅满足于借助CAD系统来达到“甩图版”的目的。而是希望它能从本质上减轻大量简单烦琐的工作量,使他们能集中精力于那些富有创造性的高层次思维活动中。由于三维CAD系统具有可视化好、形象直观、设计效率高、以及能为CIMS工程中各应用环节提供完整的设计、工艺、制造信息等优势,使其取代传统的纯二维CAD系统已成为历史发展的必然。但是,由于经济实力、技术水平和习惯定势等的影响,二维图纸不仅不会在短期内全部消亡,反而还会作为工程语言的载体长期存在并不断发展。
据统计,从目前我国机械行业的CAD应用状态来看,基本呈现三角形结构。占据三角形底部的是已被广泛应用的基于PC平台的二维CAD系统,如:AutoDesk公司的AutoCAD系列,国内华正的CAXA电子图版、高华的GHCAD、凯思的PICAD等均拥有大量用户群。高居三角形顶端的是少量基于UNIX工作站的纯三维CAD系统,如:Euclid, Catia, Pro/E,SDRC/I-DEAS等高端产品。主要被一些大中型企业所采用,但因其价格、系统开放性、软件本地化特性和用户素质要求等众所周知的限制,多数企业并未使其发挥应有的作用。从企业应用的实际需求和市场分析来看,今后CAD的用户类型分布将发展为:
◆从事纯二维绘图和设计的约占25%,以适应上下游厂商对二维图形数据的需要。
◆从事纯三维设计的将小于25%,集中用于大型装配设计和复杂工程分析。
◆既从事二维绘图又从事三维设计的将大于50%,广泛用于零部件及其一般装配设计和分析。
目前国内外各大CAD供应商也都看到了这一发展态势,相继推出PC平台的二、三维一体化系统解决方案。由此可见,研究基于PC平台的二、三维一体化CAD系统软件技术将具有广阔的市场前景和现实意义。而根据三维CAD的模型数据源自动产生二维图纸信息是其中一个重要研究方向。本文对基于三维CAD模型数据源自动生成二维图纸和二、三维相互关联等相关技术进行了深入的探讨。并在国产二、三维一体化CAD系统“金银花2000”中予以实现。
2 二三维一体化系统简介
当用户使用二、三维一体化CAD系统进行机械产品的设计时,首先在三维环境下开始设计工作,在“变量化的三维特征造型系统”的支持下,三维零件的设计变得即直观又快捷。伴随着零件的设计过程,三维统一模型数据源(在SDRC的I-DEAS系统中也称之为“主模型”)也就同时生成。利用这一数据源可进行装配件设计和许多后期试制工作,如进行干涉检查、物性计算、机构分析、运动学和动力学分析、真实感显示等等。当然,该数据源也是生成二维工程图纸的唯一数据来源。三维统一模型数据源不仅包括模型的几何和拓扑信息还包括特征、尺寸、公差、属性、关系等信息。因此在生成图纸时,不仅可以自动产生各种二维视图等几何数据,同时也可根据用户需求生成各种标注和属性数据。由于采用了统一模型数据源,为维护模型数据的一致性,三维模型的更改必须保证二维视图和标注的更新,反之,对二维投影几何和尺寸的改变也必须更新三维模型,即:实现二、三维联动,这也正是二、三维一体化CAD系统的本质所在。
3 二维图纸自动生成
我们知道,一张传统的二维图纸上主要包括以下几类信息:
◆点、线、圆、样条曲线等各种几何元素
◆尺寸、公差、粗糙度、基准符号、焊接符号、零件标号和文本注解等标注信息
◆标题栏、明细表、参数表等表格数据
其实,二维图纸自动生成也主要集中在这几方面。其中几何元素是以视图方式进行创建和管理的。因此,以下主要研究视图、标注、属性三个方面的自动生成技术。
3.1 视图自动生成
3.1.1 视图分类
当前国内外PC平台二、三维一体化CAD系统中一般将视图分为如下几类:基本视图、向视图、剖切视图、截断视图、局部放大视图等。
其中剖切视图又可分为阶梯剖、展开剖、旋转剖(展开剖的一种特例),结果可为剖面图和剖视图。这种分类方法概念清晰,实现自动生成较为简单,而且也能满足大多数用户的需要。但在实际工程表达中视图是很复杂的,以上分类和生成方法并不能完全满足用户的需要。(如图5中这些视图我们在图纸中经常可以遇到,但目前市面上的该类CAD系统对自动生成它们大都无能为力,对这类视图用户往往不得不采用以前纯二维系统的老方法--徒手绘制。本文提出“分割视图”的概念并将视图按图1所示分类,通过分割视图,用户可以随心所欲的创作出理想的视图表达方式,包括由以上各种视图组合而形成的组合剖切视图和局部剖切视图,半剖视图等等复杂形式(详细说明见后),从而彻底解决了二维视图的自动生成问题。
3.1.2 视图生成算法
二维视图自动生成的基本原理是:三维实体在某一个观察方向上经过消阴计算和投影变换后,转换到二维视图坐标中。观察方向和视平面参数是由所要生成的目标视图确定的。由于视图种类繁多,因此自动生成算法也不尽相同,但基本流程是一样的。如图2所示:图中矩形虚线框内为生成基本视图和向视图的原理图也是其它各种视图生成时必经的过程,右边是产生剖切视图的原理图。以下分别进行说明:
(1) 基本视图:是指那些不需要依赖于任何父视图直接将三维实体在某一观察方向上消阴并投影变换而成的视图。例如:常见的主视图、俯视图、左视图、右视图、上视图、下视图以及轴测图等。这些视图均含有明确的投影方向信息。假设世界坐标系(OXYZ)如右图3所示:如果用户希望沿X轴负向看去得到图中长方体的主视图,只要将矢量Vec1(-1,0,0)作为主视图的投影方向,YOZ平面作为视平面,Z轴作为向上Up矢量就可得到理想的结果。(其中xoy为二维视图坐标系)
当然,实际算法要复杂一些,因为三维消阴后,产生的是离散线段,必须先经过拟合处理(具体方法可参阅参考文献[2])才能投影;在投影构造视图中的几何元素时,必须同时考虑原三维对应几何点、边、面的属性问题。比如:在二维线段中记录对应三维边、面的ID号以便修改模型重建视图几何时能匹配相关的标注信息;记录对应三维边、面的可见属性以确定是否用虚线表示物体的内部结构等。
(2) 剖切视图:是指用一个或几个相交平面(特殊情况下也可能是曲面)切开三维实体,然后在指定方向上投影并进行剖面填充所生成的视图。这些相交平面(又称剖切平面)可以由用户在三维设计环境中创建,然后用来切分三维实体,这样比较直观。但在实际应用中,这种做法对用户反而不太方便,因为用户在进行二维设计时,更希望直接在图纸上描述出剖切方式,由系统自动产生所要的剖切视图。鉴于此,我们为用户提供了直接在二维视图内创建剖切线生成剖视图的方法。剖切视图创建流程见图2。下面通过一个实例(见图4)介绍剖切视图生成的具体算法。假定用户已用前述基本视图创建方法在图纸中生成了视图view1,然后在view1中画一条直线line1(也可以是多段直线和曲线的组合等),欲用line1自动切开实体产生剖切视图A-A,具体算法如下:
1) 得到view1的(视点eye,目标点target,up矢量)等投影参数;
2)计算实体从三维视平面投影变换到二维视图view1所进行的投影变换(cTrans1)和视窗变换(CTrans2),则三维到二维的总变换:
cModelToViewTrans = cTransf1 * cTransf2;
3) 由于二维视图view1中剖切线A-A是由直线段line1构成,只要将line1从view1中变换到三维视平面即可。假设该变换为cViewToModelTrans,显然cViewToModelTrans就是cModelToViewTrans 的逆变换,即有:
cViewToModelTrans = cModelToViewTrans.Inverse( );
4) 设line1变换到三维视平面后如图示为LINE1,则有:
LINE1 = line1 * cViewToModelTrans ;
5)同时将剖切线A-A的方向矢量vec1也变换到三维视平面即投影方向VEC1;
6) 将直线边LINE1沿图中扫描方向VEC2扫描形成一平面FACE1;
7) 用FACE1与原三维实体BODY1进行布尔运算,即用FACE1将BODY1剖切成上下两部分;
8)根据VEC1的方向决定保留下半部分实体BODY2,删除另一部分;
9) 在剖切面(即图中BODY2的上表面)内搜索出边环并记录;
10)根据用户指定的视图定位点和投影方向VEC1等信息,创建新的剖切视图view2;
11) 对BODY2在视线方向上消阴、拟合并投影到BODY2到视图view2中,产生所有投影几何,并根据三维边属性对投影几何赋属性值;
12)将剖面线边环同时投影到视图view2中并填充剖面线。
以上是产生普通剖切视图的算法,对于复杂视图还需要对算法做局部修改。对于装配件在填充剖面线时还必须区分不同零件分别填充。
(3) 分割视图:是指在基本视图或剖切视图的基础上继续剖分或切割而产生的视图。由于所选父视图的种类各异、分割线的构成和方向不同、以及生成过程中的不同选项的组合可产生各种复杂视图,如:半剖视图,局部剖切视图,局部视图等。
分割视图的生成方法与剖切视图基本一致,但是在上述算法的步骤7)处布尔运算得到的两部分实体并不是简单的按照8)的方式保留一部分删除另一部分。根据选项对两部分进行不同的处理(如:一部分直接投影,另一部分进行剖面填充)即可生成不同视图种类,图5是用此方法自动生成的几种分割视图的例子。
(4) 其它视图:主要包括局部放大图、截断视图等,这些视图的生成方法与剖切视图也很相似,差别也主要集中在剖切后对实体的处理方式不一样,此不再赘述。
3.2 标注自动生成
用户在设计三维零部件的同时一般也会添加尺寸、标注公差、粗糙度等,这些几何参数和加工要求信息与几何、拓扑信息同等重要。图纸设计时用户当然不愿意再去重复这些枯燥的操作,因此一个好的系统也应该提供自动生成标注的能力。
生成标注的基本思路可概括为:一一对应、投影赋值、符合国标。一一对应是指二维标注与三维标注应该是对应的;投影主要是指标注符号的几何表示应该从三维中投影到二维视图;赋值即将尺寸的数值,公差、粗糙度的大小、类型等不变数值直接传给对应的二维标注。由于图纸中的各种标注必须符合国标,因此投影赋值后系统还必须进行一些标准化处理和调整才能生成既与三维标注对应又符合国标的二维标注。
由于尺寸的数量一般相对较多,在投影和标准化处理后还要考虑综合布局的问题,使得尺寸间尽量无重叠、无干涉、分布清晰合理。
3.3 属性值的生成
属性值主要指边、面的唯一索引ID号、边是否为相切边或阴影边、特征是否已隐藏、装配件中相同零件或标准件的个数、零件的材料加工要求等等参数。这些参数在投影生成视图几何的过程中赋值(在上面基本视图部分已经提到)。虽然属性值的生成方法比较简单,而且对用户来说一般也是透明的,但作为系统设计和开发人员如果能充分利用它们,就可大大提高图纸生成和重建的准确率。有些数据对于自动填充明细表、生成BOM报表以及标注零件标号也是非常重要的。
4 二、三维双向关联
由于二三维一体化CAD系统采用了统一模型数据源,图纸中的绝大多数信息都是根据三维模型自动生成的。因此二三维之间是一致的、相互关联的。当任何一方模型改变时,系统将向另一方发送更新消息,然后自动同步更新(当然,用户也可根据需要选择放弃更新的操作)。对于设计人员来说,为了在设计后期细化、更正自己的设计意图,或进行变异设计等,一般只需要在二维或三维环境下简单的修改某些尺寸参数,系统就可以自动更新所有相关零部件或图纸。尽管操作很简单,但重新生成的算法实现是很复杂的。我们在系统中采用唯一ID号的方式在重建过程中对几何和标注等信息进行逐一匹配,实践证明,效果相当理想。限于篇幅,其具体算法另文阐述。
5 结论
随着PC机图形图象显示和处理能力的增强以及CAD软件基础技术的发展,基于PC平台的二、三维一体化CAD系统因其采用统一的数据模型、二、三维的相关联动、友好的用户界面和低廉的成本赢得了设计人员的普遍欢迎。工程图纸的自动生成与传统的二维绘图系统相比可极大的减轻设计人员的负担和提高产品的设计效率。本文对工程图纸的自动生成这一技术进行了深入的探讨,给出了一些具体算法,并在商品化CAD系统中全部予以验证和实现,对于开发此类CAD系统有很好的指导意义。
参考文献
1 范玉青、冯秀娟、周建华。CAD软件设计。北京航空航天大学出版社 1996.9
2 评测专家组。三维CAD/CAM软件评测总结。计算机辅助设计与制造。1999(5)
3 袁波、周昀、胡事民、孙家广。基于三维模型的二三维一体化设计。计算机辅助设计与制造。1998(6)
4 邵东。迎接MDA规模应用的时代。SDRC中国通讯