王 勁 肖 冰 由艷平
(西安理工大學(xué)機(jī)械與精密儀器工程學(xué)院,陜西西安 710048)
早期CAD系統(tǒng)所構(gòu)造的幾何模型只給出了模型的可視化形狀,不包含幾何圖素間的約束關(guān)系,不具備模型的尺寸驅(qū)動(dòng)功能,幾何模型的尺寸也不能直接與工程計(jì)算建立聯(lián)系,給產(chǎn)品的開發(fā)設(shè)計(jì)帶來了不便。為解決這些問題,早在20世紀(jì)80年代就開始了基于約束的參數(shù)化和變量化CAD系統(tǒng)的研究,目前主流的CAD系統(tǒng)都具備了參數(shù)化和變量化設(shè)計(jì)的功能。參數(shù)化設(shè)計(jì)是在CAD系統(tǒng)中建立由參數(shù)、關(guān)系和約束組成的參數(shù)化模型,在基于特征的參數(shù)化CAD系統(tǒng)中,參數(shù)和約束是在建模過程中通過自動(dòng)或人工方式添加的,系統(tǒng)能夠顯示這些參數(shù)和約束,并允許設(shè)計(jì)者對(duì)參數(shù)和約束進(jìn)行編輯和修改。參數(shù)化設(shè)計(jì)采用尺寸驅(qū)動(dòng)的方式改變由拓?fù)浼s束、尺寸約束和尺寸間參數(shù)約束構(gòu)成的幾何模型,參數(shù)化設(shè)計(jì)求解中最重要的思想是“順序求解約束模型”。變量化設(shè)計(jì)采用約束驅(qū)動(dòng)方式改變由拓?fù)浼s束、尺寸約束、參數(shù)約束以及工程約束混合構(gòu)成的幾何模型。變量化設(shè)計(jì)中尺寸約束可以包括工程約束,增加了設(shè)計(jì)的自由度。變量化設(shè)計(jì)通過求解一組包含幾何約束和工程約束的聯(lián)立方程組來確定產(chǎn)品的形狀和尺寸。當(dāng)前的研究趨勢(shì)是將參數(shù)化設(shè)計(jì)與變量化設(shè)計(jì)合并在一起,更好地滿足不同設(shè)計(jì)的需要,而不再明確區(qū)分這兩種設(shè)計(jì)方法,統(tǒng)稱為參數(shù)化設(shè)計(jì)[1]。
參數(shù)化設(shè)計(jì)技術(shù)是提高產(chǎn)品設(shè)計(jì)效率和質(zhì)量的重要手段,通過將變量關(guān)聯(lián)起來,驅(qū)動(dòng)整個(gè)CAD模型,從而達(dá)到快速完成設(shè)計(jì)的目的。Solid Edge是基于特征的三維參數(shù)化設(shè)計(jì)軟件,使用Solid Edge設(shè)計(jì)零件模型和裝配模型時(shí)可以設(shè)置設(shè)計(jì)參數(shù),各個(gè)參數(shù)間可以添加函數(shù)約束關(guān)系或工程約束關(guān)系,通過修改模型的設(shè)計(jì)參數(shù)就可以得到新的產(chǎn)品模型,與模型相鏈接的產(chǎn)品二維工程圖紙更新后可以自動(dòng)進(jìn)行變更,這種特性對(duì)于提高系列化產(chǎn)品的開發(fā)設(shè)計(jì)效率具有重要意義。
變量表是Solid Edge用來保存零件模型、裝配模型、鈑金模型和圖紙文檔中各種設(shè)計(jì)變量的表格,表格中的每一行表示一個(gè)變量,表格的列表示變量的屬性。打開Solid Edge文件,選擇“工具”選項(xiàng)卡,在“變量組”中單擊變量圖標(biāo)按鈕,就可以打開當(dāng)前文件的變量表對(duì)話框。利用變量表可以建立設(shè)計(jì)變量間的函數(shù)關(guān)系、變化范圍等。變量表對(duì)于Solid Edge的參數(shù)化設(shè)計(jì)具有重要的作用。
在Solid Edge零件模塊中用同步模式按圖1所示尺寸建立模柄模型,其中φ10 mm的孔由孔特征生成,并用圓形陣列進(jìn)行排列,該模型的變量表如圖2所示。變量表的上部包括變量的單位類型下拉框、過濾器圖標(biāo)按鈕、公式圖標(biāo)按鈕和變量規(guī)則編輯器圖標(biāo)按鈕等,變量表的下部列出了當(dāng)前模型中的變量,每一行表示一個(gè)變量,每列表示變量的一個(gè)屬性,變量的屬性包括:類型、值、規(guī)則、公式、范圍、顯示、顯示名稱和注釋等,可以用鼠標(biāo)拖動(dòng)調(diào)整列的次序,也可以右擊列單元格,通過快捷菜單設(shè)置列的顯示性、按某列的數(shù)據(jù)進(jìn)行變量排序等。變量表中的變量可以通過以下方式來生成:(1)模型本身的特性,如圖2中的材料密度(PhysicalProperties_Density)和計(jì)算精度(Physical-Properties_Accuracy);(2)設(shè)計(jì)特征時(shí)標(biāo)注的草圖尺寸;(3)生成特征時(shí)的特征參數(shù),如圖2中的拉伸高度(線性_2)和陣列個(gè)數(shù)(陣列事例_2_X_數(shù));(4)用人工方式添加變量,其操作步驟是選擇變量表中空白行的“名稱”屬性,鍵入變量名稱,然后單擊“單位類型”下拉框,設(shè)置變量的單位,默認(rèn)的單位是“距離”,也可以將變量的單位設(shè)置為“角度”、“面積”等,如果無單位可設(shè)置為“標(biāo)量”,最后在“值”屬性中鍵入變量的值。
變量表的設(shè)置包括:變量名稱的修改,變量驅(qū)動(dòng)類型的設(shè)置,變量變化范圍的設(shè)置,變量間函數(shù)關(guān)系的設(shè)置,變量過濾器的使用等。
變量表中的變量大部分都是在模型設(shè)計(jì)過程中由Solid Edge自動(dòng)生成的,變量的名稱沒有明確的含義,在使用中常常不方便,可以選擇某個(gè)變量的“名稱”屬性,直接鍵入由字符、數(shù)字或下劃線組成的變量名稱,使變量名稱具有明確的含義。圖3為修改了變量名稱后的模柄模型的變量表。
變量表中變量的“類型”屬性有“Var”和“Dim”,Dim類型的變量是尺寸變量、直接與模型的形狀有關(guān),如圖3中的“D1”變量。Var類型的變量與模型的形狀沒有直接的關(guān)系,如圖3中的“PhysicalProperties_Density”變量。變量的“值”屬性中除了有該變量的數(shù)值外,常常還帶有一定的背景色和圖標(biāo)。不同的背景色表示該變量的狀態(tài),白色背景表示該變量可以被直接修改,如修改“HoleDia”變量的值可以改變孔的直徑;灰色背景表示該變量被其他變量控制,不能直接修改,如“HoleDim”變量標(biāo)注的是模柄螺釘過孔的直徑,但是該孔是由孔特征生成的,其直徑由“HoleDia”變量控制;橙色背景表示該尺寸數(shù)值不在該變量的限定范圍內(nèi)或出現(xiàn)了錯(cuò)誤。鎖圖標(biāo)和開鎖圖標(biāo)表示該變量是驅(qū)動(dòng)尺寸還是被驅(qū)動(dòng)尺寸,帶鎖圖標(biāo)的變量是驅(qū)動(dòng)尺寸(如圖3中的“H2”變量),其數(shù)值的變化可以改變模型的尺寸;帶有開鎖圖標(biāo)的變量是被驅(qū)動(dòng)尺寸(如圖3中的“D1”變量),當(dāng)模型的形狀發(fā)生改變時(shí)其數(shù)值會(huì)相應(yīng)變化。單擊圖標(biāo)可以在鎖圖標(biāo)和開鎖圖標(biāo)間進(jìn)行切換。在同步建模方式下標(biāo)注的PMI尺寸,在變量表中顯示為帶開鎖圖標(biāo)的被驅(qū)動(dòng)尺寸,可以通過選擇模型上的PMI尺寸來修改模型,相應(yīng)變量的數(shù)值會(huì)發(fā)生相應(yīng)的變化,單擊開鎖圖標(biāo)可將該尺寸變量轉(zhuǎn)換為帶鎖圖標(biāo)的驅(qū)動(dòng)尺寸。在同步建模方式的草圖上標(biāo)注的尺寸在變量表中顯示為帶鎖圖標(biāo)的驅(qū)動(dòng)尺寸,可以直接通過修改變量表中變量的數(shù)值來修改圖形,單擊帶鎖圖標(biāo)可將該尺寸變量轉(zhuǎn)換為帶開鎖圖標(biāo)的被驅(qū)動(dòng)尺寸。在順序建模方式下標(biāo)注的PMI尺寸在變量表中顯示為灰色背景,當(dāng)模型形狀改變時(shí),該尺寸變量會(huì)發(fā)生相應(yīng)的變化。在順序建模方式的特征草圖中標(biāo)注的尺寸在變量表中顯示為帶鎖圖標(biāo)的驅(qū)動(dòng)尺寸,可以通過修改變量表中變量的數(shù)值來改變模型尺寸,單擊帶鎖圖標(biāo)可以將該尺寸變量轉(zhuǎn)換為帶開鎖圖標(biāo)的被驅(qū)動(dòng)尺寸。
變量的變化范圍指變量數(shù)值的變化情況。變量值可以限定于一定的變化區(qū)間或限定于某個(gè)常數(shù)列表。設(shè)置變量變化范圍有兩種方法:一個(gè)是利用變量規(guī)則編輯器來設(shè)置,另一個(gè)是直接在變量的“范圍”屬性中按照規(guī)定格式進(jìn)行設(shè)置。對(duì)于已設(shè)置了變化范圍的變量,由于函數(shù)關(guān)系等原因使變量值超出了所設(shè)置范圍時(shí),變量值將不會(huì)發(fā)生更改,同時(shí)變量的“值”屬性的背景會(huì)變成橙色,表示變量出錯(cuò)。如圖3所示的模柄模型變量表中變量的“范圍”屬性的表達(dá)式規(guī)定了相應(yīng)變量的變化范圍,可以直接在變量的“范圍”屬性中用表1中的符號(hào)來設(shè)置變量的變化范圍,表2中列出了變量x的“范圍”屬性為各種表達(dá)式時(shí)的含義。
表1 設(shè)置變量變化范圍的符號(hào)
表2 變量x范圍屬性表達(dá)式的含義
建立變量間的函數(shù)關(guān)系是產(chǎn)品模型參數(shù)化設(shè)計(jì)的重要方法,對(duì)于比較簡單的函數(shù)關(guān)系,可以利用表3所示的算術(shù)運(yùn)算符和表4所示的數(shù)學(xué)函數(shù)直接建立變量間的函數(shù)關(guān)系。對(duì)于變量間比較復(fù)雜的關(guān)系,可以利用VBA編程。
表3 算術(shù)運(yùn)算符
表4 數(shù)學(xué)函數(shù)
在Solid Edge零件模塊中繪制如圖4所示的草圖并標(biāo)注尺寸,尺寸的具體數(shù)值并不重要。打開相應(yīng)模型的變量表,按圖5修改變量的名稱,在變量的“公式”屬性中建立變量的相應(yīng)公式。從圖5所示修改后的變量表中可以看出,只有“D1”變量為白色背景并帶鎖圖標(biāo),表示“D1”變量為可以修改數(shù)值的驅(qū)動(dòng)尺寸,當(dāng)“D1”變量的值修改后,整個(gè)圖形就會(huì)發(fā)生相應(yīng)的改變。
VBA(Visual Basic for Application)與Visual Basic的語法結(jié)構(gòu)是相同的,VBA程序依附于Solid Edge主應(yīng)用程序[2]。利用變量表直接建立變量間的函數(shù)關(guān)系,只能處理變量間比較簡單的關(guān)系,對(duì)于比較復(fù)雜的約束,可以利用VBA編程來實(shí)現(xiàn)。Solid Edge變量表可以通過調(diào)用VBA代碼編寫的子程序(Sub過程)和函數(shù)(Function過程)建立變量間的參數(shù)約束和工程約束。Sub過程是由Sub和End Sub包含的一系列VBA語句,沒有返回值;Function過程是由Function和End Function包含的一系列VBA語句,可以返回一個(gè)值。包含過程的文件的擴(kuò)展名為“.BAS”,是ASCII碼文本文件,可以使用Visual Basic編輯器編寫和調(diào)試,也可以用記事本(NotePad)來編寫。
定義子程序的語法格式為:
定義函數(shù)的語法格式為:
說明:
(1)<表達(dá)式>的值通過賦值語句將值賦給<函數(shù)名>,該值就是函數(shù)的返回值。
(2)可以用一個(gè)或多個(gè)Exit Sub或Exit Function語句從過程中退出。
(3)<形參表>在過程調(diào)用時(shí)用變量表中的變量替換。
(4)關(guān)鍵字ByVal定義的變量只傳遞變量的值,過程運(yùn)行時(shí)將不會(huì)改變?cè)撟兞康闹怠?/p>
(5)關(guān)鍵字ByRef定義的變量,可以在過程中進(jìn)行修改。Function過程本身只能返回一個(gè)值。
(6)通過定義多個(gè)ByRef變量可以得到多個(gè)返回值,不指定關(guān)鍵字的變量,將被認(rèn)為是ByRef變量。
如圖6所示的槽鋼模型,其拉伸截面草圖如圖7所示,現(xiàn)欲建立10、12和14號(hào)槽鋼的參數(shù)化模型。新建一個(gè)零件模型文件,按10號(hào)槽鋼的尺寸設(shè)計(jì)槽鋼模型,打開變量表,將所有尺寸變量修改為“值”屬性帶鎖圖標(biāo)的驅(qū)動(dòng)尺寸,按圖7所示修改槽鋼模型變量表的變量名稱,將“型號(hào)”變量的“范圍”屬性設(shè)置為“{10;12;14}”,修改后的變量表如圖8所示。
用記事本或Visual Basic編輯器編寫 CaoGang.Bas文件,其內(nèi)容為:
在變量表上單擊“公式”圖標(biāo)按鈕加載CaoGang子程序,用變量表中的“型號(hào)”、“h”、“b”、“d”、“t”、“r”和“r1”變量依次替換CaoGang子程序中的“Xing-Hao”、“h”、“b”、“d”、“t”、“r”和“r1”形參,加載 CaoGang子程序后的變量表如圖9所示,當(dāng)將“型號(hào)”變量修改為12或14時(shí),槽鋼模型的尺寸變量將按照CaoGang子程序的設(shè)置進(jìn)行變化,得到12號(hào)或14號(hào)槽鋼模型。
建立如圖10所示的軸對(duì)稱的盤形零件模型,其中孔由孔特征生成,并利用圓形陣列排列,孔的數(shù)量(n)與其分布直徑(Dia)之間的函數(shù)關(guān)系符合式(1)。
編寫 HolesNumber.bas文件,用 HolesNumber函數(shù)來設(shè)置“n”變量的值,以滿足式(1)。HolesNumber.bas文件的內(nèi)容如下:
在變量表中加載HolesNumber函數(shù),用變量表中的“孔分布直徑”變量替換 HolesNumber函數(shù)中的“Dia”形參,加載HolesNumber函數(shù)后,盤形零件模型的變量表如圖12所示。
新建一個(gè)零件模型文件,按圖13所示繪制一個(gè)矩形草圖,以該矩形的面積和周長為參數(shù),建立矩形長度(L)、寬度(W)與其面積和周長之間的函數(shù)關(guān)系。
設(shè)計(jì)分析:若矩形的邊長為d1和d2,已知面積(area)和周長(perimeter),則有:
將式(3)代入式(2),該問題可以轉(zhuǎn)化為一元二次方程求解,計(jì)算結(jié)果如下:
編寫名為“SideLength.bas”的ASCII碼文本文件,其內(nèi)容如下:
加載Side子程序,依次用變量表中“area”、“perimeter”、“L”和“W”變量替換 Side子程序中的“area”、“perimeter”、“d1”和“d2”形參,零件模型的變量表如圖14所示。
三維CAD軟件的參數(shù)化設(shè)計(jì)對(duì)于提高產(chǎn)品開發(fā)設(shè)計(jì)的速度和質(zhì)量有重要意義,Solid Edge變量表是利用Solid Edge進(jìn)行產(chǎn)品參數(shù)化設(shè)計(jì)的主要工具之一,利用變量表可以直接建立產(chǎn)品設(shè)計(jì)參數(shù)間的函數(shù)關(guān)系,也可以利用VBA編程實(shí)現(xiàn)設(shè)計(jì)參數(shù)間比較復(fù)雜的關(guān)系。
[1]童柄樞.機(jī)械CAD技術(shù)基礎(chǔ)[M].北京:清華大學(xué)出版社,2010.
[2]王勁,趙宏偉,郭天德.基于SolidEdge的灰斗參數(shù)化三維模型設(shè)計(jì)[J].制造業(yè)自動(dòng)化,2010,32(10):156 -159.
[3]王維,王勁,王艷芳,等.Solid Edge基礎(chǔ)應(yīng)用與實(shí)踐[M].北京:清華大學(xué)出版社,2011.