李正磊, 張應中, 羅曉芳
(大連理工大學 機械工程學院, 大連 116024)
面向實體邊界模型的設計特征重構①
李正磊, 張應中, 羅曉芳
(大連理工大學 機械工程學院, 大連 116024)
實體模型只提供產品低層次的幾何信息而不具備高層次的特征信息, 導致模型的修改十分困難, 因此需要從實體模型中重構設計特征將實體模型轉換為特征模型. 利用分割環查找算法識別出零件模型中的布爾分割環, 構建分割環關系圖, 根據分割環關系圖識別模型中的設計特征構建零件的特征模型. 最后對該方法的有效性予以驗證.
實體模型; 設計特征; 分割環; 特征識別; 特征重構
目前基于特征的三維造型技術已經廣泛應用, 不同軟件系統之間的數據交換日益頻繁. 由于不同的CAD系統對特征的定義和表達不同, 導致數據交換只能在低層次的邊界幾何與拓撲信息層次上進行, 而高層次的特征信息在交換過程中會丟失, 造成轉換后的模型編輯和修改十分困難. 為了解決這個難題, 必須在零件實體邊界模型中重構出設計特征, 重建零件的特征模型, 恢復零件的設計意圖.
特征識別與重構技術一直都是CAD領域研究的熱點, 國內外對此開展了大量的研究, 提出了很多識別方法, 例如基于面鄰接關系圖、混合面鄰接關系圖和規則、體分解和神經網絡方法等[1]. 但目前大多都是針對制造特征的, 從邊界幾何模型中重構零件的設計特征模型的研究相對較少. Koo S等[2]提出通過查找幾何模型中的凸內環來識別模型中的凹特征, 其缺點是對于不在同一平面內的空間凸環無法處理, 并且由于只是利用凸環只能識別出凹特征, 無法識別凸特征. Byung Chul Kim[3]在Koo 的基礎上提出了逐步體分解的方法來識別模型中的設計特征. 首先利用Koo S的方法識別出模型中的凹特征, 然后再利用模型中的凹內環通過體分割操作識別出簡單的凸特征, 最后利用基于單元的體分解處理模型的其他部分. 文獻[2-3]中的方法最大局限之處在于都是利用平面環, 無法處理空間環的情況, 而且當多個特征相交時, 導致環的識別相當困難, 論文中并沒有提出一種可行的環查找算法. Yoonhwan Woo[4]等提出利用正交邊界因子識別模型中的凸特征, 利用模型中的凹環及凹環上的一組面,通過計算面上相鄰法向量的叉乘之和的極限值來判定凸特征, 但是凸特征如果不是被一個完整的凹環所包圍時, 該方法無法使用. 劉云華等[5]提出了基于圖分解的設計特征識別方法, 通過各種方法將面屬性鄰接圖分解為更小的子圖進而進行特征識別.
本文提出了一種利用布爾分割環識別和重構設計特征的方法. 首先由零件的實體邊界模型得到其屬性鄰接圖, 然后設計一種分割環查找算法從屬性鄰接圖中查找用于后續分割模型所需的分割環; 利用實體模型中的幾何和拓撲關系確定各分割環之間的關系, 構建布爾分割環關系圖以確定特征識別的順序; 識別模型中設計特征并將結果保存到設計歷史構造樹.
1.1 設計特征的形狀認知
特征設計是目前CAD中主流的造型方法. 設計特征是設計信息的載體, 是一系列具有特定工程意義的幾何元素集合[6], 可以表達高層次的設計意圖信息.在一般的3D建模中, 常用的設計特征可分為體特征、局部修改特征和復制特征等. 體特征又分為増料特征和除料特征, 是特征造型中應用最多的特征. 體特征一般采用掃描幾何造型生成, 根據掃描路徑特點, 掃描體特征又可以分為以下四類:
1) 拉伸特征: 截面輪廓沿著一個指定直線方向,拉伸到給定長度或到達某個面形成三維形體, 且截面垂直于拉伸方向;
2) 旋轉特征: 輪廓截面繞著一個旋轉軸線旋轉一定角度形成三維形體;
3) 掃掠特征: 由截面輪廓沿著一條空間掃描路徑形成三維形體, 截面始終垂直掃描路徑或保持法向不變;
4) 放樣特征: 由空間多個不同截面沿放樣軌跡過渡形成三維形體.
掃描體特征具有的一個明顯形狀特點, 它的三維形狀可以表示為二維截面的變換, 形成三個具有形狀特點的邊界表面, 即底面、頂面和側面, 如圖1所示.并且可以得到如下掃描體形狀特征知識:
1) 掃描體側面通常垂直相鄰于底面和頂面; 2) 掃描體側面由一組相互連接的邊界面包圍.
2.2 設計歷史構造樹
設計活動是一系列的設計步驟或行為, 設計歷史作為設計活動的記錄[7], 以樹的形式保存的整個建模過程被稱之為設計歷史構造樹. 該樹的葉子節點是設計特征, 中間節點是由設計特征隱含的布爾運算或局部修改運算符號, 根節點就是最終構造的實體零件模型. 設計樹記錄了特征建模的先后順序, 以及中間的各種運算. 通過設計樹可以對零件中的特征進行修改編輯. 除此之外, 還可以通過設計樹選擇特征、改變特征的生成順序以及更改特征的名稱等操作. 實際上,特征的修改就是一個設計樹重構過程. 圖2(a)是一個實體模型對應的設計歷史構造樹.

