梅敬成 三維CAD軟件發展歷程:過去,如今和將來 (ACIS,Parasolid,OCC, 中望OV,華天CRUX IV )
算法
中望3D 2020 圖層管理器(圖層的設置+移動圖層+複製圖層)
ide
當前,因爲容差帶來的數值計算不穩定性、幾何表示不許確的問題廣泛存在三維建模過程當中。如不一樣的CAD平臺進行數據交互會產生模型質量損失、容差模型在新的CAD平臺中進行編輯修改發生錯誤或直接失敗。
函數
三維幾何建模平臺因爲採用不一樣的建模核心和幾何建模方法,在幾何計算、幾何精度設定的方法.上面存在差別。目前80%三維CAD平臺所採用的兩大建模內核均爲ACIS或Parasolid內核,其中ACIS內核使用的是0.001mm的建模公差精度,Parasolid 內核則使用的是0.0254mm。由於公差精度差別而致使的數據導入後幾何丟失、實體布爾運算操做失敗、工程圖投影錯誤等幾何容差問題客觀存在。工具
當前不一樣的CAD平臺均使用不一樣的容差建模技術,用來優化由於幾何精度而產生的問題,其中有使用全局的固定公差方法來保證模型全部設計和細節特徵維持一致的幾何建模精度,也有使用自適應公差的作法來提升建模的成功率。oop
三維幾何建模是指經過計算機及其圖形系統來表示和構造形體的幾何形狀,創建計算機內部的三維模型。從最先的二維空間的手工圖板繪圖,到60年代開始的三維計算機繪圖,期間三維建模技術經歷了從線框建模、曲面建模、實體建模等發展過程。近年來直接建模、混合建模、細分曲面建模等細分技術也做爲補充性的建模技術應用到不一樣的三維CAD設計系統中。目前CAD集成化系統廣泛採用實體模型做爲產品造型系統,成爲從微機到工做站上各類圖形系統的核心。
測試
實體建模技術(Solid Modeling)的核心是CSG(Constructive Solid Geometry)和B-Rep(Boundary Representation)模型。CSG表達的是建模的順序過程,而B-REP表示的則是三維模型的點、線、面、體信息,及造型結果的三維實體信息。優化
目前大多數主流的CAD開發平臺廣泛採用CSG和B-Rep混合的實體幾何建模方式,隨着幾何建模技術在基礎理論方面的日漸成熟,發展出幾大著名的建模核心,包括Parasolid、ACIS、Granite,同時基於這些建模核心推出了許多商品化的通用及專用的CAD設計系統,諸如CATIA、NX、PRO/E、Solidworks,但目前這些著名的CAD/CAM系統知識產權均給歐美的公司所擁有並壟斷。spa
我國對三維幾何建模技術的研究起步較之歐美晚,高校方面始於60年代末。當時只有爲數很少的幾個產業部門(如機械、航空、船舶等)和幾所高等院校開始研究CAD技術,隨着國家的重視,多所高校都逐漸加大這方面的研究投入,譬如北航的唐榮錫教授從1980年到1984年就與課題組教師和研究生研製出了中國第一個多面體實體造型原型系統PANDA,隨即向國內研究所和學校低價或無償提供源程序,公開技術;以後又開發出了基於線框和NURBS曲面的幾何造型、數控加工原型系統PANDA4,但因爲諸多緣由,PANDA4未能實現商品化。儘管如此,在三維幾何建模研究的領域,我國逐漸積累了優秀的技術人才,並且關於幾何計算、幾何圖形學的學科研究也愈來愈多,涉及的也愈來愈深刻。90年代初,浙江大學在著名數學家蘇步青的指導下成立了幾何設計與圖形學科研組(CAGD&CGGroup),迄今爲止一直是我國活躍在幾何建模技術研究的有生科研團隊,團隊的成員也均在幾何計算、幾何逼近和幾何處理等領域的研究取得必定的成果。設計
企業方面,近年來,有不少CAD/CAM技術應用的公司也嘗試轉變方式,經過併購、重組和合做的方式,引入外國的核心建模技術。由於通過多年的經驗教訓,企業要直接開發一套全新的建模平臺用以和成熟的建模核心進行競爭不大現實,因此經過技術引入的方式成爲一-種新的技術嘗試。2004 年,北京數碼大方基於美國子公司IronCAD三維設計平臺推出了《CAXA 實體設計軟件》,其使用的是Parasolid和ACIS的雙核心,目前最新版CAXA實體設置2020 ;2008年,山大華天與日本的UEL公司進行合做後,基於其三維設計平臺CADMeister 推出了《SINOVATION 2008》,目前最新版爲SINOVATION9.1,而且其源代碼相互開放和共享;2010年,中望龍騰軟件在年收購美國VX CAD/CAM後推出了《中望3D2010》,目前最新版爲中望3D2021,其平臺使用的是OverDrive的建模核心,享有源代碼的徹底知識產權。這些企業的發展也爲相關技術人才提供了深刻研究三維幾何建模技術的機會與平臺。3d
1.幾何容差問題的研究狀況
在三維幾何建模中,因爲偏差帶來的數值計算不穩定性、幾何表示不許確一直是重要的研究問題。主要緣由是在幾何建模當中廣泛應用的邊界表示法(B-Rep)中,其幾何實體(點、線、面)在計算機當中均被看作理想的數學幾何,但實際,上只有不多一部分數學物體可以在計算機中精確表示,而大部分的幾何物體在計算機中都只能以浮點數來近似表示。浮點數表示的幾何物體是不精確的,這個不精確的表示就致使了幾何實體的幾何與拓撲之間的不一致性,也就是偏差的產生。如圖1-1a)中所示是正確的布爾求和的結果,可是由於半徑的浮點表示以,及數值操做計算,其相交線如圖1-1 b)所示該變成兩條交線,這就是偏差致使的幾何拓撲結構變化。
針對上述偏差問題,從80年代以來,圍繞關於如何進行穩定的幾何表示及計算的問題,有大量的研究工做,也所以發展出兩種主流的解決方法:精確方法和非精確方法,精確方法認爲偏差產生的根源來源於計算機內採用的浮點算法,能夠直接採用準確計算,但這種方法隨之.給否認,由於整數運算和有理數運算能作到絕對精確,但(根號2)這樣的有理數沒法作到絕對精確。隨後Karasick 等人也指出就算是簡單的有理運算也沒法獲得徹底精確的結果。以後一些研究者從另外一個角度考慮對幾何設計與計算中偏差的處理,這一類方法並不以獲得精確的計算結果或逼近結果爲研究目的,二是經過適當的方法對運算後產生的偏差給予描述和界定,這種方法稱之爲「非精確方法」。
基於「非精確方法」的理論,維也納工業大學的Pottmann首次從純幾何的角度,研究幾何計算中偏差的傳播問題,開闢了幾何容差(Geometric Tolerance)的研究領域。使用凸多邊形表示偏差區域,基於偏差分析方法中的最壞狀況法,實現一種偏差分析工具,用以檢查幾何算法或幾何結構中引進的偏差量的傳播狀況和危險程度,從而提供幾何算法優劣的判別標準。
隨着幾何建模技術的發展,對幾何容差的研究和理解也逐漸深刻,建模平臺應用當中由於容差引發的建模問題日漸受到幾何建模平臺的開發商所重視。EDS公司的幾何建模內核Parasolid發現從其它CAD系統導入數據(尤爲是裁剪曲面)存在數據丟失的問題,並且以後的編輯操做容易引發問題。爲此Parasolid技術部門的David J.Jackson認爲這些問題就是不一樣CAD幾何精度體系,致使數據交換後的幾何容差問題,提出了一種容差幾何(Tolerant geometry)和容差建模(Tolerantmodeling)的技術方案。經過爲每條邊賦予不一樣的容差,使模型交互可靠、精確,避免了幾何數據的丟失、縫隙的產生及其餘偏差。而且從2008年發佈UG4.0版本開始就在相關命令中支持局部的公差設置,用以解決此類容差模型的問題。圖1-2中分別表示幾何模型的三種狀態,圖1-2 a)是沒有容差的精確模型、圖1-2b)是存在間隙的問題模型、圖1-2c)則是賦予了容差的容差模型。
而另外一個主流的三維幾何內核ACIS則提出一種基於經驗判斷的容差模型定義規則:當兩點距離小於時,認爲兩點重合;當兩張鄰面的法矢夾角小於
時,認定兩面有公共切平面;用樣條擬合一條精確曲線的逼近偏差爲
;計算機對數字的最大分辨能力爲
,即將
設定爲零。對於計算中出現的其它建模問題,還須要約定特殊的處理方法。正由於這些不一樣的CAD系統的精度設置方法和數值的差別,形成了異構系統間交換產品幾何模型數據的困難,當前很多CAD設計系統都在完善修補本身產品的幾何容差體系,以便與其餘CAD系統更好集成。
2.幾何容差的幾何原理
邊界表示法(B-Rep)是當前被主流建模系統廣泛使用的實體模型的表示方法,幾何容差中的處理和操做對象都是基於B-Rep模型的,對B-Rep模型的幾何拓撲結構分析,能夠總結出幾何容差在B-Rep模型中的存在形式。
2.1 B-Rep模型的幾何拓撲結構
計算機中表示三維幾何模型,根據幾何的特色能夠分爲線框模型、表面模型和實體模型三類。若是按照表示幾何的表示方法進行分類,實體模型又能夠分爲分解構造表示CSG(Constructive Solid Geometry)和邊界表示B-Rep(BoundaryRepresentation)兩大類。基於兩種表示方法的特色,目前在主流的幾何建模系統中,都採用將二者結合起來、共同表示實體的方法。主要以CSG法爲系統外部模型、B-Rep法爲內部模型。其中CSG法適於作用戶接口,B-Rep法則適合在計算機內部描述數據模型,這樣能夠完整的表達物體的幾何、拓撲信息,便於構造產品模型。本文對容差建模的研究,其主要的研究對象也是基於B-Rep方法構造的幾何模型。
邊界表示法中通常將模型的拓撲結構按層次分解爲如下對象:
1)體(Body):是實體對象的最高層次,由封閉表面圍成的有效空間
2)殼(Shell):互聯的線或面的集合,它能夠界定實體的外部或內部區域
3)面(Face):如圖2-1,面是被一個或多個邊(Edge)組成的環(Loop)所界定的曲面中的聯通區域
環(Loop):如圖2-2中,面的邊界中互相鏈接的部分,它由一系列的有向邊組成,一般是封閉的。
4)邊(Edge):相鄰面的交界,由頂點界定
5)有向邊(Coedge/Pre-edge):如圖2-3中,是兩條共邊緣的集合
6)頂點(Vertex):邊的端點,爲兩條或兩條以上邊的交點
圖2-4的楔形體經過B-Rep的描述方法,展現了面(Face)、邊緣(Edge)和頂點(Vertex)的構成,其中包含了4個面,6個邊緣,6個頂點,同時6個有向邊,又封閉成4個環。
綜上,在邊界表示法中,邊界表示是按照體一殼一面一環一邊一點的層次,並詳細記錄構成形體的全部幾何元素的幾何信息及其相互鏈接的拓撲關係。所以在進行各類運算和操做中,拓撲結構不斷髮生變化,拓撲關係也在不斷重組,這個過程就涉及容差的計算。
2.2幾何容差在拓撲結構中的三種存在形式
對於邊界表示法的B-Rep模型來講,其主要構成就是一張張的面,所以不管是建模仍是模型修復,都必須以面做爲基礎。精確的沒有容差的B-Rep模型,面與面之間的鏈接是徹底重合如圖2-5 a),但由於幾何容差,面與面之間將存在間隙,如圖2-5 b)。
在圖2-5 b)的六面體中,提取三個相連面進行分析。如圖2-6,描述面與面之間鏈接關係的邊(Edge)以及描述邊與邊之間鏈接關係的頂點(Vertex)由於幾何容差產生間隙,本來精確模型中的,3條共邊緣分裂成6條,1個共頂點也分裂成3個。所以在存在幾何容差在B-Rep模型中的存在形式主要是依賴於頂點、邊緣和麪,對幾何容差模型的問題研究從根本.上來講就是對容差頂點、容差邊緣和容差面的分析研究。
1)容差頂點(Vertex)
頂點(vertex)的位置用幾何點(Gp__Pnt)來表示。點是幾何造型中的最基本元素,自由曲線、曲面或其餘形體都可用有序的點集表示。用計算機存儲、管理、輸出形體的實質就是對點集及其鏈接關係的處理。在正則形體定義中,不容許孤立點存在。頂點的另外一個 重要屬性是容差(Tolerance),用來表示位置精度。
如圖2-7,頂點容差T的幾何意義爲以頂點爲圓心半徑爲T的球。這個球包含全部與這個頂點相連的邊的曲線的端點。
2)容差邊緣(Edge)
邊(Edge)是邊界表示法中的重要結構,由於邊界表示法(B-Rep)是用形體的邊界來描述形體的一種方法。B-Rep認爲形體是由有限數量的邊界表面(平面或曲面)構成,而每一個表面又由若干邊界邊與頂點構成,全部的單元面構成了形體的邊界,形體的邊界將形體和周圍的環境分隔開來。
圖2-8是ACIS建模核心中對容差邊的描述,容差模型從邊緣(Edge),有向邊(Pre-edge)獲得一個新的容差邊緣Tedge,其存儲容差而且以靜態參數化來約束邊緣。邊緣的公差值定義爲有二維空間上有向邊(Pre-edge)與相鄰面的最大距離。
3)容差面:
面(Face)是用來描述三維實體邊界的拓撲實體。面是由底層的曲面及一個或多個環(Wire)來描述。例如,一個圓柱體包含三個面:底面、頂面和側面。
每一個面都是無限的(***的)(Geom_Plane 和Geom_CylindricalSurface),經過邊界來限定無限的面獲得面。即用位於Geom_Circle.上的邊造成的環,限定出底面和頂面。側面包含四條邊:其中兩條邊與頂面和底面其享,剩下的兩條邊是縫合邊(Seam edge)。
如圖2-9所示,面的容差的幾何意義是包圍面的一個具備厚度的板。
與邊和頂點的容差相比,建模算法中涉及處處理面的容差的狀況相對要少。一般都使用建模公差的默認值,並且面的容差<=邊的容差<=頂點的容差。
2.3幾何容差產生的緣由
經過對B-Rep模型中幾何、拓撲關係分析,能夠明確的瞭解到要在三維建模系統中要完整的描述一個幾何模型的須要保證幾何元素的完整性、拓撲關係的正確性。但在計算機進行幾何建模(創建數學模型)的過程當中,對一個完整複雜的幾何模型經過最基本的幾何構造和拓撲關係描述的時候,首先在單一平臺會由於計算偏差、幾何的迭代產生幾何容差,其次跨平臺的核心算法差別,也會在數據交換後產生幾何容差。
下面將對幾何容差產生的緣由作具體的分析。
2.3.1不一樣的幾何建模核心
幾何建模核心是指幾何建模平臺使用的幾何建模引擎,是幾何建模中最關鍵的算法集合。目前主流的幾何建模核心是美國的Parasolid和ACIS,發展比較早、應用也至關普遍。俄羅斯的C3D建模核心也在一-些軟件平臺獲得應用,另一個代碼開源的建模核心是Open CASCADE,主要一些教育機構和企業簡單的CAX軟件利用其進行開發,商業化程度較低。國產的建模核心的表明是中望3D使用的Overdrive核心。
幾何建模核心有一個線性公差(Linear tolerance),這個公差數值是用來嚴格零值使用的。當兩個數的差值小於這個公差的時候,則認爲它們是同樣的。
如圖2-10 中Parasolid的線性公差示意圖,藍色區域表示公差區域,只要在數值在 區間內,都是等同零值。
目前不一樣建模核心自己使用的線性公差是不同的,主流的建模核心的公差可見表2-1。
除線性公差外,全部幾何建模平臺還有-一個建模公差(Modeling tolerance),建模公差不一樣於線性公差,其控制的不是數值的精度,而是幾何拓撲結構中表明兩個幾何元素的間距在多少之內能夠被視爲是足夠接近。譬如當頂點(Vertex)和邊緣(Edge)小於這個公差的時候,建模系統就認爲他們是重合一致的。
如圖2-11所示,藍色點V一、V2是兩個頂點,藍色線則是兩個邊緣,紅色圓柱區表示的就是建模公差帶,只要頂點V一、V2在圓柱的頂面和底面圓圈內,建模系統認爲共點,同理若是藍色邊緣在圓柱內,則系統認爲共邊緣。
GB/T18784-2002(CAD/CAM 數據質量標準)推薦的建模公差值是0.02,但現實狀況中,基於幾何核心開發各個三維CAD/CAM設計平臺所使用的建模公差各不相同,如表2-2是各主流CAD平臺的建模公差值。
目前這種差別化的現實狀況沒法改變,其中一個主要緣由是不一樣的幾何造型引擎中對幾何拓撲的組織和描述、幾何算法的差別,每一個建模引擎都會根據實際的運算法則選擇最適合本身的建模公差值;另一個緣由是應用幾何造型的CAD/CAM平臺因爲面對的不一樣行業和客戶要求,難以使用統一的建模公差。如CATIA廣泛應用於航天汽車製造的高端行業,其默認建模公差使用的是0.001mm,而面向通用機械製造行業的中端CAD平臺Solidworks則用的是0.0254mm。
2.3.2 不一樣的幾何模型設計要求
就算使用統一的幾何建模平臺進行設計,考慮到實際模型產品的應用場景和整體和局部的細節要求須要各類不一樣的公差,首先就不一樣產品的應用場景而已,如圖2-12 a)中一款高端的汽車的幾何模型的公差要求確定要比圖2-10b)一個普通做業的小推車的幾何模型公差要求要高。
其次就模型自己而言,整體的公差和局部的公差也存在差別。這就是大尺寸用大公差、小尺寸用極小公差的設計原則。例如對圖2-13的某推動器零件(外形尺寸1500x600x450mm)進行建模時,其外形的幾何建模公差只要設定成0.1mm就能知足裝配的要求。但對於某些內部的精密零件如機電裝置或軸承表面,須要達到0.005mm的建模公差,才能保證後續CNC加工的質量。
綜上,幾何模型的應用場景不同,其設計過程當中對幾何的精度要求存在差別。固然理論,上均使用統一的極小的建模精度能夠解決這個問題,但現實上這種方案是不可行也沒有必要。首先基於幾何計算考慮,極小的精度公差會致使計算過程更長、儲存的數據量更大;其次從產品的開發製造流程分析,極小的精度公差會給後續CAM加工、CAE分析增長時間和人力的成本。
2.3.3數據交互標準和方法的差別
若是僅在同一個CAD系統中進行數據交互,採用中性文件格式,如NX的中性格式X-T/X-B,CATIA中的SAT均是系統的中性格式,能夠避免幾何精度的損失,保證數據質量,從而減小几何容差的問題。但若是數據交互雙方採用不一樣的系統,就必須採用標準的協議格式進行轉換,例如STEP、IGES、VDAFS、SET等交換數據。
就應用最爲普遍的數據格式IGES和STEP分析,二者均是通用的國際數據交換標準,IGES是最先出現的CAD產品數據交互規範,是1981由ANSI提出的標準,STEP則是1984 年由ISO(國際標準化組織)提出的數據標準。但IGES和STEP格式因爲精度等級的差別、幾何語義的差別,在二者間進行數據交互會出現精度的偏差。
圖2-14中的示例是一-種常見的設計情景,從A系統中把幾何模型導出STEP格式後,導入B系統進行後續編輯,而後再導出IGES格式到其它系統,這個時候的IGES格式對比A系統的源數據就發生了精度的變化,也就產生了幾何容差的問題。
2.4幾何容差引發的建模問題
2.4.1數據導入後模型質量損失
數據導入的質量問題廣泛發生在不一樣三維CAD/CAM系統平臺之間的數據交互過程當中,而由幾何容差引發的主要是由於不一樣平臺間建模精度的不統一。
2.4.1.1幾何原型分析
1)高精度的模型導入到低精度的CAD系統當中
圖2-15由邊緣(e1,e2,e3)構成的狹長面(facel),當facel 的面積區域小於建模公差的時候,由建模公差的定義可知:邊緣el,e3被認爲重合。
以後會有兩種結果出現,具體根據不一樣的CAD系統的算法處理。比較通用的算法處理如圖2-16是延伸e五、e6建立相交點,而後從頂點v1鏈接此相交點建立新的v3,造成封閉的區域。
從上述分析能夠得出,在高精度的幾何模型導入到低精度的建模公差的系統中,在交互過程當中,狹長面(Tiny face)導入後丟失了。
2)低精度的模型導入到高精度的CAD系統
低精度的模型導入到高精度的CAD系統中,更容易出現問題,是由於低精度系統中認爲重合的有向邊(Pre-edge)和頂點均被認爲是寬鬆的,這個是致使頂點(Vertex)開叉和開放間隙(Gap)的主要緣由。
圖2-17中的低精度模型的顯示的兩個平面face1和face2的有向邊緣(Pre-edge)能夠理解爲右圖示中的公差有向邊(TPre-edge),因爲在建模公差的公差帶範圍內,因此在原系統中是重合的。
但導入的高精度建模公差的系統中,如圖2-18中因爲新的系統使用更小的建模公差值,公差棒小於原低精度模型的有向邊的間隙,在新的系統中就認爲他們不是重合而是開放的,這就是導入質量中間隙造成的主要緣由。
圖2-19中的低精度模型的4個邊緣(e1,e2,e3,e4)構成的頂點v1在原幾何建模系統由於大公差的緣由是認爲重合的,但導入到新的系統後,在更小的建模公差的公差棒範圍內,不被認爲重合,因此形成頂點v1開叉。
2.4.1.2實際案例呈現
1)面丟失
圖2-20中的輪轂的幾何模型,從原設計系統導入的新的系統中,放大後如圖2-21中一狹長條形面丟失;
2)縫隙(Gap)
產生圖2-22中的幾何模型,從原設計系統導入的新的系統中,使用開放邊檢查工具可見多處存在開放的間隙(Gap):
3)頂點(Vertex)錯誤
圖2-23中的汽車剎車鉗的幾何模型,從原設計系統導入的新的系統中,線框模式下查看或用專用的模型質量檢查工具,可見頂點開叉:
2.4.2布爾運算操做失敗
布爾運算做爲建模主要操做之一,基本全部的基礎建模特徵以及增強筋、螺紋、用面裁剪/分割體等幾何建模命令都會涉及,而布爾運算的底層是幾何相交線的求交,因此因爲幾何容差致使的布爾運算失敗就是相交線的求交失敗。
2.4.2.1幾何原型分析
圖2-24中當幾何容差的模型A在face1和face 2建的邊緣處有幾何容差,而模型B的求交面(face 3)恰好在此邊緣求交,求交失敗。
當幾何容差的模型A在頂點v1處開叉,而模型B的求交邊緣(edge 2)恰好穿過此頂點,求交失敗。
2.4.2.2實際案例呈現
如圖2-25所示模具分型設計中,執行布爾求差的操做,從本體(Base)減去工具體(Operator),因爲幾何容差的問題,致使計算結果錯誤,出現開放面。
2.4.3工程圖投影錯誤
幾何容差引發的工程圖投影錯誤,主要是由於射線穿過了容差幾何,本應被遮擋的輪廓線被誤判成爲了可見線。
2.4.3.1幾何原型分析
1)當投影射線(Ray)穿過存在幾何容差的e1,本來應該認爲被遮擋的e1,因爲容差間隙的存在,邊緣e2會被誤認爲沒有遮擋,致使本應顯示爲消隱虛線卻成爲可見實線。
2)另一種狀況是如圖2-27,當投影射線(Ray)穿過存在邊緣e1,e2.e3.
e4構成的幾何容差的頂點v1,與射線相交的邊緣e5的消隱狀態會改變,此容差頂點區域的e5段會被誤判爲可見實線。
2.4.3.2實際案例呈現
如圖2-28所示的缸體模型,由於存在幾何容差,如圖2-29某些輪廓線本來屬於消隱虛線,但投影后給誤判成了可見線。
3.容差建模的技術分析
容差建模就是在三維設計平臺中接受來自存在幾何容差的「不許確數據",經過賦予存在偏差的非精確模型必定的容差範圍,既增長了導入的數據的範圍,也解決了與導入不許確的數據或模型幾何泄露相關的問題。同時容差建模技術還能夠保持有效拓撲的同時接受較不精確的幾何數據、容忍頂點和邊緣的逼近狀況,修復頂點和邊緣幾何容差偏差,建立具備正確拓撲的容差模型。
容差建模技術也可用於處理幾何逼近的非精確的建模操做,包括布爾運算、混合計算等,並且應用容錯建模的技術不會影響幾何模型當中精確建模的穩健性和可靠性。
3.1基於全局單一容差的容差體系
傳統的邊界表示(B-Rep)實體建模使用固定統一的全局容差來執行計算,但其優勢和缺點均是明顯的。優勢是全部計算都只執行一個容差數值來進行判斷和計算,存儲的信息量小,計算速度快。缺點是始終固定的容差值,數值過大會致使精度損失,模型質量降低,太小的數值反而會增長計算時間,並且會把導入的來自其它平臺的數據識別成開放的間隙。
另一個更嚴重的問題是會致使建模不穩定。如圖3-1中使用固定公差的一個建模例子,藍色曲線分割一個面,若是上部短邊緣的長短小於4倍的容差值,分割後的兩條短邊會因爲兩個頂點的容差重合,此條短邊在系統中會被認爲是重合的頂點而不能正確生成。
3.2基於自適應的容差的容差體系
如圖3-2中,基於自適應的容差方法是在涉及幾何拓撲變化的過程當中,當涉及容差的計算的時候,經過特定的算法計算拓撲結構中的頂點、邊緣位置,在幾何模型不一樣位置使用最適合的容差值,這種方法可以保證拓撲結構使用最優的容差值,不會出現固定統一容差方法的建模穩定問題.
理論上自適應的容差方法是最優的,但實踐證實這種方法在應用上不可行,主要緣由是這種方法的計算過程複雜、計算速度慢。特別對於參數化過程的幾何建模平臺,因爲有特徵樹驅動模型,只要重生成建模過程,就要從新進行計算,效率低下的問題嚴重。
3.3基於中望3D的容差建模的應用
中望3D是國產的CAD平臺,雖然和主流平臺同樣均使用B-Rep表示法的實體模型,可是使用的是不一樣於Parasolid和ACIS的Overdrive建模核心,因此在底層核心的算法上面是有差別的。經過上述對容差建模的技術方法分析,使用一種基於局部容差的容差建模方法,完成容差模型的算法定義和計算法則,並基於這個定義和法則在軟件中經過編寫代碼實現VxVtxGetTol和Vegetal兩個獲取容差頂點和容差邊的數據的函數接口。
3.3.1基於局部容差的容差體系
圖3-3表示的是基於局部容差的容差建模方法,吸取了自適應容差方法中使用局部容差的優勢,但容差值的計算方式不是自適應判斷的,而是通過對實際幾何容差狀況的分析,設計一種定義規則,來計算和獲取容差頂點和容差邊緣的數據,並且對幾何容差範圍作一些限制,超過合理範圍的大容差的幾何拓撲不進行處理,維持其幾何容差。
3.3.2容差邊緣的定義與計算法則
容差模型從邊緣(Edge),環邊(Pre-edge)獲得一個新的容差邊緣Tedge,其存儲容差而且以靜態參數化來約束邊緣。邊緣的公差值定義爲有二維空間上有向邊(Pre-edge)與相鄰面的最大距離。
3.3.2.1容差邊緣的模型分析
除了在數值上考慮對容差邊緣的定義,在平臺應用上,還要考慮能被判斷爲容差邊緣的因素須要不至於破壞其它拓撲結構。所以對容差邊緣的定義還須要基於一些應用的案例進行分析從而限定。
1)案例一:圖3-4中Pre-edge和公差邊緣間存在較小gap,但範圍可控,沒有破壞LoopA和LoopB,是合格的容差邊緣。
2)案例二:圖3-5中Pre-edge和公差邊緣存在較大gap,若是不進行修復或容差建模介入處理,當使用P1分割公差邊緣的時候,新生成的Vertex會是一個壞的有問題的Vertex
具參考圖3-6,能夠看到公差範圍已經跨越兩個Vertex之間
3)案例三:在圖3-7中,在Edge和Pre-edge端點存在gaps,當使用P1分割邊緣的時候會引發失敗,
3.3.2.2容差邊緣的算法定義
綜合上述對幾何容差邊在實際應用狀況的分析和比較結果,在中望3D平臺中對容差邊緣的判斷規則設定以下:
1)設定默認建模公差爲VgTolPoint()-0.01mm,開放自定義設置的範圍爲
V_TOL PROX-MIN()=0.0001mm
V-TOL PROX-MAX()=10.0mm
2)容差的數值判斷範圍適用於容差邊緣和容差頂點,與VgTolPoint()關聯設定爲:
TolPointExact()=0.001xVgTolPoint
TolPointLoose()=10.0xVgTolPoint
在中望3D平臺中對容差邊的計算定義以下,並經過編寫代碼造成VxEdgGetTol函數在軟件平臺實現:
1)邊的局部容差由環邊的最大距離決定。若是邊只有一條環邊,那麼邊的局部容差爲0;
2)若是邊有兩條環邊,那麼邊的局部容差等於兩條環邊的最大距離;
3)若是邊有多條環邊,那麼邊的局部容差等於多條環邊兩兩距離的最大值。
如圖3-8所示,邊有三條藍色的有向邊,若是有向邊1和有向邊2之間的距離爲d一、有向邊2和有向邊3之間的距離爲d二、有向邊1和有向邊3之間的距離爲d3,那麼邊的局部容差dLocalTolerance=max(d1,d2,d3}
3.3.3容差頂點的定義與計算法則
如圖3-9中,包含容差值的容差頂點Tvertex派生自頂點Vertex,各自公差值表示從Vertex幾何體到在頂點附近終止的全部相鄰邊緣的端點的最大距離。容差頂點是用於限制Edge或Tedge的二維拓撲實體,而幾何模型的拓撲結構保持不變。
若是它們的點之間的距離小於容差頂點和全局建模公差的最大值,則容差頂點和頂點是被認爲重合的。
3.2.2.1容差頂點的模型分析
跟容差邊緣同樣,不是全部在邊緣的交叉處開裂的頂點,都應該被定義爲容差頂點,除了數值的合理設定,還要考慮容差頂點不至於引發幾何模型拓撲幾何變化的,才能被定義爲良好的容差頂點,下面將分析幾種典型的容差頂點的案例。
1)案例一:如圖3-10中的頂容差頂點,因爲頂點的偏差範圍小於Edge 1和Edge 2的距離,能夠被認爲是良好的容差頂點,在此處幾何邊緣的交點能夠被認爲是重合的。
2)案例二:如圖3-11中,Loop A和Loop D之間存在頂點位置一個更大的間隙,Edge1和Edge2之間的最短距離小於頂點公差的範圍。
不然如圖3-12所示,假設在Edge2處存在一個分割點(Split point),而這個分割點恰好落在容差頂點區域上,Edge1也被認爲受到分割,那麼就會由於頂點公差太大,致使分割Edge2失敗或者分割錯誤。
所以這種頂點開叉的狀況,不適宜定義爲容差頂點,而須要把頂點開放間隙,必須使用模型修復和模型重建的方法來從新構造幾何。
如圖3-13中在LoopA和LoopB之間構建一條新的邊緣。
3)案例三:圖3-14中,Loop A和Loop D之間存在在頂點位置一個間隙,小於Edge 1和Edge 2的之間的最短距離。可是頂點的偏差範圍跨越了Edgel的Vertex1,會致使Edge1引發退化。
所以這種頂點開叉的狀況,也不適宜定義爲容差頂點,一樣須要進行幾何修復。
圖3-15和圖3-16分別是兩種能夠修復的結果。
經過上述的容差頂點案例的分析,容差模型中的容差頂點的定義不只要有合理的公差範圍,並且須要考慮幾何拓撲的結構。不然容差頂點不但沒有起到增長模型容忍度的做用,反而引發其它的建模問題。
3.2.2.2容差頂點的算法定義
在中望3D平臺中對容差頂點的判斷規則跟容差邊緣同樣,均使用相同的範圍限定。
對容差邊的計算定義以下,並經過編寫代碼造成VxVtxGetTol函數在軟件平臺實現:
1)容差頂點的容差大小應該小於任何相鄰邊的最小距離Tvertex D(Edgel->Edge2)
2)容差頂點不該該跨越任何非相鄰邊緣
3)容差頂點不能跨越任一相鄰的整邊緣
4)頂點公差的大小應該小於V_TOL_PROX_MAX
3.4算法結果的測試
在中望3D平臺基於局部容差方法的優化,分別完成了對容差邊緣和容差頂點的計算函數VxVtxGetTol和VxEdgGetTol並集成到中望3D平臺中進行體現,如下是新版本中的成果體現及同平臺新老版本的對比,及與其它主流平臺的結果對比。
3.4.1中望3D平臺中的結果驗證
對全局默認建模公差設定:
如圖3-19中的組合和分割命令的對話框截圖,全部涉及容差計算的建模命令均實現支持局部容差的設定:
實際案例的結果驗證:
使用實際的模型例子來驗證局部容差的方法是否正確運行,首先如圖3-20中,在中望3D的平臺基於默認的0.01mm的容差來建立一個封閉的六面體,而後將幾何體以偏移0.05mm的解散爲6個單獨的幾何面。這時候邊緣的間隙在0.06mm
驗證一:從新以0.01mm的默認容差縫合,執行結果如圖3-21,由於0.01mm<0.05mm,因此失敗的結果符合預期。
驗證二:調整容差爲大於間隙0.05mm的0.07mm。如圖3-22,執行結果成功,幾何模型從新縫合爲封閉的一個幾何實體。此處可判斷局部容差的調整是有效的,得以保證使用到容差計算的建模操做能夠調用局部容差的數值。
因爲中望3D平臺優化了着色模式的顯示,如圖3-23切換到線框模式下觀察,能夠看到雖然模型分叉的容差頂點和容差邊,也就是說局部容差成功應用到幾何容差的頂點和邊緣上,讓不許確的模型成爲容差模型,同時0.05mmkTolPointLoose(),因此這裏對容差值的判斷和容差頂點和邊緣生成均是準確的。
3.4.2與其它主流平臺的結果對比
經過與其它主流CAD軟件平臺NX.Solidworks進行對比,進一步驗證中望3D實施的基於局部容差創建的容差體系在建模中的效果。實驗思路將使用同一幾何模型、使用同樣的容差參數設定執行涉及容差計算的建模操做,分別比較三者的成功率、時間和精度。
1)圖3-24的測試模型素材:兩兩相交,進行布爾運算,多處幾何拓撲的重組均涉及容差的計算。
2)分別在中望3D 2020,NX十、Solidworks 2017的軟件平臺,執行布爾並集、差集、交集,理論的正確結果如圖3-25所示。
3)使用局部容差0.01mm執行計算:三個平臺的布爾運算操做均失敗。
4)調整局部容差爲0.05mm從新執行計算:中望3D ,NX10可以獲得正確結果,Solidworks失敗。
5)調整局部容差爲0.07mm從新執行計算:中望3D ,NX10和Solidworks中均能獲得正確結果。
經過測試結果分析,默認容差沒法均沒法處理操做獲得結果,判斷爲容差模型,分別調整容差值到0.05mm、0.07mm後執行。
更小的容差值能獲得正確的結果表示模型的精度會更高。因此成功率方面:
中望3D=NX>Solidworks
在計算效率(時間)上:
中望3D>NX>Solidworks
因爲在精度的判斷上,經過容差值的成功率判斷,只能得出中望3D和NX比Solidworks更高,但二者均在容差值爲0.05mm的時候運行成功。因此二者還須要經過更進一步的驗證比較。
如圖3-26中分別在中望3D和NX中在一樣0.05mm的容差值執行相交線,對比生成的相交線的曲線質量來判斷其精度高低:
圖3-27是中望3D中的相交線的控制點爲6個,而右圖中在NX中生成的相交線的控制點爲10個。根據Nurbs樣條曲線的幾何逼近原理,控制點越多,越逼近精確結果,所以能夠判斷一樣的容差值,布爾運算的結果:NX>中望3D
綜合判斷,在和其它主流平臺的結果對比上,中望3D上實施的局部容差的容差建模技術在效率和成功率上都要優於其它平臺,在模型精度上比中端的Solidworks要好,但比高端的NX平臺稍差。
4.數據導入的原理描述
使用B-Rep數據描述三維模型,拓撲結構自頂到下包括:Shape,Shell.Face,Loop,Pre-edge,Edge.Vertex.Face關聯幾何曲面,Edge關聯三維曲線,preEdge關聯2維uv曲線,在導入時,讀取源文件中的三維模型數據,而後使用目標平臺的B-Rep結構描述。
4.1原數據導入策略的缺陷
原基於精確建模的導入方式,其策略是在建立單個面的時候就完善幾何,而後再使用縫合邏輯把面縫合到一塊兒。這種方式對幾何的優化是在局部進行的,會破壞全局的拓撲關係。其中,基於精確建模問題來源主要有2點:第一,在導入過程作太多的糾錯工做,這極大地加大了算法設計的難度,致使不少正確性問題,以邊次序錯誤爲例,因爲指望糾正邊次序錯誤,致使不能直接利用原始文件中的次序信息,只能經過幾何的鏈接性從新構建次序關係,當Loop中存在自交或相鄰邊在幾何上不是嚴格相鄰時很是困難,並且一旦構建錯誤,整個面就會出現嚴重問題,事實上,基本全部主流三維CAD平臺均不支持邊次序錯誤的糾正。第二,爲了保證Loop幾何上的封閉性,精確建模的導入方法進行了大量的計算,這些計算一方面破壞了文件中的原始數據,另外一方面加大了算法的難度而致使模型質量問題。
4.2 基於局部容差模型的導入策略
基於局部容差模型的導入策略,是一種經過幾何反算出拓撲,而後再依據拓撲完善幾何的新的導入策略。相比基於精確建模的導入方式,導入單個面時先不嘗試完善幾何,先利用文件中的信息把拓撲構建起來,引入容差頂點和容差邊的
判斷和計算規則,識別容差模型,脫離範圍而在容差模型外的幾何容差問題,後續再經過平臺的修復工具去優化幾何,這樣對幾何的優化是基於全局數據進行的,正確性更高。
相比基於精確建模的導入方式,基於容差建模的導入更加信任和利用了更多的原始數據,只有發現原始數據存在明顯問題時才嘗試進行修正;其主要策略的算法流程以下:
1)利用原始文件中的Vertex信息.
2)利用原始文件中邊次序信息。
3)利用原始文件中邊的方向信息。
4)不輕易改變edge對應的三維曲線,當邊界曲線不在surface上時,引入容差邊。
5)不經過Trim,extend等方式進行幾何優化。
)必要時引入容差頂點以保證loop拓撲上的封閉性。
7)導入時,不刪除tiny edge,縫合完畢後再統一刪除tiny edge。
4.3基於局部容差模型導入的算法優化
4.3.1維護和利用原始文件中的Vertex信息
因爲基於精確建模的導入要求生成模型頂點必須在邊上,而原始數據中頂點不必定知足這個要求,因此基於精確建模的導入方式忽略文件中的頂點信息。
當頂點爲容差頂點時,若是不記錄原始的頂點信息,後期經過計算還原原始的頂點信息基本是不可能的,所以,基於容差建模的導入策略引入了原始的頂點信息,並在整個導入模塊中維護該數據:
1)Zs-XILpCv::startPoint和Zs-XILpCv::endPoint用於保存2個頂點座標,若是從文件中傳入頂點座標,則使用傳入的數據,不然根據幾何曲線計算出2個頂點的座標。
2)ZsXILpCv::idVtx1和ZsXILpCv::idVtx2用於存儲頂點拓撲id.
3)維護一個Attfield-->VtxZwID的map
4.3.2邊次序和邊方向的處理
基於精確建模的導入忽略文件中邊的次序信息,而邊的方向信息也主要是通
過計算獲得(注:原始方向信息會影響計算獲得的結果),基本思路是分析全部的曲線,經過幾何鄰近關係,肯定次序和方向。
對於一些簡單案例,這樣是可行,可是對於某些複雜案例,考慮到可能的Loop自交和Gap,經過計算很可貴到正確的結果。事實上,涉及的各類格式都要求原始數據中邊的次序是正確的,而其它主流軟件,當邊的次序信息錯誤時也都沒法獲得正確結果,所以基於容差建模的導入模塊採信文件中邊的次序信息,而邊的方向信息則根據相鄰邊界信息進行必定程度的校訂。
遍歷每一條IpCv,假設其下一條lpCv爲lpCvNxt,當知足如下條件時把IpCvNxt->fLoopDir設置爲-1:
IdCurrent = IpCv->fLoopDir == 1pCv->idVtx2:1pCv->idVtx1;PointCurrent = lpCv->ILoopDir == IpCv->endPoint:IpCv->startPoint;(id1,point1)和(id2,poin2)分別對應1pCvNxt的起始點和終止點。
若idCurrent,idl,id2不等於-1,則根據拓撲判斷,若是idCurrent==id2且idCurrent!= id1,須要把1pCvNxt->fLoopDir設置爲-1.
不然根據幾何臨近關係進行判斷,若是dist(pointCurrent,pointl)>10xdist(pointCurrent,point2)則須要把1pCvNxt->fLoopDir設置爲-1,能夠看出,軟件只有當檢測出明顯錯誤時才進行方向糾正,不然軟件選擇信任文件中的原始數據。
4.3.3容差邊的處理和Seam邊的選擇
當文件中存在容差邊時,因爲該邊不在Surface上,基於精確建模的導入必須把該邊拉到Surface上,這樣破壞了原始的數據,致使後續縫合過程沒法和相鄰面縫合到一塊兒。而基於容差建模的導入則不會修改邊界曲線,這樣確保後續縫合過程能夠和相鄰面正確地縫合到一塊兒。
如圖4-1,對於處於SEAM上的邊,經過爲其從兩條備選UV曲線中選擇一條做爲最終使用的UV曲線,基於精確建模的導入採起比較複雜的邏輯來進行選擇,基於容差建模的導入策略將根據SEAM邊和相鄰兩條邊的幾何關係,以及Seam邊的方向來進行判斷。把備選UV曲線的兩個端點和相鄰兩條UV曲線的兩個端點的距離之和做爲比較的標準,若是兩條備選UV曲線存在明顯差別時,則選擇距離小的那條UV曲線,不然以確保Loop逆時針爲原則根據邊的方向進行選擇,只要源數據中邊的方向是正確的,則根據UV曲線的方向都能作出正確的選擇。
軟件不能簡單地根據距離大小做出選擇:
如圖4-2所示,若是簡單地根據距離大小進行選擇,可能獲得錯誤的結果,Seam邊原本應該放在左邊,可是卻錯誤地把其放在右邊,由於放在左邊和放在右邊算出的距離和基本是同樣的。
同時,若是邊的端點處於極點上或者相鄰邊一樣爲Seam邊時,和相鄰邊的距離也一樣不做爲判斷依據:
如圖4-3,Loop包含2條UV曲線,其中一條在Seam上,該Seam邊的兩個端點都在pole上,所以不能根據和相鄰邊的距離選擇Seam邊,不然會錯誤地選擇右邊的Seam邊。可是經過Seam邊的方向,能夠正確地選擇左邊的Seam邊。
4.4新的Loop生成算法
基於精確建模的導入經過Trim.Extend等方式確保Loop在幾何上是閉合的,該方式因爲是在局部對幾何進行優化,會致使後續出現開放邊,基於容差建模的導入再也不採起該方式,可是必要時會引入容差頂點以確保Loop拓撲上的封閉性;新的導入策略主要經過如下幾個步驟來保證Loop拓撲上的封閉性,下面經過一個實例來介紹:
如圖4-4所示,曲面包含裏外層2個Loop,兩個Loop都跨Seam,並且裏層Loop中存在局部容差,因此相鄰的三維邊界之間存在gap
從文件中獲得的幾何邊界爲((a3d,b3d,c3d,d3d),(e3d,f3d,g3d,h3d)}
投影后獲得的uv曲線以下:
{(al,a2,b,cl,c2,d),(el,e2,f,gl,g2,h)},投影圖如圖4-5所示。
在內存對應的兩個Zs_LpCv雙向鏈表圖4-6所示。
1)Zs_XILoop的分裂
遍歷Zs_LpCv鏈表,當鏈表上兩條相鄰的lpCv的端點之間的距離顯著大於端點和參數空間邊界的距離時,把鏈表在該處打斷,並登記參數空間邊界上的打斷點。
其中發現len(al->endpoint,a2->startPoint)遠大於len(al->endPoint,v10),故把鏈表打斷:
同時登記{(V10,Near al->end),(V3,Near al->start)}
再依次處理每一個結點,最後獲得圖4-8所示的鏈表圖:
值得注意的是,雖然e2和f之間存在明顯gap,可是並不會在該處打斷鏈表,由於,這個gap並無明顯大於e2,f端點到曲面參數空間邊界的距離。
2)沿自然邊界補邊。
當對Zs_XILoop進行分裂時,軟件記錄了參數空間邊界上的分裂點,接下來將利用這些數據沿自然邊界進行補邊。
軟件將按照如下策略選擇添邊方案:
若是文件中明確給出了外層Loop,則優先選擇只沿某一個參數方向補邊的補邊方案(只沿U向或只沿v向)。
默認狀況下,根據邊的方向進行補邊,只要文件中邊的方向正確,經過這種方向都可以獲得正確的補邊結果。
針對上例,將選擇如圖4-9的補邊方案,由於該方案只沿v向進行了補邊:
相應地,前面獲得的4個鏈表經過增長的4條IpCv鏈接成一個閉合的鏈表。
1)必要時從新計算Loop之間的裏外層關係以及校訂Loop的方向,和基於精確建模的導入同樣。
5.布爾運算的原理解析
布爾運算是(Boolean)經過對兩個以上的幾何進行並集、差集、交集的運算,從而獲得新的幾何模型形態,幾何建模主要的4種布爾運算方式:並集(Union)、交集(Intersection)、差集(Subtraction)和分割(Split)。
如圖5-1所示,藍色的長方體被黃色長方體的一個面分割成兩塊,而黃色長方體與藍色長方體相交的面則被藍色長方體分割成兩個面。全部涉及布爾運算的操做(交集、分割、差集、聯集)求交後產生了4條相交線,因此運算的成功與否能夠分解爲相交線可否正確生成,並造成封閉的區域。
在第三章中本文就分析了幾何容差引發布爾運算失敗的緣由,是由於算法不能保證找到正確的交線。所以布爾運算操做算法最關鍵的部分就是找到正確的交線。兩個封閉實體對象的交點處應該至少有一個完整封閉的交點曲線(例如:循環),若是對象相交在多個點,那麼有可能會產生多個循環,若是這些循環都是封閉的,那麼這是沒有問題的。相交線在幾何容差的地方沒法獲得,也就表明着相交曲線不是封閉的,那麼布爾操做將註定失敗,這是由於相交曲線沒法完整切割對象,而三維建模系統沒法得知如何切割實體,所以沒法布爾運算而給予運算失敗的信息。
如圖5-2所示,兩實體兩交,執行分割(Split)的布爾運算操做,會由於容差頂點和容差點,相交線生成存在間隙,沒法造成有效的封閉區域,所以建模操做執行失敗。
5.2基於局部容差模型的求交線優化
容差建模技術在處理上述容差模型的建模問題,就是優化求交線的算法,當相交線穿過狹長面、容差頂點和容差邊時,讓相交線的間隙可以閉合,使布爾運算得以成功執行。這種方法在原來算法上增長了對相交線有間隙的三種狀況的額外處理手段,讓相交線能造成閉環。新的算法程序的流程圖如圖5-3.
5.3相交線穿過狹長面的算法處理
如圖5-4所示當f2相交的位置恰好穿過f1的狹長面區域求交,理論上能夠求得一條短相交線,可是在當前運行的幾何系統中的建模公差(虛線圓)大於狹長面邊緣e4,e5與2的兩個交點的距離,也就是說圓則上,此處要生成兩個新的頂點,可是因爲頂點的距離小於當前建模公差,它們被認爲是重合的。
爲了保證整個布爾運算操做的成功,圖5-5中的頂點v1和v2,軟件系統將在完成布爾運算,獲得建模結果後在新的模型中再對v1和v2進行合併。
5.4相交線穿過容差頂點的算法優化
經過實際的案例分析得出,邊緣造成的容差頂點的狀況有如圖5-6中三種狀況,其主要表象是邊緣的端點在幾何上不是絕對重合的,可是拓撲上面爲了讓幾何模型可以繼續工做下去,平臺容忍了這種頂點錯誤,經過設置局部公差,拓撲上成爲一個容差頂點。
但在相交線的計算的時候是基於幾何的相交,因此求出的交線就會在容差頂點處存在間隙。如圖5-7在幾何上的處理是,相互延伸修剪邊緣的端點造成理論上的交點,而後再與相交面進行求交。
5.5相交線穿過容差邊的算法優化
相交線穿過容差邊的狀況能夠分爲兩種:
1)當穿過容差邊的相交線間隙小於容差頂點的公差:V(pl->p2)<V(Tvertex),如圖5-8中所示f1,12與13求交,在Predge處的相交點爲p1,p2,但pl到p2的距離小於容差棒的大小,那麼能夠認爲此處新生成的容差頂點重合,相交計算有效。
當穿過容差邊的相交線間隙大於容差頂點的公差:V(pl->p2)<V(Tvertex)以下圖所示,pl到p2的距離大於容差棒的大小,不能在此處建立容差頂點。如圖5-9中經過p一、p2建立一條鏈接的直線line1,讓相交線可以造成封閉的環,保證布爾運算的操做成功。