基于复杂工程图的三维造型草图生成算法

2013-09-21 09:54牛玉荣
图学学报 2013年6期
关键词:图元工程图草图

刘 虹, 倪 冬, 仇 静, 牛玉荣

(合肥工业大学机械与汽车工程学院,安徽 合肥 230009)

当前,随着众多主流三维几何造型软件的迅速发展以及相互之间激烈的市场竞争,使原来仅有少数大型企业使用其来进行产品设计,逐渐发展到越来越多的中小企业也开始使用。然而,无论是大型企业还是中小企业都会存在大量的二维工程图,如何将现有工程图自动高效的转换为三维图是一个难题。根据工程图存贮方式不同,工程图三维重建又分为两个方向:一是如何将现有纸质工程图转为电子图[1],这对于具有历史的企业是很有意义的,但工程图样的矢量化是一个难题,也是很费时的过程;二是将现有电子工程图(下文所提工程图均指电子工程图)转为三维实体模型,虽然现在已经有大量关于从二维工程图自动转为三维实体模型的研究[2-4],并且也取得了显著的成果,但往往仅限于标准三视图和一些其他限制,并不能满足复杂多变的实际工程图。因此,对于现有工程图的三维化仍主要依靠人工绘制,但人工绘制是一个很耗费时间的过程,尤其是对于不熟悉该工程图的人,这将只会事倍功半。为了寻求解决办法,通过绘制大量工程图的三维模型并且分析其中主要过程,找出了耗费时间比较多并且与工程图密切相关的一个过程——草图建模。企业的产品大部分是系列化的,使用草图建模可以对构成特征的曲线轮廓进行参数化控制,便于修改,所以进行三维建模时大多使用草图建模。因此,只要将工程图自动转化为草图,就可以省去大量创建草图的时间,从而缩短工程图三维化的周期。虽然现有三维软件自带导入二维工程图模块,但仍然存在一些问题。例如,UG中导入DWG /DXF模块所导入图不能生成模型历史记录,不便于修改,并且只是简单地将整个工程图导入到一个平面内,没有分割视图和折叠视图;SolidWorks中该模块虽然有分割视图和折叠视图,但都是需要人机交互的,即选择视图中图元和指定视图平面,并不能完全自动完成;Inventor中该模块也需要人机交互。

针对以上问题,提出了一种三维造型草图生成算法,实现完全自主地分割视图和折叠视图,并在UG NX6.0中开发了基于多视图的草图建模模块,解决了三维建模中因需要人工参与看图、识图以及绘制草图而耗时的难题。

1 三维草图生成算法概述

如今,现有三维几何造型软件功能越渐强大,但对于自动地从二维工程图转为三维实体模型仍然存在相当大的难度。为了能提高工程图的三维化效率,采取了一种折中的方法,即将草图绘制过程实现自动化,并在 UG6.0环境下利用UG/OPEN API建立了三维草图生成算法。该算法主要分4个子算法阶段:

1) DXF数据信息提取阶段,过滤除实体信息和图层信息以外所有信息;

3) 折叠视图阶段,将得到的各个视图平面法向量存入视图类中;

4) 草图绘制阶段,调用视图类中相关信息,绘制草图。

接下来将对每个子算法进行详细的说明,并最后通过实例验证算法的正确性。

2 DXF数据信息提取

现在放眼二维CAD市场,Autodesk公司的AutoCAD仍然是龙头老大,占据着很大的市场份额。所以,本文针对AutoCAD的图形交换文件格式DXF进行数据信息提取。

2.1 DXF文件数据结构

DXF 是Autodesk公司开发的用于AutoCAD与其它软件之间进行CAD数据交换的CAD数据文件格式。DXF文件的文本格式主要包括二进制和ASCII码两种格式。本文采用的是较为常见的ASCII码格式,它是由组码和组值组成,是一种顺序结构。DXF结构主要包括 7大段:标题段(HEADER)、类段(CLASSES)、表段(TABLES)、块段(BLOCKS)、实体段(ENTITIES)、对象段(OBJECTS)和文件结束(EOF)。

2.2 DXF数据提取算法

DXF文件中与对象形状相关信息都在实体段,只要针对该段进行提取就可以了。为了可以有选择地对实体段中图元信息提取,去除一些与对象轮廓形状无关的信息,如中心线、轴线,同时还需要对表段中的图层信息进行提取。

从图1中可以看出算法主要分两部分:

为了这件事,我发挥自身特长草书唐诗一幅,到装裱店加急仿古精裱后如期带去,意外的贺礼,使教师职业的妹妹格外喜爱,她表示,这是锦上添花。

1) TABLES段图层信息读取。利用函数ReadGroup()顺序读取组(组码和组值),如果组值为TABLES,进入该表段,找到图层子类标记AcDblayerTableRecord,读取后面的图层信息,放入LayerInfo类中保存,直到TABLES段结束为止。该部分主要是为了读取图层信息,与后面实体段匹配图元图层做准备。

