幾何約束求解思維框架
一、概念介紹
幾何約束關系,是指對草圖上的某些元素添加幾何關系,從而讓他們產生位置性約束關系的功能,主要包括連接、水平、豎直、相切、平行、相等、對稱、同心、垂直、共線等內容。
幾何約束求解(Geometric Constraint Solver 簡稱:GCS)
狹義上,我們通常講的GCS主要是為CAD設計服務;廣義上,GCS就是用來求解多(剛)體動力學的。
平面二維GCS,又叫草圖幾何約束求解器,簡稱草圖約束,它描述的是在二維平面設計時所用的幾何約束功能。
二維里常見的三種約束類型:
尺寸約束:點點距離,點線距離,線線夾角,圓弧長度,圓和圓弧半徑
結構約束:線水平或垂直,兩線平行,線和圓相切
業務約束:用戶自定義參數變量之間約束。
約束求解對用戶最簡單直觀的表現就是在創建對象時候的捕捉設置。
比如:已生成一條直線,再畫一條直線與其垂直。確定一點后,另一點的鼠標在移動過程中需要反復計算垂直約束是否滿足。而垂直計算就涉及到最基本的對象位置關系計算。
三維幾何內核的曲線曲面有兩種表達:方程式和離散式 。所以約束在求解上需要支持線性方程組和非線性方程組。
伸延至三維,約束內容除了從平面坐標擴展到三維坐標外,還有:
面面距離,面面垂直,點面距離,球形曲面于平面,直線相切以及共軸共點共面。
還是以CAD設計的GCS為例,通常用自由度,約束度,剩余自由度,和約束關系內容來記錄每個對象的狀態(這里的自由度和剛體運動的自由度相同,而非有限元中的單元節點自由度),用來記錄圖元的任意時刻的狀態,并將狀態用圖來表示。

現代CAD系統一般由數據交換、二維草圖、曲面建模、三維建模、裝配建模、工程制圖等模塊組成,而幾何約束求解是二維草圖與裝配建模的核心技術,是整個參數化/變量化建模的兩大關鍵技術之一(另一個關鍵技術是幾何造型技術,也就是模型表示問題)。
幾何約束求解一個顯然的思想是將幾何約束轉化為代數方程組,然后求解方程組,得到問題的解。
由于幾何約束問題往往涉及到大量的幾何體,會產生大型非線性方程組,而至今尚無求解大型非線性方程組的完整穩定的方法,為提高效率和減少求解復雜度,幾何約束求解的基本思想就是“分而治之”,即首先將一個大系統依據一定的算法分解為若干個可求解的、規模小的子系統,然后對每個子系統采用代數、數值或幾何的方法進行單獨求解,最后根據這些子系統之間的約束,對它們進行裝配組合,從而完成整個大系統的求解。
現有的分解方法可以分為基于最大匹配的分解方法、基于構型識別的分解方法和基于結構剛性的分解方法,以下將對這幾種方法進行綜述。
二、幾何約束求解框架

三、幾何約束體系結構
約束求解器的體系結構下如圖所示。圖形文件翻譯器對一般的CAD圖形文件(如DXF文件)作轉換和匹配,建立圖形中各幾何元素之間的結構關系、尺寸對幾何元素的約束關系、尺寸之間的函數關系等,建立圖形的幾何關聯模型。前處理器包括一個方程組求解器和一個幾何約束轉換器。前者用以求解工程約束,主要是尺寸之間的函數關系,這種函數關系還可用來定義幾何元素視圖間的關聯實現多視圖參數化設計;后者識別和修正不良標注尺寸,實現各類約束向核心約束的轉換,建立約束求解模型。約束求解器根據幾何約束模型實現約束求解和構造計劃的生成。后處理器包含所有的幾何元素求解子程序,實現結構點求解和幾何模型的重構。

四、幾何約束分類
約束分類,有很多種,其大概分類如下

復雜約束可以轉化核心約束的形式。工程約束可以轉化為相應的結束和尺寸約束,結構約束又可轉化為尺寸約束,尺寸約束最終轉化核心約束。
所有約束最終都可以轉化為點點距離約束和點點矢量約束。


五、幾何約束方程組求解
方程組求解一般流程

方程有效判斷流程

六、開源幾何約束求解器平臺
FreeCAD目前使用PlanGCS進行二維草圖約束求解;SALOME則同時提供了PlaneGCS、SolveSpace等兩種約束求解器。
因此,欲要深入研究FreeCAD、SALOME等軟件的全參數化建模功能,必須要掌握幾何約束相關的基本理論與關鍵技術。
SALOME
https://www.salome-platform.org/
FreeCAD Sketch
https://wiki.freecadweb.org/Sketcher_Workbench
PlaneGCS
https://github.com/CadQuery/PlaneGCS
SolveSpace
https://solvespace.com/index.pl
SketchSolve
http://code.google.com/p/sketchsolve%C2%A0
QOCA
http://www.csse.monash.edu.au/projects/qoca/
浙公網安備 33010602011771號