王 勁 肖 冰 由艷平
(西安理工大學機械與精密儀器工程學院,陜西西安 710048)
早期CAD系統所構造的幾何模型只給出了模型的可視化形狀,不包含幾何圖素間的約束關系,不具備模型的尺寸驅動功能,幾何模型的尺寸也不能直接與工程計算建立聯系,給產品的開發設計帶來了不便。為解決這些問題,早在20世紀80年代就開始了基于約束的參數化和變量化CAD系統的研究,目前主流的CAD系統都具備了參數化和變量化設計的功能。參數化設計是在CAD系統中建立由參數、關系和約束組成的參數化模型,在基于特征的參數化CAD系統中,參數和約束是在建模過程中通過自動或人工方式添加的,系統能夠顯示這些參數和約束,并允許設計者對參數和約束進行編輯和修改。參數化設計采用尺寸驅動的方式改變由拓撲約束、尺寸約束和尺寸間參數約束構成的幾何模型,參數化設計求解中最重要的思想是“順序求解約束模型”。變量化設計采用約束驅動方式改變由拓撲約束、尺寸約束、參數約束以及工程約束混合構成的幾何模型。變量化設計中尺寸約束可以包括工程約束,增加了設計的自由度。變量化設計通過求解一組包含幾何約束和工程約束的聯立方程組來確定產品的形狀和尺寸。當前的研究趨勢是將參數化設計與變量化設計合并在一起,更好地滿足不同設計的需要,而不再明確區分這兩種設計方法,統稱為參數化設計[1]。
參數化設計技術是提高產品設計效率和質量的重要手段,通過將變量關聯起來,驅動整個CAD模型,從而達到快速完成設計的目的。Solid Edge是基于特征的三維參數化設計軟件,使用Solid Edge設計零件模型和裝配模型時可以設置設計參數,各個參數間可以添加函數約束關系或工程約束關系,通過修改模型的設計參數就可以得到新的產品模型,與模型相鏈接的產品二維工程圖紙更新后可以自動進行變更,這種特性對于提高系列化產品的開發設計效率具有重要意義。
變量表是Solid Edge用來保存零件模型、裝配模型、鈑金模型和圖紙文檔中各種設計變量的表格,表格中的每一行表示一個變量,表格的列表示變量的屬性。打開Solid Edge文件,選擇“工具”選項卡,在“變量組”中單擊變量圖標按鈕,就可以打開當前文件的變量表對話框。利用變量表可以建立設計變量間的函數關系、變化范圍等。變量表對于Solid Edge的參數化設計具有重要的作用。

在Solid Edge零件模塊中用同步模式按圖1所示尺寸建立模柄模型,其中φ10 mm的孔由孔特征生成,并用圓形陣列進行排列,該模型的變量表如圖2所示。變量表的上部包括變量的單位類型下拉框、過濾器圖標按鈕、公式圖標按鈕和變量規則編輯器圖標按鈕等,變量表的下部列出了當前模型中的變量,每一行表示一個變量,每列表示變量的一個屬性,變量的屬性包括:類型、值、規則、公式、范圍、顯示、顯示名稱和注釋等,可以用鼠標拖動調整列的次序,也可以右擊列單元格,通過快捷菜單設置列的顯示性、按某列的數據進行變量排序等。變量表中的變量可以通過以下方式來生成:(1)模型本身的特性,如圖2中的材料密度(PhysicalProperties_Density)和計算精度(Physical-Properties_Accuracy);(2)設計特征時標注的草圖尺寸;(3)生成特征時的特征參數,如圖2中的拉伸高度(線性_2)和陣列個數(陣列事例_2_X_數);(4)用人工方式添加變量,其操作步驟是選擇變量表中空白行的“名稱”屬性,鍵入變量名稱,然后單擊“單位類型”下拉框,設置變量的單位,默認的單位是“距離”,也可以將變量的單位設置為“角度”、“面積”等,如果無單位可設置為“標量”,最后在“值”屬性中鍵入變量的值。

變量表的設置包括:變量名稱的修改,變量驅動類型的設置,變量變化范圍的設置,變量間函數關系的設置,變量過濾器的使用等。
變量表中的變量大部分都是在模型設計過程中由Solid Edge自動生成的,變量的名稱沒有明確的含義,在使用中常常不方便,可以選擇某個變量的“名稱”屬性,直接鍵入由字符、數字或下劃線組成的變量名稱,使變量名稱具有明確的含義。圖3為修改了變量名稱后的模柄模型的變量表。