2) ENTITIES段图元信息读取。顺序读取组,如果组值为 ENTITIES,进入该实体段,根据不同图元类型,调用不同的图元函数读取相应几何信息并存入相应图元类中,同时用图层信息过滤该图元。例如,组值为 LINE,进入该直线子段,进行图层信息判断,如果该图元的图层相关信息与用户界面输入一致,再调用ReadLine()子函数读取直线几何信息,并存入MyLine类中,直到该段结束为止。否则,直接跳出本次循环,重复以上操作。

上述算法为下面的视图分割等提供了很好的数据接口。

3 视图选择分割算法

3.1 视图分割的方法

目前,关于视图分割的方法有很多。传统的视图分割算法[5]是根据角度判别法来识别视图边界,需要求取所有曲线的交点,使任意两曲线仅在端点相交,且要搜索边界环,处理数据量大,算法效率不高,但可以分割复杂多视图,如图2、图3和图4均可分割。刘世霞等[6]提出了坐标投影分离算法,算法效率高,但使用范围窄,如图3和图4所示情况都无法处理。还有现在使用比较广泛的包围盒分割法[7],主要是通过所有几何图元的外接矩形形成一个包围盒,进行两两合并,达到分割视图的目的。该算法简单,无需求出边界环,效率高,可以处理图2和图3情况,但对于如图4所示情况仍是无能为力。

图2 初步视图分割(一次坐标投影法)

图3 二次视图分割(二次坐标投影法)

图4 四次视图分割(改进角度判别法)

3.2 视图选择分割法

上述3种算法中,只有角度判别法可以分割复杂多视图,但效率不高;其它两个都不能完全满足复杂多视图的情况,但有其各自的优点。但是如果将这3种算法的优点结合起来,即可互补缺陷,适应复杂多视图的情况。包围盒法比坐标投影法所耗时间多,而对某一视图用多次坐标投影法也能达到大部分包围盒法分割视图的效果。因此,本文提出了一种视图选择分割法,充分结合了这3种算法的优点。如图5所示,视图选择分割算法流程图。该算法的步骤主要有5个:

图5 视图选择分割算法流程图

1) 初步分割视图。坐标投影法效率高,用于第一次对视图进行分割,将分割后的视图存入视图数组MyView中,并且记录每个视图的分布位置。

2) 初步视图连续性判断和二次视图分割。采用坐标投影法对一次分割后的每个视图进行视图连续性检查,判断视图是否分割彻底,若某一视图内坐标投影线段不连续,则进行二次视图分割,更新视图数组MyView,并更新视图分布位置,直到用坐标投影法检查所有视图投影线段仅有一条为止,否则跳到步骤3)。

3) 二次视图连续性判断和三次视图分割。采用包围盒法检查所有单个视图,若经过图元包围盒相容性计算后,存在超过一个视图包围盒,则进行三次视图分割,更新视图数组MyView,并更新视图分布位置,直到仅有一个视图包围盒为止,否则跳到步骤4)。

4) 视图相邻性判断。将两两视图进行相邻性判断,如果存在不与任一视图相邻的视图,则跳到步骤5)。

5) 三次分割视图。将该视图用改进的角度判别法进行分割,再将分割后视图进行相邻性判断,然后存入视图树中。

在算法步骤5)中所述的改进的角度判别法,是通过改善几何图元求交的次数,避免所有图元之间进行求交,来缩短角度判别法的时间。具体做法是:将视图中的曲线按照y坐标增大的顺序排列;在未分割的曲线中选择y值最大的曲线;将该曲线作为搜索的起点,找出所有在该曲线最小外接矩形范围内的其他曲线,如果有,求出它们与该曲线的交点,更新这些曲线,利用角度判别法生成一个二维边界环;添加所有属于该边界环内的曲线到视图类My View中,分离出视图,将该视图移除输入工程图;重复执行上面步骤,直到输入工程图中不再有数据为止。

下面根据图4的工程图说明视图选择分割算法。图4用该算法进行初步分割,将所有图元投影到x轴和y轴上,得到x轴上的投影线段A0B0以及y轴上投影线段C0D0和E0F0,求出垂直分割线x0=xA0和水平分割线y0= (yD0+yE0)/2,将图元添加到两个视图中;再将每个视图中的图元往各自的x轴和y轴投影,两视图 view1和view2在x轴和y轴上都仅有一条投影线段,所以不需要进行二次分割;将这两个视图用包围盒法检查,最终只得到一个视图包围盒,所以不需三次分割;然后检查所有视图间相邻性,发现视图view1不与视图view2相邻,并且view2的极左切线位于view1的极左切线左边,所以需要对view2用改进的角度判别法进行四次分割,从该视图上y坐标最大的图元2开始,搜索视图边界轮廓1-2-3-4-5-6-7-8和1'-2'-3'-4'-5'-6'-7'-8'-9'-10'-11'-12'-13'-14'-15'-16',最终将视图彻底分割,得到3个视图view1、view2和view3,并通过再次视图相邻性判断,得到具有拓扑结构的视图树,如图6所示。很明显,图3用一次分割即可彻底分割视图,而图2则需要二次分割才能达到彻底。

