何楊博,趙 勇,楊建鳴
(內蒙古科技大學 機械工程學院,內蒙古 包頭 014000)
隨著CAD等先進技術在裝備制造業的迅速普及和應用,國內已有相當數量的企業和科研院所完成了工程圖紙的數字化轉換,建立了電子圖檔。CAD應用[1]水平的不斷提高為三維建模技術的大規模應用打下了基礎。
而對加快圖形的二維轉三維,使得二、三維模型在設計過程中提高信息的關聯性,讓產品在設計的后處理中協調一致,自動更新,已經成為CAD應用過程中的重點和難點。
三維實體通過投影原理,向水平、鉛垂、側垂平面投影,形成能夠清楚地表達內部結構較為簡單的零件形體特征和幾何尺寸的正三視圖。目前,工程圖仍然是默認的指導產品設計和制造的唯一法定和通用技術文檔,在今后一段時間內,仍然無法取代。但三維設計的趨勢已經顯而易見,三維實體可視化程度高,共享性好,尤其是在設計的后處理階段,比如逆向工程、虛擬裝配、CNC制造等,具有二維設計無法比擬的優勢。
兩者都是基于特征,先進行二維平面視圖的識別,再通過計算機模擬工程師讀圖的方法,將現有的制、識圖方法規范編纂成計算機能夠識別的邏輯流程和算法,通過其中所包含的幾何與拓撲信息來完成三維空間實體的構建。不同之處在于兩方面:
(1)前者需要在建模時先進行二維草圖的繪制,再進行特征建模,而后者是直接利用現有的二維工程圖,在經過一定的視圖預處理之后,直接進行三維重建,跳過了草圖繪制的過程。
(2)前者在建模時,以單個特征為基元,僅能處理單個特征所對應的二維草圖,所以導致在主流的三維建模軟件中擁有海量的特征種類個數,給軟件的學習與普及應用帶來了相當大的困難;而后者以包含多個特征的某類零件為基元,能夠處理多個特征所對應的二維草圖。通俗的講,就是后者將原來三維建模中需要多個特征、多個步驟完成的過程一步完成,充分地挖掘了現有工程圖中的潛在價值,極大提高了建模效率。
Idesawa[2]在1973年提出了三維重建的思想,Markowsky與Welsley[3]在1980年提出了基于線框的重建思路,此后各種重建算法蓬勃涌現。1983年,Aldefeld[4]提出以模型引導的方法來完成三維模型重建。1983年,Sakurai[5]在文獻[4]的基礎上提出面向曲面體的重建算法。1988年,Chen等[6]提出面向體切削的重建算法。
1988年,Nagendra與Gujia[7]對從1973年接下來的十年內產生的具有代表性的算法進行了綜述。2002年,耿衛東等[8]綜合了基于體與基于線框的重建算法,摻入一定的人工交互操作,提出了一種混合算法。
2003年,Soni S[9]等提出了一種面向軸對齊類旋轉體的重建算法。該算法通過對工程圖投影邊進行結構分析,通過構造匹配序列,利用其中的參數信息,構建出正確的重建實體。2012年,文雅玫[10]面向剖視圖提出了一種交互式驗證算法,針對性地解決了軸類基本形體的重建,同時也擴展了涉及剖視圖三維重建的范圍。
從一張工程圖紙開始到生成三維空間實體的過程分四大部分,文中側重于后兩部分的研究和實現,重建的基本完整流程如圖1所示。
以下是算法中涉及到的一些新名詞定義和專業術語(部分來自文獻[9])。

圖1 重建基本流程
(1)面環:由邊組成的封閉環,如圖2中的面環{1,2,1}。
(2)二重點:與投影方向平行的邊在向該投影方向投影時,該邊上的點會在該投影面內積聚為一點,該點即為輪廓點,如圖2中正視視角中的點7、8。

