几何约束求解思维框架
一、概念介绍
几何约束关系,是指对草图上的某些元素添加几何关系,从而让他们产生位置性约束关系的功能,主要包括连接、水平、竖直、相切、平行、相等、对称、同心、垂直、共线等内容。
几何约束求解(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/