李瀟瀟 張其林
(上海市同濟大學,上海 200092)
參數化建模技術是現代CAD 技術發展的一個里程碑,在機械類三維軟件(例如PRO/E、UG、CATIA 等)早已使用,而AutoCAD 軟件在之前版本一直沒有參數化繪圖功能,終于在2009 年4 月發行的AutoCAD 2010 版新增該功能。本文旨在揭露CAD參數化中標注約束可能的內在運作機制,以供大家能夠更好地理解CAD 參數化的內部運作機制。
如圖1 參數化菜單,幾何約束包含了自動約束、水平、豎直、垂直、平行、相切、相等、平滑、重合、同心、共線、對稱、固定等各種不同類型約束。其中自動約束功能可以為已經繪制好的圖形自動添加約束,如水平、豎直、平行、點重合等。
標注約束設計是現代CAD 技術實現參數化設計的關鍵技術,它在圖形設計,產品設計中起很大作用。Autodesk 公司為AutoCAD 2010 版添加了標注約束的功能,包含了線性、對齊、半徑、直徑、角度等不同類型的尺寸,也可以將現有圖形上的普通尺寸標注轉換成標注約束,但無法逆操作。

圖1 幾何約束類型
不論是幾何約束還是標注約束,都離不開給表達式賦予參數值。如圖2 參數管理器對話框所示,所有參數可以賦予表達式,支持三角函數、乘方等常用的數學表達式。
所有和參數化相關的類都是從AcRxObject 類派生出來的,其中又分為兩大塊,一塊是以AcConstraintGroupNode 為基類,用于參數化內部圖形的處理;另一塊是以AcDbObject 為基類,用于CAD 界面的現實。它們各自具有不同的作用。類的派生關系見圖4。

圖2 參數管理器
我們以圖3 的標注約束為例子,圖3 中的直線就是圖5 中的AcDbLine,圖3 中的標注就是圖5 中的AcDbDimension。至于直線和標注之間是如何聯系起來的,就要用到圖5 中的AcDbAssocNetwork 了??梢钥吹皆贏cDbAssocNetwork 中又包括了Ac-Db2dConstraintGroup 和AcDbAssocVariable,其中Ac-DbAssocVariable 與直線的長度變量通過AcDbAssocValueDependency 相關聯,而AcDb2d-Constraint-Group中包括AcConstrainedGeometry,AcGeomConstraint 和各個Dependency,其中AcConstrainedGeometry 與直線通過AcDbAssoc-GeomDependency 相關聯,AcGeomConstraint 與標注通過AcDbAssocDependency 相關聯。上述中各個對象之間具體是通過何種函數來關聯的,請見圖6(圖中的AcConstrained-BoundedLine 就是AcConstrainedGeometry,AcDistanceConstraint 就是AcGeomConstraint)。

圖3 標注約束

圖4 類的派生關系圖

圖5 類的從屬關系圖

圖6 對象相互關系圖
仍然以圖3 中的直線與約束標注作為例子,目前d1=1000,如果我們把d1 修改為500,那么直線也要相應的縮短,標注也要跟隨直線做相應的變化。在CAD 內部,這到底是如何實現的呢?圖7 給出了一種猜想。首先要找到數據庫中所有的Value值,通過isReleventChange()來判斷該Value 值是否已改變;如果改變,則保存改變后的變量值,并且通過AcExplicitConstraint(AcDistanceConstraint)來找到該Value 值所對應的直線(AcDbLine),給這根直線賦新值,同樣通過AcExplicitConstraint(AcDistanceConstraint)來找到該Value 值所對應的標注(AcDbDimension),并給該標注賦新值。這樣,直線和標注就都被修改了。計算流程圖如圖7 所示。

圖7 計算流程圖
這篇文章闡述了作者對于AutoCAD 參數化內部運行機制的觀點,介紹了與AutoCAD 參數化相關的類的派生關系,對象的從屬關系,對象的相互關系,以及修改標注約束時AutoCAD 內部可能的運算流程圖。希望本文能讓廣大二次開發人員更深入的理解CAD 參數化的運作機制。
[1]AutoDesk,ObjectARX for AutoCAD 2013:Reference Guide,2013.
[2]童迪.計算機輔助制圖[M],北京:清華大學出版社,2006:262-277.
[3]錢可強.機械制圖[M],北京:高等教育出版社,2005:153-165.
[4]何關培.BIM 和BIM 相關軟件[J],土木建筑工程信息技術,2010,2(4):110-117.
[5]中華人民共和國國家質量監督局.房屋建筑CAD 制圖統一規則[S],GB/T18112-2000.
[6]中華人民共和國住房和城鄉建設部.房屋建筑制圖統一標準[S],GB/T50001-2010.
[7]中華人民共和國建設部.房屋建筑制圖統一標準[S],GB/T50001-2001.
[8]上?,F代集團.現代集團工程設計CAD 制圖標準(XDJB-I-001-2010),2010.