圖1 四類掃描體特征

圖2 設計歷史構造樹
通過該設計歷史樹不僅可以清晰的了解該模型的設計過程, 并且還可以通過修改該樹的節點來編輯實體模型, 如將紅色的長方體變成圓柱體. 如上圖2(b)所示.
2.3 實體邊界模型中的特征痕跡
如上所述, 基于特征的造型過程就是在一個基體上將不同的基本特征通過布爾運算添加到基體上形成復雜零件模型的過程. 每種基本特征都有自己特定的幾何與拓撲模式, 盡管由于特征相交會使特征的完整邊界模式遭到破壞, 但是只要它確是零件的一個特征,就一定在零件的CAD模型中留有痕跡, 這些特征痕跡就是對模型中的設計特征進行認知與識別的基礎. 例如兩個特征做布爾并運算一般會形成凹環或凹邊, 做布爾差運算會形成凸環等, 圖3(a)給出一個特征痕跡的實例. 圖3(a)中的模型是在長方體1的基礎上通過添加或去除不同的基本特征得到的. 一般情況下凸環是凹特征的痕跡, 凹環是凸特征的痕跡. 如平面凸環、空間凸環分別是長方體1與立方體2、長方體3做布爾減運算所形成的特征痕跡; 平面凹環1是長方體1與長方體4做布爾并運算形成的痕跡, 平面凹環2是長方體4與圓柱體5做布爾并運算形成的特征痕跡.

圖3 特征痕跡實例
由特征痕跡可以推理出設計特征, 如圖3(a)中的平面凸環, 該環的四個鄰接面兩兩平行并且垂直于凸環所在的平面, 鄰接的另一底面也平行于凸環所在平面, 可以推理出該特征是簡單的拉伸特征.
如上一節所述, 不同的設計特征相交會形成布爾分割環, 通過分割環可以將設計特征從零件模型中識別出來. 但問題的關鍵是如何識別特征相交的痕跡,同時將相交的痕跡邊構造成分割環.
3.1 分割環的定義與表示
沿著一組封閉環L1, L2…Ln將B-Rep模型分割成多個面殼(face shell)FS1, FS2…FSm, 如果所有的FSi都能通過面殼封閉操作形成封閉實體, 那么稱封閉環L1, L2…Ln為分割環[8]. 分割環是一組邊的集合, 根據組成分割環的邊的凸凹性不同分割環可分為凸環和凹環,凸環的所有環邊全是凸邊, 凹環的所有環邊全是凹邊.為了判定邊的凸凹性, 本文引入二面角的概念——兩個鄰接面外側所形成的夾角稱為二面角[9], 二面角的定義見下圖4. 邊的鄰接面所形成的二面角大于180°稱為凸邊, 小于180°的為凹邊, 等于180°的為中性邊.邊的凸凹性的判定方法見圖5.

圖4 二面角的定義

圖5 邊的凸凹性判定方法
兩鄰接面F1和F2相交于棱邊ab, 取F1和F2中任一平面為基面, 如取F1面為基面, 棱邊ab的方向由右手螺旋法則由基面F1的法矢量n1確定. 取棱邊ab上一單位向量記為nab, 其方向和棱邊ab方向一致. 則邊的凸凹性可由下面的式子給出:

3.2 分割環的識別
首先從實體的邊界模型(B-rep)中提取面邊信息,建立模型的屬性鄰接圖(Face Adjacent AttributeGraph,FAAG)G=〈V,E,A〉. 其中V表示模型中的面;E表示面之間的鄰接關系, 對應模型中的邊;A用于記錄附加在V和E上的屬性, 包括邊的凸凹性、面上環的個數等. 圖6 (a)所示零件的FAAG圖如圖6(b)所示, 這里僅記錄了邊的凸凹性, 其中0表示凹邊, 1表示凸邊.

