李瀟瀟 張其林
(上海市同濟大學(xué),上海 200092)
參數(shù)化建模技術(shù)是現(xiàn)代CAD 技術(shù)發(fā)展的一個里程碑,在機械類三維軟件(例如PRO/E、UG、CATIA 等)早已使用,而AutoCAD 軟件在之前版本一直沒有參數(shù)化繪圖功能,終于在2009 年4 月發(fā)行的AutoCAD 2010 版新增該功能。本文旨在揭露CAD參數(shù)化中標(biāo)注約束可能的內(nèi)在運作機制,以供大家能夠更好地理解CAD 參數(shù)化的內(nèi)部運作機制。
如圖1 參數(shù)化菜單,幾何約束包含了自動約束、水平、豎直、垂直、平行、相切、相等、平滑、重合、同心、共線、對稱、固定等各種不同類型約束。其中自動約束功能可以為已經(jīng)繪制好的圖形自動添加約束,如水平、豎直、平行、點重合等。
標(biāo)注約束設(shè)計是現(xiàn)代CAD 技術(shù)實現(xiàn)參數(shù)化設(shè)計的關(guān)鍵技術(shù),它在圖形設(shè)計,產(chǎn)品設(shè)計中起很大作用。Autodesk 公司為AutoCAD 2010 版添加了標(biāo)注約束的功能,包含了線性、對齊、半徑、直徑、角度等不同類型的尺寸,也可以將現(xiàn)有圖形上的普通尺寸標(biāo)注轉(zhuǎn)換成標(biāo)注約束,但無法逆操作。
圖1 幾何約束類型
不論是幾何約束還是標(biāo)注約束,都離不開給表達式賦予參數(shù)值。如圖2 參數(shù)管理器對話框所示,所有參數(shù)可以賦予表達式,支持三角函數(shù)、乘方等常用的數(shù)學(xué)表達式。
所有和參數(shù)化相關(guān)的類都是從AcRxObject 類派生出來的,其中又分為兩大塊,一塊是以AcConstraintGroupNode 為基類,用于參數(shù)化內(nèi)部圖形的處理;另一塊是以AcDbObject 為基類,用于CAD 界面的現(xiàn)實。它們各自具有不同的作用。類的派生關(guān)系見圖4。
圖2 參數(shù)管理器
我們以圖3 的標(biāo)注約束為例子,圖3 中的直線就是圖5 中的AcDbLine,圖3 中的標(biāo)注就是圖5 中的AcDbDimension。至于直線和標(biāo)注之間是如何聯(lián)系起來的,就要用到圖5 中的AcDbAssocNetwork 了??梢钥吹皆贏cDbAssocNetwork 中又包括了Ac-Db2dConstraintGroup 和AcDbAssocVariable,其中Ac-DbAssocVariable 與直線的長度變量通過AcDbAssocValueDependency 相關(guān)聯(lián),而AcDb2d-Constraint-Group中包括AcConstrainedGeometry,AcGeomConstraint 和各個Dependency,其中AcConstrainedGeometry 與直線通過AcDbAssoc-GeomDependency 相關(guān)聯(lián),AcGeomConstraint 與標(biāo)注通過AcDbAssocDependency 相關(guān)聯(lián)。上述中各個對象之間具體是通過何種函數(shù)來關(guān)聯(lián)的,請見圖6(圖中的AcConstrained-BoundedLine 就是AcConstrainedGeometry,AcDistanceConstraint 就是AcGeomConstraint)。
圖3 標(biāo)注約束
圖4 類的派生關(guān)系圖
圖5 類的從屬關(guān)系圖
圖6 對象相互關(guān)系圖
仍然以圖3 中的直線與約束標(biāo)注作為例子,目前d1=1000,如果我們把d1 修改為500,那么直線也要相應(yīng)的縮短,標(biāo)注也要跟隨直線做相應(yīng)的變化。在CAD 內(nèi)部,這到底是如何實現(xiàn)的呢?圖7 給出了一種猜想。首先要找到數(shù)據(jù)庫中所有的Value值,通過isReleventChange()來判斷該Value 值是否已改變;如果改變,則保存改變后的變量值,并且通過AcExplicitConstraint(AcDistanceConstraint)來找到該Value 值所對應(yīng)的直線(AcDbLine),給這根直線賦新值,同樣通過AcExplicitConstraint(AcDistanceConstraint)來找到該Value 值所對應(yīng)的標(biāo)注(AcDbDimension),并給該標(biāo)注賦新值。這樣,直線和標(biāo)注就都被修改了。計算流程圖如圖7 所示。
圖7 計算流程圖
這篇文章闡述了作者對于AutoCAD 參數(shù)化內(nèi)部運行機制的觀點,介紹了與AutoCAD 參數(shù)化相關(guān)的類的派生關(guān)系,對象的從屬關(guān)系,對象的相互關(guān)系,以及修改標(biāo)注約束時AutoCAD 內(nèi)部可能的運算流程圖。希望本文能讓廣大二次開發(fā)人員更深入的理解CAD 參數(shù)化的運作機制。
[1]AutoDesk,ObjectARX for AutoCAD 2013:Reference Guide,2013.
[2]童迪.計算機輔助制圖[M],北京:清華大學(xué)出版社,2006:262-277.
[3]錢可強.機械制圖[M],北京:高等教育出版社,2005:153-165.
[4]何關(guān)培.BIM 和BIM 相關(guān)軟件[J],土木建筑工程信息技術(shù),2010,2(4):110-117.
[5]中華人民共和國國家質(zhì)量監(jiān)督局.房屋建筑CAD 制圖統(tǒng)一規(guī)則[S],GB/T18112-2000.
[6]中華人民共和國住房和城鄉(xiāng)建設(shè)部.房屋建筑制圖統(tǒng)一標(biāo)準(zhǔn)[S],GB/T50001-2010.
[7]中華人民共和國建設(shè)部.房屋建筑制圖統(tǒng)一標(biāo)準(zhǔn)[S],GB/T50001-2001.
[8]上?,F(xiàn)代集團.現(xiàn)代集團工程設(shè)計CAD 制圖標(biāo)準(zhǔn)(XDJB-I-001-2010),2010.