Posted on 2021-03-06 11:34
eryar 閱讀(2286)
評論(0) 編輯 收藏 引用 所屬分類:
2.OpenCASCADE
OpenCASCADE Connect Edges to Wires
eryar@163.com
1 Introduction
在邊界表示法(BREP)中,WIRE是由首尾依次相連的EDGE組成的閉合結(jié)構(gòu),有的內(nèi)核也叫做LOOP。BREP結(jié)構(gòu)中,就是通過WIRE來限定FACE的邊界范圍。FACE中的幾何曲面都是用參數(shù)曲面形式來表示,簡單的通過參數(shù)U,V范圍來限定,只能得到一些簡單規(guī)則的曲面片。不規(guī)則的任意形狀的曲面片,只能通過WIRE來限定。例如,地球這個球面,中國的邊境線就相當(dāng)于WIRE,限定出中國的疆土。
有時在構(gòu)造WIRE的時候,拿到的是一些無序的EDGE,如何將無序的EDGE生成WIRE,OpenCASCADE中提供了多種方法,下面分別來對這些方法進行介紹。
2 BRepBuilderAPI_MakeWire
BRepBuilderAPI_MakeWire是生成WIRE最直接的類,底層使用類BRepLib_MakeWire。生成WIRE的時候有兩種方式:一種是依次Add邊EDGE;一種是添加一些邊,這些邊可以是無充的。兩種方式的處理邏輯是不同的,對于第一種依次添加EDGE的方式,則要求添加的EDGE是相連的。若不相連或者有其他錯誤,會直接給出錯誤信息:

對于添加一些邊EDGE的方式,會對添加的EDGE做一個相連檢查。
3 ShapeAnalysis_WireOrder
ShapeAnalysis_WireOrder主要用于將無序的EDGE生成WIRE時,EDGE的首尾依次相連的順序Order。這個類的方式就簡單一些,直接根據(jù)EDGE的兩個端點坐標(biāo)來檢查相連狀態(tài)。這個功能原來也介紹過:OpenCASCADE中散亂Edge生成Wire
https://www.cnblogs.com/opencascade/p/WireOrder.html

4 ShapeAnalysis_FreeBounds
ShapeAnalysis_FreeBounds這個類中提供static函數(shù)ConnectEdgesToWires()用于將無序的EDGES生成一些WIRE。所以這個類可以用于檢測一些無序的EDGE中存在幾個WIRE。
5 BRepAlgo_Loop
BRepAlgo_Loop用于將一個FACE上的多個EDGE生成多個WIRE。功能與ShapeAnalysis_FreeBounds中的ConnectEdgesToWires類似,但多個要求,這些EDGE都是一個FACE上的EDGE,而且對這些EDGE的Orientation也有要求。若Orientation不是依次相連,則也會生成WIRE失敗。
6 Conclusion
綜上所述,OpenCASCADE考慮了將無序EDEG生成WIRE的情況。由于是多人協(xié)同開發(fā),造成重復(fù)的代碼實現(xiàn)。建議將重復(fù)實現(xiàn)整理歸納,只保留一份穩(wěn)定性、性能好的實現(xiàn)。
為了方便大家在移動端也能看到我的博文和討論交流,現(xiàn)已注冊微信公眾號,歡迎大家掃描下方二維碼關(guān)注。