圖6 零件實體模型及其屬性鄰接圖
由實體模型得到對應的FAAG圖后, 如果直接在整個的圖中查找分割環效率是很低的. 為了提高查找效率, 本文引入混合區域的概念. B-rep中多個相鄰的面所形成的集合稱為區域, 如果區域中同時存在凹邊和凸邊, 那么稱此區域為混合區域[10]. 通過對各種零件模型的分析可以發現分割環一般出現在混合區域中,因此首先根據混合區域的定義遍歷實體模型的FAAG圖標記出模型中的混合區域, 然后在混合區域上識別出所有的分割環. 圖7給出了特征識別的總流程.

圖7 特征識別總流程
分割環的可按下述算法進行識別 :
輸入: CAD模型的屬性鄰接圖AdjFaceGraph *G
輸出: 分割環的集合存儲CLoop的動態數組LoopArr中. vector<PK_EDGE_t>Edges 存放單個的分割環的邊. 模型的每條邊edge可以有三種狀態: 未遍歷、正在遍歷、已遍歷, 設置int 型m_TraversalFlag為標志變量, 其對應的值分別為 0、 1 和-1.


在建模過程中由于特征相交會導致分割環發生交叉, 給分割環的識別帶來一定的難度, 并且對非封閉的分割環還需要構造輔助邊得到閉合環. 這些問題的解決借助圖8進行闡述.

圖8 交叉分割環與非閉合分割環
在圖8(a)所示的模型中查找分割環時a、b、c都可能被搜索, 但很明顯正確的分割環只有a和c. 因為在零件建模過程中拉伸體的草圖是在平面上的, 因此本文提出以下兩個分割環搜索的原則: 1 在多個分割環交叉的情況下優先選擇平面分割環; 2 空間分割環必須是閉合的. 原則1保證b不會被識別為有效的分割環, 原則2保證分割環c會在分割環a后別識別出來.分割環a是非閉合分割環, 需要進行閉合操作. 延伸分割環所在的平面(延伸面)與模型中其他平面相交得到得到輔助邊集合, 以此來封閉分割環a.
3.3 分割環關系圖
在基于特征的設計系統中, 零件的特征要按一定的順序添加到幾何體上, 因此在特征識別中必須重構這一順序, 這一順序與特征建模順序相反, 可以從分割環關系圖中得到. 在特征模型中有些特征依附于其他的特征之上, 這些特征被稱為子特征, 被依附的特征稱為父特征. 在子特征被識別之前必須先識別父特征, 這反應在分割環上就是要確定分割環的先后順序.本文利用實體模型中的幾何和拓撲關系確定各分割環之間的關系, 構建布爾分割環關系圖以確定特征識別的順序, 下面通過圖9中一個簡單的例子來說明分割環關系圖的構建方法.

圖9 創建分割環關系圖
從圖9(a)中的模型可以很容易的看出1是2的子特征、3是4的子特征, 2和4又是基體5的子特征. 分割環3是內環, 其所在的平面是分割環4的一組鄰接面的其中一個面, 很容易得出分割環3上所連接的特征是分割環4所連接特征的子特征, 則可確定分割環3和4之間的先后順序. 分割環1雖然不在分割環2的鄰接面上, 但分割環1所在的平面與分割環2的所有鄰接面都相鄰, 即在分割環2所連接特征的底面上,同樣可以得出分割環應該在分割環1的前面進行特征識別. 分割環2和4都是直接依附于基體5上, 兩者之間沒有依附關系, 不存在先后順序.
得到了分割環關系圖, 特征識別的順序也就隨之確定了, 接下來需要根據分割環來重構設計特征. 掃描體特征是通過某一平面草圖沿著某一路徑生成的,其拓撲結構相對固定, 通常有一個頂面、一個底面和多個側面. 由分割環創建掃描體特征的一般過程參考下圖10進行說明: 由分割環可以很容易得到掃描體特征的一組側面, 通過研究發現掃描體特征的底面一般情況下總是垂直于其側面的一個平面, 因此由掃描體的側面可以得到其底面, 這樣底面的邊界環和已有的分割環形成了一對構造環. 由于特征相交導致有時無法由分割環直接生成掃描截面, 而一般情況下掃描體的底面不會被破壞, 這樣可以通過底面邊界環創建掃描截面. 而掃描軌跡的創建需借助與底面垂直的側面,一般情況下選取垂直于底面的最長的一條側面的棱邊.由于零件模型的復雜程度不同, 有些特征的掃描截面與掃描軌跡的創建十分復雜, 還有待進一步的研究.

圖10 由分割環創建掃描體
對最常見的垂直拉伸的掃描體有如下的判定方法進行識別: 分割環所在的平面垂直于該分割環的一組鄰接面, 且這一組鄰接面都在分割環所在平面的同側,同時該組鄰接面的另一公共鄰接面平行于分割環所在平面. 利用該原則可以很容易的重構出基于平面分割環的掃描體特征, 基于空間分割環的特征重構與之不同, 通過下圖11的例子予以說明.