圖2 術語定義例圖
(3)端點:面環內處于極限位置的點,即為端點,如圖2中的點1、8分別是面環{1,2,3,11,12,6,7,8,9,10,1}的左右極限點。
(4)面環關系:
內、外環:若面環M1的所有邊均位于M2外,則稱M2為M1的外環,M1為M2的內環。例如,圖2中俯視視角中的環{1,2,1}是環{4,5,6,7,8,3,4}的內環。
內交環:若面環M1有的邊在M2的內部,有的邊在M2上(邊界),則稱M1為M2的內交環。例如,圖2中俯視視角中的環{5,6,9,10,5}是環{4,5,6,7,8,3,4}的內交環。
外交環:若面環M1有的邊在M2的內部,有的邊在M2的外部(不含邊界),則稱M1為M2的外交環。例如,圖2中正視視角中的環{4,5,6,12,11,3}是環{1,10,9,8,7,6,12,11,3,2,1}的外交環。
(5)實環與虛環:全由實線組成的面環稱為實環,反之如果環面全由虛線組成則稱為虛環。
(6)基點:兩投影視圖中沿某一方向重合的點稱為基點,基點可以一對一,也可以一對多。例如,圖2中俯視視角中的點8在正視視角中的匹配點為點7和點8。
(7)基元環:如果M1中的基點在M2中均能找到匹配基點,反之亦然,則稱面環M1與M2匹配。
(8)基元體:將所有的基元環沿著環法向進行掃掠,求出初步的基元體,然后通過一系列相關的布爾操作,得到最后的重建實體。
2.3.1 視圖預處理
矢量化文件采用開放性、兼容性好、可讀性高的DXF[11]格式輸入。由于三視圖位于同一幅圖中,較難從中獲取需要的圖形屬性信息,所以必須對視圖進行分割,將三視圖進行坐標轉換,然后完成圖素的拼接和打斷處理[8],得到從DXF文件中提取到的點、線以及點線鏈表、所屬關系等數據,作為三維重建的輸入。
2.3.2 視圖輪廓的提取與參考體、基元體的構建。
完成視圖預處理后,進入重建部分。首先提取三視圖的輪廓,以其各個視圖的最大外輪廓為參考基準,利用角度判別法[8]進行遍歷搜索,構建最大輪廓參考體,提取文件中的點、線,構建對應的匹配點、面環,生成對應的虛、實基元體。然后將基元體依次同參考體做對應的布爾運算,不斷更新參考體后,生成初步重建實體。
2.3.3 重建結果的校驗
生成初步重建實體后,選取某一投影方向,將重建結果反投影至該投影方向,并創建一個新的草圖,驗證該草圖是否與原草圖匹配。如果匹配,則算法結束;如果不匹配,則通過Solidedge中的同步建模模塊(后文詳細敘述),適當的人機交互步驟輔助重建,直至投影相匹配。
整個算法的運行流程如圖3所示。

圖3 算法運行流程
西門子公司UGS旗下的Solidedge ST7軟件是一款以Windows系統平臺開發的中端CAD建模軟件[12],能夠高效地實現零件的建模、裝配鈑金以及工程圖的設計,同時也是西門子公司推出的極具特色的同步建模軟件。在同步建模模塊中,有一個2D轉3D的功能,能夠較為方便地通過人工交互界面完成2D到3D的轉換,同時還能完成在重建過程視圖預處理步驟中的一部分內容,如圖素的拼接與打斷可通過Solidedge中的解塊功能來實現,三視圖的分割與坐標系的轉換可由Solidedge中2D轉3D工具條中的內置嵌入功能來實現,如圖4所示。以上2項軟件內嵌自帶功能給視圖的預處理工作帶來了極大的便利,大大地減輕了重建的工作量,因此文中選用Solidedge作為開發平臺。

圖4 坐標系的轉換
Solidedge提供了多種數據接口,最常見的是通過ActiveX Automation方法,運用VB、VC等編程語言,實現對ActiveX Automation技術的運用[13-16]。文中選用VB作為開發工具,實現重建過程,首先在VB中需要調用Solidedge中的相關類型庫,實現VB編寫代碼,訪問Solidedge軟件內部提供的數據服務,如圖5所示。然后再通過代碼編寫的ActiveX Automation(client)生成.exe文件,完成三視圖實例的重建。

圖5 對Solidedge類型庫的引用
算法由VB6.0編寫,基于Solidedge平臺運行,如圖6所示。法蘭零件的三視圖如圖4所示,其中圖6(d)為三視圖經掃掠得到的參考體,將圖中生成的基元體分別與參考體做布爾運算,得到最終的重建實體,其三視圖與圖4完全匹配,故此實體為目標實體。

圖6 重建算例的實施
通過對三視圖特點以及相關制圖規范的分析與理解,提出了針對簡單法蘭類零件的重建算法,并結合相關的二次開發技術進行了實例驗證。該課題最大的難點是如何將經過大量工程師長期工程實踐得出的經驗化制圖規范,轉化為邏輯嚴謹、嚴格的計算機能夠識別的形式化描述,賦予計算機模擬人工理解識圖的能力,隨著人工智能的發展,相信在之后會有所突破。而對結構更為復雜、制圖規則更多的形體還有待深入研究。