幾何約束求解思維框架

陳國利發表於2023-03-04

一、概念介紹

幾何約束關係,是指對草圖上的某些元素新增幾何關係,從而讓他們產生位置性約束關係的功能,主要包括連線、水平、豎直、相切、平行、相等、對稱、同心、垂直、共線等內容。

幾何約束求解(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/

 

相關文章