吴战国,李宏旭
(同济大学,上海 200092)
识读工程图形是工科学生的一项重要技能,也是工程图学的重点和难点。提高学生的空间分析和空间想象能力是工程图学课程的基本目标。提高空间分析能力的主要方法是勤学多练,将投影理论与画图及读图实践结合起来,通过不断重复由三维立体到二维视图,再由二维视图到三维形体的投影变换过程,帮助初学者在头脑中逐步建立形体与视图的对应关系。
长期以来,投影训练主要是通过“二补三”,即根据形体的两个正投影图,补画第三个正投影图的方式进行的。在这个过程中,投影图所表达的形体不是直观呈现的,它只存在于学生的脑海中,所以学生在构画形体的第三视图时,往往会感觉比较吃力。如果形体结构复杂,空间分析和想象将更加困难。如果能够勾画形体的立体草图,将即兴的思想火花记录下来,显然有助于分析思考,但对于初学者而言,勾画立体草图也不是一件易事,反倒可能更加困难。如果能够提供一种计算机方法,将构建形体的思考过程直观地逐步呈现出来,帮助学生及时纠正错误,显然能够极大地促进空间分析能力和空间想象能力的提高。基于这个思想,我们采用VBA语言,在AutoCAD平台上开发了相应的读图系统,达到了良好的效果。
计算机辅助读图系统是使用AutoCAD VBA开发的,其工作区如图1所示,用户界面主要由3个区域构成。左侧A区为三维模型区,用于观察建立的三维模型。右侧B区为视图验证区,用于即时显示基于模型的动态三视图;C区为视图输入区,用于显示原始三视图及交互操作。
图1 工作区界面
计算机辅助读图系统的系统流程,如图2所示,其造型过程主要分为3个阶段,分别是:三视图输入阶段、三视图预处理阶段和交互造型阶段。首先,在C区绘制或调入三视图,确认无误后对三视图进行转存,即将三视图以特定的数据结构重新存储。然后,对三视图进行预处理,包括分离三视图、各视图闭环搜索及存储。最后进行特征构建,逐步生成最终形体。
图2 系统流程图
特征构建的理想方法是让系统根据三视图自动创建三维形体,如图3所示,在系统对三视图闭环提取完成后,根据视图间最大外环的匹配关系,系统能够自动生成与三视图匹配的三维形体。但是,由于三维形体的复杂性,若完全由系统在二维视图空间自底而上地创建形体,需要反复的视图匹配及校验工作,其算法效率往往较低,而且对培养学生的读图能力帮助有限。假设以交互方法进行,将人工判断与计算机快速校验结合起来,不但能够使学生直观地看到形体构思的结果,而且有助于学生理解形体及其投影的产生过程,达到提高读图能力的目的。
人机交互的基本方法是人机交互,其过程是:学习者首先在某一个视图上选择一个闭环,确认后系统会自动加亮其他视图上与之匹配闭环。当学习者确认匹配后,系统会根据三视图上的进行校核。若校核通过则在模型区生成对应的子形体(或特征),并在视图校验区更新对应的三视图。学习者可通过与输入三视图比对来鉴别子形体的有效性。若子形体无效则返回上一步,重复识别过程;若符合要求则确认子形体,并开始下一个子形体的识别,直至产生最终形体。隐含情况下,子形体之间做布尔和运算,使用者也可根据需要改变布尔运算方式。
图3 全自动造型实例
计算机辅助读图系统是在AutoCAD平台上开发的,其三维造型的基础是AutoCAD的VBA模块。在此基础上,系统开发了视图分析及处理算法,以便向造型接口提供几何信息和拓扑信息。下面给出该系统的关键算法。
原始三视图可以在C区直接绘制,也可以从外部调入。对输入到系统中的三视图,要以特定的数据结构进行存储,不失一般性,我们以平面立体为例加以说明。平面立体的正投影图上只包含点和线两种图元,几何数据比较简单,可以用数组存储。考虑到后继数据处理的需要,还需要对点与点、点与线之间的关联关系加以存储。
对于每个视图,我们用5个表来存储视图信息,分别为点表、线表、点的关联点表、点的关联线表以及点的度数表。点表用于记录该视图上点的坐标;线表用于记录该视图上线的端点;点的关联点表用于记录该视图上点的邻接点;点的关联线表用于记录该视图上点到邻接点的关联线;点的度数表用于记录该视图上点的邻接点的个数。
由三视图分离出主视图、俯视图和左视图可以通过人工依次在3个视图上指定对应点来完成,如图3所示。这种方法需要初学者具备基本的读图能力,为简化操作,系统也提供了分离视图的自动工具。其算法的主要依据是:每个视图一定是一个封闭的区域,而且视图间存在间隙。主要过程是:首先将三视图看作一个整体,搜索出左下角点、左上角点和右上角点;然后分别从3个角点出发,依据点的关联线表由左下角点向上搜索到俯视图上具有最大Y坐标的角点,由左上角点向下搜索到主视图上具有最小Y坐标的角点,取两个Y坐标的中线,即可将主视图和左视图与俯视图分离。同理由左上角点向右、由右上角点向左搜索,可以得到主视图上具有最大X坐标的角点和左视图上具有最小X坐标的角点,从而将主视图和俯视图与左视图分离。
二维视图上的闭环搜索是计算机图形学的基本问题,有成熟的算法可以参考,其主要原理是通过计算下一条矢量边与当前矢量边的转角,并依据内环和外环的不同,分别选择最大转角边和最小转角边来实现的。在转存三视图数据时,我们纪录了点的关联点表,也是出于闭环搜索的需要。
为降低算法复杂性,除最大外包闭环外,我们仅提取并存储了最大外包闭环内部彼此独立的内部闭环,没有考虑内部闭环之间的组合及包容关系。关于此部分的内容,我们另文讨论。
由于系统开发的目的是培养初学者对三视图读图能力,其三维形体不是实际机件,而是几何形状比较简单的组合形体,所以选择了AutoCAD软件平台。AutoCAD的三维造型功能比较简单,主要用断面拉伸和断面回转两个造型命令,但能够满足组合形体的建模需要。
构建子形体的主要过程是:首先依据匹配的闭环,自动提取适用于造型的断面数据;然后根据断面所在的视图以及相对位置,自动对断面进行旋转、平移变换;接着依据另一个视图上的匹配闭环或线段,构造子形体并加亮;最后由操作者决定布尔运算的类型,从而生成特定形体。
对于特定形体,系统可以全自动创建三维形体。如图3所示,系统自动提取3个视图的外包闭环后,依次将3个外包闭环拉伸生成3个子形体,然后将3个子形体作布尔和运算,最终的形体就自动产生了。
本文介绍了一种计算机辅助读图系统,能够自动分割三视图,并依据三维造型的需要将三视图数据进行转存,记录三视图上相互关联的线面信息,然后在视图匹配规则的引导下,通过用户交互,快速生成其三维模型,实现了辅助学习者培养空间想象和空间分析能力的效果。
让程序根据三视图自动重建三维形体,是计算机造型领域研究者的一个目标,如何进一步提高重建程序的智能,也是作者努力的方向。
[1]吴战国, 李启炎.面向三维重建的三视图数据结构[J].工程图学学报, 2001, 22(2): 129-132.
[2]董建甲, 王小椿, 陈丁跃.基于专家系统的二维投影视图的三维实体重建[J].小型微型计算机系统,2003, 24(7): 1394-1396.