图6 视图分割后所表示视图树

本视图选择分割法只用最多四次分割即可达到彻底分割,根据不同的视图类型选择不同的分割次数,二次、三次或四次分割的视图并非所有视图,而是存在视图不连续以及不相邻的视图,且根据算法各自的优点,对应不同分割子算法,从而大大提高了算法的效率,完全满足了复杂多视图的要求。改进的角度判别法又进一步提高了算法的效率。

4 折叠视图

折叠视图主要是确定视图放置平面的坐标系方向矩阵,找出视图坐标系和对象坐标系之间的关系。由于视图坐标系和对象坐标系拥有同样的原点,所以视图坐标系与对象坐标系之间只存在关于旋转变换[8]。而任何相邻视图互相垂直,它们之间存在90º角的旋转变换,且相邻视图所在视图坐标系存在视图对角(指视图对切线与x轴夹角)θ的旋转变换。

初始假设视图树中的根视图的坐标系为(x',y',z'),对应于对象坐标系为(u,w,-v),那么其由视图坐标系到对象坐标系的放置面坐标系方向矩阵为

而对于其他结点子视图,应用上述提出的基于相同的坐标原点以及视图对角关系的转换矩阵A,可以通过其父视图的坐标系方向矩阵PB,得出任一子视图的放置面坐标系方向矩阵CB,其关系为

针对如图6的视图树说明视图放置面坐标系方向矩阵。如图4所示,view1和view2之间的视图对角为-90º,view2和 view3之间的视图对角为-135 º,那么主视图view2、俯视图view1和辅助视图view3的坐标系方向矩阵2PB、1PB和3PB分别为

5 草图绘制

在前面几个阶段中,得到了草图绘制的关键信息,包括视图放置面坐标系方向矩阵和视图图元几何信息,使草图绘制变得简单起来。在UG/Open API函数中,用UF_SKET_create_sketch和 UF_CURVE[9]分别创建一个视图的草图平面和绘制相关视图几何信息。图7为用UIStyler开发的用户界面,而图8为图4在该草图模块下运行结果。

图7 快速草图模块用户界面

图8 运行图4后得到的草图

6 总 结

基于UG 所开发的快速草图建模模块,通过实例验证确实可行,弥补了市场上现有主流三维CAD软件导入草图模块需要大量人机交互的缺点,提高了草图建模的效率,给企业节省了大量的资源。快速草图生成算法可以为以后三维重建预处理提供很好的铺垫。而对于其中关键的视图分割阶段,提出的视图选择分割算法不仅解决了现有视图分割算法不能处理复杂视图的问题,也提高了算法的效率。

[1]成 彬, 张树生, 石云飞. 工程图矢量化识别技术研究综述[J]. 工程图学学报, 2008, 29(6): 7-12.

[2]Srinivasa R B, Gurumoorthy B. Constructing a wire-frame from views on arbitrary view planes for objects with conic sections inclined to all view planes [J].Computer-Aided Design, 2011, 43(12): 1639-1653.

[3]郑鹏飞, 林大钧, 刘小洋, 吴志庭. 基于三视图的实体重建技术[J]. 工程图学学报, 2011, 32(2): 49-54.

[4]傅自钢. 基于工程图的三维形体重建方法研究[D].长沙: 中南大学, 2011.

[5]Hiroshi S, David C. Gossard. Solid model input through orthographic views [J]. Computer Graphics,1983, 17(3): 243-252.

[6]Liu Shixia, Hu Shimin, Chen Yujian, Sun Jiaguang.Reconstruction of curved solids from engineering drawings [J]. Computer-Aided Design, 2001, 33(14):1059-1072.

[7]李晋芳, 施法中. 从二维视图到三维几何模型转换中视图的包围盒分离法[J]. 计算机工程, 2004: 30(6):139-141.

[8]Lysak D B, Devaux P M, Kasturi R. View labeling for automated interpretation of engineering drawings [J].Pattern Recognition, 1995, 28(3): 393-407.

[9]莫 蓉, 常智勇, 刘红军, 杜 微. 图表详解UG NX二次开发[M]. 北京: 电子工业出版社, 2008: 47-86.

猜你喜欢
图元工程图草图
四合一铅笔刀设计
SolidWorks二维草图的绘制经验与技巧
学术出版物插图的编排要求(一):图注
联锁表自动生成软件的设计与实现
面向工程认证的机制专业工程图学(一)课程教学探索
不能承受的生命之轻
MASTERCAM工程图出图功能研究
画好草图,寻找球心
电气CAD接线图快速转换G图形的技术应用研究
一波三折