變量表中變量的“類型”屬性有“Var”和“Dim”,Dim類型的變量是尺寸變量、直接與模型的形狀有關,如圖3中的“D1”變量。Var類型的變量與模型的形狀沒有直接的關系,如圖3中的“PhysicalProperties_Density”變量。變量的“值”屬性中除了有該變量的數值外,常常還帶有一定的背景色和圖標。不同的背景色表示該變量的狀態,白色背景表示該變量可以被直接修改,如修改“HoleDia”變量的值可以改變孔的直徑;灰色背景表示該變量被其他變量控制,不能直接修改,如“HoleDim”變量標注的是模柄螺釘過孔的直徑,但是該孔是由孔特征生成的,其直徑由“HoleDia”變量控制;橙色背景表示該尺寸數值不在該變量的限定范圍內或出現了錯誤。鎖圖標和開鎖圖標表示該變量是驅動尺寸還是被驅動尺寸,帶鎖圖標的變量是驅動尺寸(如圖3中的“H2”變量),其數值的變化可以改變模型的尺寸;帶有開鎖圖標的變量是被驅動尺寸(如圖3中的“D1”變量),當模型的形狀發生改變時其數值會相應變化。單擊圖標可以在鎖圖標和開鎖圖標間進行切換。在同步建模方式下標注的PMI尺寸,在變量表中顯示為帶開鎖圖標的被驅動尺寸,可以通過選擇模型上的PMI尺寸來修改模型,相應變量的數值會發生相應的變化,單擊開鎖圖標可將該尺寸變量轉換為帶鎖圖標的驅動尺寸。在同步建模方式的草圖上標注的尺寸在變量表中顯示為帶鎖圖標的驅動尺寸,可以直接通過修改變量表中變量的數值來修改圖形,單擊帶鎖圖標可將該尺寸變量轉換為帶開鎖圖標的被驅動尺寸。在順序建模方式下標注的PMI尺寸在變量表中顯示為灰色背景,當模型形狀改變時,該尺寸變量會發生相應的變化。在順序建模方式的特征草圖中標注的尺寸在變量表中顯示為帶鎖圖標的驅動尺寸,可以通過修改變量表中變量的數值來改變模型尺寸,單擊帶鎖圖標可以將該尺寸變量轉換為帶開鎖圖標的被驅動尺寸。
變量的變化范圍指變量數值的變化情況。變量值可以限定于一定的變化區間或限定于某個常數列表。設置變量變化范圍有兩種方法:一個是利用變量規則編輯器來設置,另一個是直接在變量的“范圍”屬性中按照規定格式進行設置。對于已設置了變化范圍的變量,由于函數關系等原因使變量值超出了所設置范圍時,變量值將不會發生更改,同時變量的“值”屬性的背景會變成橙色,表示變量出錯。如圖3所示的模柄模型變量表中變量的“范圍”屬性的表達式規定了相應變量的變化范圍,可以直接在變量的“范圍”屬性中用表1中的符號來設置變量的變化范圍,表2中列出了變量x的“范圍”屬性為各種表達式時的含義。

表1 設置變量變化范圍的符號

表2 變量x范圍屬性表達式的含義
建立變量間的函數關系是產品模型參數化設計的重要方法,對于比較簡單的函數關系,可以利用表3所示的算術運算符和表4所示的數學函數直接建立變量間的函數關系。對于變量間比較復雜的關系,可以利用VBA編程。

表3 算術運算符

表4 數學函數

在Solid Edge零件模塊中繪制如圖4所示的草圖并標注尺寸,尺寸的具體數值并不重要。打開相應模型的變量表,按圖5修改變量的名稱,在變量的“公式”屬性中建立變量的相應公式。從圖5所示修改后的變量表中可以看出,只有“D1”變量為白色背景并帶鎖圖標,表示“D1”變量為可以修改數值的驅動尺寸,當“D1”變量的值修改后,整個圖形就會發生相應的改變。

