张 雪,赵德胜,李丽萍
(1.西安邮电大学 自动化学院,陕西 西安710121;2.西安邮电大学 理学院,陕西 西安710121)
计算机辅助设计技术已成为衡量制造业现代化水平的重要标志之一。工程图以二维视图表达三维形体,是工程技术人员相互交流的专业语言,广泛应用于机械、土木、化工等工程领域[1]。
利用计算机辅助设计和构造空间形体是建立产品三维数字模型的关键[2-3]。空间形体的三维模型具有完整的几何和拓扑信息,可方便提取成型特征,为下游的工艺分析、公差分析、有限元分析、干涉检查和数控编程等提供支持[4-5]。
基于二维视图的三维形体重建是计算机辅助设计与计算机图形学中一个重要的研究问题,目前现有的三维重建方法和策略,可以归纳为两类:(1)基于线框模型、表面模型和 B-rep(Boundary Representation也称边界表示法)模型的自底向上方法[6];(2)基于构造实体几何(Constructive Solid Geometry,CSG)模型和特征模型的模型引导方法[6-7]。在基于CSG模型从工程图进行三维形体模型重建时,由于工程图中存在人为误差、各形体之间产生交线等各种因素的影响,在对视图特征进行匹配时,同一个基本形体的投影特征有时不能完全符合工程图的“长对正,高平齐,宽相等”基本规则[1],即有不完全匹配的现象;另外,不同的基本形体的几个视图中经常存在一个或两个投影完全相同的情况,即重影现象。因此本文以从工程图重建三维形体为研究对象,提出一种重建方法。根据CSG重建算法的工作原理进行视图区划分和图元读取,对所给工程图进行自动重建,以期改善不完全匹配和重影对工程图重建三维形体的影响。
基于CSG模型引导方法的基本原理[8]是首先通过识别、读取工程图并从工程图中识别出基本形体,然后根据基本形体之间的组合关系应用布尔运算生成形体的三维模型。
表达一个三维形体的工程图可以只有一个视图,也可能有多个视图。工程图重建三维形体首先要对工程图进行视图区划分,将工程图的视图数量和视图区域划分出来。采用黄金分割法[9-10]对工程图进行视图区划分。其基本原理是:在每个视图区内部点、线都是连续的,平行于X轴或Y轴的直线有交点产生;在两个视图之间没有任何点、线。将没有产生交点的直线作为两个视图的分界线。
建立优化区间,利用VC++内部函数读取工程图中所有点的坐标,在Y轴方向,求出Y轴坐标最大值和最小值的点,如图1所示。把最大值和最小值作为工程图在Y轴方向的优化区间进行优化,最后得到Y轴方向的视图分界线L1。
用同样方法建立X轴优化区间,得到X轴方向视图分界线L2。
图1 优化区间
由计算机VC++语言内部函数读取工程图中所有粗实线(直线)、细实线(直线)、圆、圆弧、虚线(直线)、中心线等基本图元。读取后的图元按照不同视图区分类,然后再按照不同的图元类型分别存放在不同的数组。
在图元读取完毕后,根据CSG方法原理,将每个视图区存储的直线,根据端点坐标关系和矩形特点组合成若干矩形。其算法原理是:任意选取一条直线作为原始直线;在直线数组中,寻找一条有一个端点和原始直线一个端点重合,并且和原始直线垂直的直线,把该直线作为原始直线,继续寻找与之匹配的直线;重复上述步骤,直到可以组合成一个矩形为止。在组合矩形时,具备四条边线且四条边的线型一致的矩形称为完备矩形;当遇到如下3种特殊情况:(1)三条直线首尾相连,而第四条直线不能与之组成封闭矩形(或只有三条边,但三条边的线型一致);(2)第四条边为曲线,仍把该图形作为一个矩形存储在相应数组;(3)组成矩形的四条直线线型不一致。将以上3种情况组成的矩形称为不完备矩形。在特征匹配时,仍把它们作为矩形与其它图元匹配。
根据不同多边形的特点可以组合成其他的多边形,并分类存储。
一个复杂的三维形体通常有若干基本形体组合而成,不同基本形体之间存在各种组合关系。各基本形体在各个视图区的投影图元按照“长对正,高平齐,宽相等”的原则进行匹配。
在识别出工程图为一单视图工程图后,确定其对称中心线。在图形组合完毕后,关于对称中心线对称的矩形重建为圆柱;“圆”重建为圆孔等。
从单视图重建三维形体流程如图2所示。
图2 从单视图重建三维形体流程
在两视图工程图中,对于一个完备矩形,只要有一个矩形与其相匹配,即可确定一个长方体。对于一个圆来说,只要有一个矩形与其匹配,则可确定一个圆柱;如果有一个圆与其匹配,则确定一个球体。在特征匹配时,如果有重影现象,即两个圆对应同一个矩形,通过“高平齐”以及圆的直径与对应矩形的宽(或长)相等的特点,强制认定矩形为圆的匹配对象。从两视图工程图重建三维形体流程如图3所示。
图3 从两视图重建三维形体流程
三视图工程图程序基本流程和二视图工程图的流程基本相同,只是匹配条件不同。从任意一个视图区读取一个具备四条完整边线并且线型相同的矩形,根据视图关系从其他两个视图区寻找特征相匹配的矩形。
从存储圆的数组中取出一个圆,并从该数组中读取圆的直径、圆心坐标、所在视图区等有关该圆的信息。通过圆心确定该圆的中心线,从其他两个视图区读取特征相匹配的矩形。
在一个组合体中,可能包含许多长方体和圆柱。选取单个表面面积最大的长方体作为基本形体;如果组合体不包含长方体,则选取半径最大的圆柱作为基本形体,然后把其它基本形体叠加到该基本形体上。根据圆柱在视图中轮廓线的线型,确定“并集”或“差集”运算。如果相匹配矩形的边全部是粗实线,则生成圆柱体(即与其他实体组合时,布尔运算执行“并集”运算。否则,则生成圆柱面(孔),即与其他实体组合时,布尔运算执行“差集”运算。
图4为用单视图表示轴的工程图。
图4 单视图工程图
由图4可知,工程图较为简单,在图形组合时得到两个完备的矩形,又因为在图元读取时,读取到中心线,所以重建为两个圆柱;把两个实体进行“并集”运算。由图5可知,重建后的三维实体与实际工程图所表示的实体相符合。
图5 从单视图重建的三维形体
图6 为用两视图表示一个零件的工程图。
图6 两视图工程图
由图6可知,该工程图在两视图工程图中较为复杂,在图形组合时,组合出几十个矩形,通过特征匹配,可以排除多余矩形。但在特征匹配时,左视图中4个直径为φ14的圆在主视图中,只有两个矩形与之匹配,这种现象称为重影。针对这种现象,两个找不到匹配对象的圆,只要与主视图中的矩形符合“高平齐”的规则,即可认定二者可以相互匹配。由图7可知,重建后的三维实体没有受到重影问题的干扰。
图7 从两视图重建的三维形体
图8 为用三视图表示一个零件的工程图。
图8 三视图工程图
由图8可知,在图形组合时,不可能组合出完备的矩形。图8是三视图工程图,在特征匹配时严格按照“长对正,高平齐,宽相等”的原则进行匹配。主视图所示矩形“1”、左视图矩形“2”、俯视图中所示直径为φ14的圆,三者在相互匹配时,“1”、“2”两个矩形的高并不相等,即不满足“高平齐”原则,这种现象称为不完全匹配。在该实体重建时,程序自动认定矩形“2”的高作为待建圆柱的高。经过布尔运算后,得到图9所示三维实体。由图9可知,重建后的三维实体与工程图所表示的立体一致,不完全匹配没有影响实体重建。
图9 从三视图重建的三维形体
利用黄金分割法对工程图进行视图区划分,确定视图的数量。通过对不同基本形体间的重建条件和布尔运算条件的设定,完成了单视图、两视图、三视图所表示的组合体的自动重建,克服了不完全匹配和重影问题。
[1]傅自钢.基于工程图的三维形体重建方法研究[D].长沙:中南大学,2011:4-46.
[2]郑鹏飞,林大钧,刘小羊,等.基于三视图的实体重建技术研究[J].工程图学学报,2011,32(2):49-54.
[3]甘树坤,闫树双,吕雪飞,等.基于SolidWorks的二维工程图三维重建系统实现[J].吉林化工学院学报,2011,28(7):39-42
[4]吴晓军,文飞,温佩芝.多视图立体三维重建中的空洞修复算法[J].计算机辅助设计与图形学报,2012,24(12):1606-1613.
[5]胡小春,赵宝,张晴晴,等.基于旋转变换的鞋楦变翘曲面重构CAD技术[J].中国机械工程,2014,25(22):3044-3049.
[6]Furukawa Y,Curless B,Seitz S M,et al.Towardsint ernetscale multiview stereo[C]//Proceedings of IEEE International Conference on Computer Vision and Pattern Recognition.LosAl amitos:IEEE Computer Society Press,2010:1434-1441.
[7]Yan Qingwen,Chen C L P,Tang Zesheng.Efficient algorithm for the reconstruction of 3Dobjects from orthographic projections[J].Computer Aided Design,1994,26(9):699-717.
[8]董玉德.CAD二次开发理论与技术[M].合肥工业大学出版社,2009:10-30.
[9]赵德胜,张雪,李丽萍,等.基于黄金分割法的三视图识别[J].西安邮电大学学报,2014,19(2):82-84.
[10]孙靖民,梁迎春.机械优化设计[M].4版.北京:机械工业出版社,2006:9-52.