圖11 基于空間分割環的特征重構示例
在圖11(a)中分割環1、2和4都是平面分割環, 用parasolid內核函數PK_BODY_make_swept_body (profile,path, path_start, &options, &swept_body)可以很容易重構出相應的拉伸掃描體特征. 其中參數profile為拉伸草圖即分割環, 參數path為拉伸路徑, 拉伸路徑是由分割環所形成的平面中點到對應的底面中點所確定的. path_start為拉伸起點即分割環所形成的平面的中點. options是拉伸操作的一些選項, swept_body中保存的是重構出的特征, 如圖11(b)所示; 對于分割環3為空間分割環, 相比于平面分割環對其進行特征重構會復雜一點.由于分割環不在同一平面上所以無法直接像1、2、4那樣重建特征體, 但是分析發現, 若選擇分割環的一組鄰接面中的一個面的邊界環作為拉伸草圖, 以與其垂直的兩個鄰接面的公共邊作為拉伸路徑, 同樣可以創建拉伸特征.
本文提出的特征識別與重構方法已經通過Visual C++2008與OpenGL開發平臺編程實現. 為了驗證本文的方法, 下面的例子是在UG8.0中建的零件模型,保存為XT格式. 該模型中共有7個分割環, 如圖12 (a)所示, 其中有兩個凹環識別出的是凸特征1和5, 5個凸環識別出的凹特征2、3、4、6和7. 重構的掃描體特征如圖12(b)所示. 其中圓柱體1在5之前被識別, 2和3分別在6和7之前識別.

圖12 基于分割環的特征重構實例
本文提出了一種利用布爾分割環識別和重構設計特征的方法. 該方法從實體模型的屬性鄰接圖中識別出分割環, 利用實體模型的幾何與拓撲關系確定各分割環之間的關系, 構建分割環關系圖以確定特征識別的順序,并基于分割環構建掃描體設計特征. 本文完成的工作是對實體邊界幾何模型進行設計特征重構一個初步的嘗試,此外, 本文僅討論了拉伸掃描體設計特征的重構, 更為復雜的其它掃描體特征、過渡特征及如何高效的創建設計歷史構造樹將是下一步的研究目標.
1 Han JH, Requicha AAG. Feature recognition from CAD models. IEEE Computer Graphics and Applications, 1998, 18(2): 80–94.
2 Koo S, Lee K. Wrap-around operation to make multi-resolution model of part and assembly. Computers & Graphics, 2002, 26(5): 687–700.
3 Kim BC, Mun D. Stepwise volume decomposition for the modification of B-rep models. The International Journal of Advanced Manufacturing Technology, 2014, 75(9–12): 1393–1403.
4 Woo Y, Kim SH. Protrusion recognition from solid model using orthogonal bounding factor. Journal of Mechanical Science and Technology, 2014, 28(5): 1759–1764.
5 劉云華,陳立平,鐘毅芳.從幾何實體重建設計特征模型.計算機輔助設計與圖形學報,2003,15(7):836–841.
6 王興東,鄒光明,孔建益,佘林,胡于進.基于設計特征的概念設計解產生及其評價.武漢科技大學學報(自然科學版), 2006,29(4):372–375.
7 姜華,王濤,操晴,熊光楞.設計歷史的建模方法.機械科學與技術,2000,19(2):197–201.
8 羅月童,樊曉菁,等.基于面殼封閉的B-rep至CSG轉換算法.計算機輔助設計與圖形學報,2014,26(10):836–841.
9 Fu MW, Ong SK, Lu WF, et al. An approach to identify design and manufacturing features from a data exchanged part model. Computer-Aided Design, 2003, 35(11): 979–993.
10 Ma LJ, Huang ZD, Wu QS. Extracting common design patterns from a set of solid models. Computer-Aided Design, 2009, 41(12): 952–970.
Design Feature Reconstruction for B-Rep Solid Models
LI Zheng-Lei, ZHANG Ying-Zhong, LUO Xiao-Fang
(School of Mechanical Engineering, Dalian University of Technology, Dalian 116024, China)
Solid models only provide low-level geometry information of products and do not have high-level feature information. As a result, it is very difficult to modify the solid model. It is necessary to reconstruct design features from the solid model and transform a solid model to a feature model. The cutting loop can be identified by a cutting loop search algorithm and then the relation graph of cutting loop is built. According to the relation graph, design feature can be identified and the feature model can be built. Finally, a reconstruction example is provided, which demonstrates the effectiveness of the presented method.
solid model; design feature; cutting loop; feature recognition; feature reconstruction
國家自然科學基金(54375069)
2016-03-15;收到修改稿時間:2016-04-18
10.15888/j.cnki.csa.005468