VBA(Visual Basic for Application)與Visual Basic的語法結構是相同的,VBA程序依附于Solid Edge主應用程序[2]。利用變量表直接建立變量間的函數關系,只能處理變量間比較簡單的關系,對于比較復雜的約束,可以利用VBA編程來實現。Solid Edge變量表可以通過調用VBA代碼編寫的子程序(Sub過程)和函數(Function過程)建立變量間的參數約束和工程約束。Sub過程是由Sub和End Sub包含的一系列VBA語句,沒有返回值;Function過程是由Function和End Function包含的一系列VBA語句,可以返回一個值。包含過程的文件的擴展名為“.BAS”,是ASCII碼文本文件,可以使用Visual Basic編輯器編寫和調試,也可以用記事本(NotePad)來編寫。
定義子程序的語法格式為:

定義函數的語法格式為:

說明:
(1)<表達式>的值通過賦值語句將值賦給<函數名>,該值就是函數的返回值。
(2)可以用一個或多個Exit Sub或Exit Function語句從過程中退出。
(3)<形參表>在過程調用時用變量表中的變量替換。
(4)關鍵字ByVal定義的變量只傳遞變量的值,過程運行時將不會改變該變量的值。
(5)關鍵字ByRef定義的變量,可以在過程中進行修改。Function過程本身只能返回一個值。
(6)通過定義多個ByRef變量可以得到多個返回值,不指定關鍵字的變量,將被認為是ByRef變量。
如圖6所示的槽鋼模型,其拉伸截面草圖如圖7所示,現欲建立10、12和14號槽鋼的參數化模型。新建一個零件模型文件,按10號槽鋼的尺寸設計槽鋼模型,打開變量表,將所有尺寸變量修改為“值”屬性帶鎖圖標的驅動尺寸,按圖7所示修改槽鋼模型變量表的變量名稱,將“型號”變量的“范圍”屬性設置為“{10;12;14}”,修改后的變量表如圖8所示。

用記事本或Visual Basic編輯器編寫 CaoGang.Bas文件,其內容為:


在變量表上單擊“公式”圖標按鈕加載CaoGang子程序,用變量表中的“型號”、“h”、“b”、“d”、“t”、“r”和“r1”變量依次替換CaoGang子程序中的“Xing-Hao”、“h”、“b”、“d”、“t”、“r”和“r1”形參,加載 CaoGang子程序后的變量表如圖9所示,當將“型號”變量修改為12或14時,槽鋼模型的尺寸變量將按照CaoGang子程序的設置進行變化,得到12號或14號槽鋼模型。

建立如圖10所示的軸對稱的盤形零件模型,其中孔由孔特征生成,并利用圓形陣列排列,孔的數量(n)與其分布直徑(Dia)之間的函數關系符合式(1)。

編寫 HolesNumber.bas文件,用 HolesNumber函數來設置“n”變量的值,以滿足式(1)。HolesNumber.bas文件的內容如下:


在變量表中加載HolesNumber函數,用變量表中的“孔分布直徑”變量替換 HolesNumber函數中的“Dia”形參,加載HolesNumber函數后,盤形零件模型的變量表如圖12所示。


新建一個零件模型文件,按圖13所示繪制一個矩形草圖,以該矩形的面積和周長為參數,建立矩形長度(L)、寬度(W)與其面積和周長之間的函數關系。
設計分析:若矩形的邊長為d1和d2,已知面積(area)和周長(perimeter),則有:

將式(3)代入式(2),該問題可以轉化為一元二次方程求解,計算結果如下:

編寫名為“SideLength.bas”的ASCII碼文本文件,其內容如下:


加載Side子程序,依次用變量表中“area”、“perimeter”、“L”和“W”變量替換 Side子程序中的“area”、“perimeter”、“d1”和“d2”形參,零件模型的變量表如圖14所示。
三維CAD軟件的參數化設計對于提高產品開發設計的速度和質量有重要意義,Solid Edge變量表是利用Solid Edge進行產品參數化設計的主要工具之一,利用變量表可以直接建立產品設計參數間的函數關系,也可以利用VBA編程實現設計參數間比較復雜的關系。
[1]童柄樞.機械CAD技術基礎[M].北京:清華大學出版社,2010.
[2]王勁,趙宏偉,郭天德.基于SolidEdge的灰斗參數化三維模型設計[J].制造業自動化,2010,32(10):156 -159.
[3]王維,王勁,王艷芳,等.Solid Edge基礎應用與實踐[M].北京:清華大學出版社,2011.