饒 佳,仲梁維
(上海理工大學 機械工程學院,上海 200093)
越來越多的企業已經不僅僅滿足簡單地使用CAD軟件,提出了對CAD設計軟件二次開發的要求。通過對CAD軟件的二次開發,可以大幅提高企業產品的開發效率,縮短設計周期,根據企業產品特點開發出一套專業設計軟件成為眾多企業研發設計部門的迫切需求。
AutoCAD、SolidWorks、UG 和 Pro/E 等 著 名CAD軟件都提供了良好的二次開發平臺,基于這些軟件的二次開發技術的研究已十分廣泛,然而這樣的軟件產品開發往往存在以下幾個方面的問題:
企業一般無法從現有的CAD軟件中找到適合自己企業較為完備的零件庫,二次開發建立的零件庫大都只針對某個特定行業,這樣的零部件庫日后很難從軟件市場上得到補充和升級。
企業往往將CAD軟件的二次開發工作交給高校、科研單位或軟件開發企業來完成,對于軟件二次開發者來說,編寫程序實現二次開發的技術已日趨成熟。但是,對于專業性較強領域的企業用戶,熟悉并理解其產品結構往往需要大量時間,并且對產品的互通性、變換性的認識十分有限。這就導致了二次開發的進度往往比較滯后,項目交付時間長,不能滿足企業快速響應市場的需求。
企業的設計軟件充分體現了企業的技術特點和優勢,對于這樣的二次開發軟件有著很強的保密性。軟件的頻繁補充和升級勢必給企業技術資料的外泄留下了巨大的隱患,因此軟件的頻繁升級是企業不太能夠接受的。另一個方面,從企業需求角度來看,企業產品要更新換代,創新設計是企業賴以生存的基石,設計變動頻繁,需要軟件的不斷維護升級,這無疑形成了一對矛盾,制約了企業的發展。而且,軟件更改升級必然帶來二次投資,開銷巨大。
如何有效解決這些問題成為企業創新發展道路上的新問題,由此產生了軟件三次開發的需求——企業在軟件開發能力有限的情況下,支付較少成本就能自主地實現軟件的三次開發,滿足企業創新發展的需求。本文以Pro/E為例,探討在軟件二次開發過程中充分考慮企業三次開發的需求,進行了若干嘗試和改進,為其提供良好三次開發的接口。
Pro/E提供了強大的二次開發功能,用戶可以自主選擇開發工具對其進行二次開發。Pro/E的二次開發工具主要有以下幾種:①基于C語言的Pro/TOOLKIT二次開發工具;②基于VB和Automation GATEWAY的二次開發工具;③基于JavaScript和HTML語言的Web.Link二次開發工具;④基于Java語言的J-Link二次開發工具[1,2]。對于軟件二次開發者來說,編寫程序實現二次開發比較簡單,而對于企業用戶,軟件交付使用后,理解和修改代碼的工作將是十分困難的。下面討論的是基于用戶不具備軟件開發能力的前提下,如何繞開代碼修改,對二次開發軟件進行維護和升級的方法。
1.1.1 使用配置的方法建立零部件庫。
二次開發中建立零部件庫主要有以下幾種方法:
1.1.1.1 編程實現
(1)程序自動建模
Pro/E中每個特征由不同的特征元素樹(feature element tree)來定義。在程序中對每個特征元素樹的全部變量賦值一次,就可以產生一個特征,多個特征的累加就形成了產品模型。特征元素樹包括的信息分為四類[3]:
①特征本身的所有選項和屬性。如特征類型名稱等。
②所有尺寸值。
③特征與已存在的幾何實體的參考關系。
④用于構造特征的平面圖形的起始位置。
在程序窗體界面輸入不同的參數值,便得到相應的零件模型。
(2)程序驅動模型
在Pro/E系統中,每建立一個模型,都會有一個宏文件記錄相應模型的產生過程,如果能夠對這個宏文件進行修改,就能控制模型的建立過程,進而控制所生成的模型。利用這個思想,在充分認識產品變換性的基礎上,建立初始模型,然后通過設置變量,建立程序中變量與模型參數之間的對應關系。通過運行該程序,系統可以通過以人機交互的方式控制模型參數、特征及特征的可變尺寸等,從而生成新的模型[4,5]。
這兩種方法都是通過編寫程序,由程序驅動生成模型,進而建立零部件庫。
1.1.1.2 使用配置實現
(1)族表
對于外形基本一致,但尺寸不一的系列零件設計,可以先構建一個初始模型,把它作為族表的類屬件。然后在族表中通過定義各個控制參數來控制模型的形狀大小,進而派生出一系列的衍生件。通過這種方法,可以在表格中存入一系列的零件信息,然后可以通過打開族表的類屬件后選中其中一個衍生件名來將其打開,這樣系統就會依照表中的參數信息自動生成改衍生件[6]。
(2)用戶自定義特征(UDF)
與族表類似,建立UDF庫也是先構建零件初始模型,模型創建完成后定義要包括的特征、參考提示、可變尺寸和外部符號等,然后保存這些信息到后綴為“.gph”文件中。這樣就可以在程序中通過給參數賦值改變特征的尺寸,得到所需的衍生件[6]。
對比編程的方法,使用配置生成的零部件庫可以巧妙地避免大量的程序編寫工作,通過使用Pro/E內置的這兩種配置方式,實現對零部件庫的控制。這樣,在軟件交付使用后,企業設計人員可以很方便地通過簡單的修改配置文件來增加和減少庫中的零件數量,有效地保證了零部件庫的可維護性。此外,增加或減少配置參數的操作也十分簡便。如增加模型的某個參數驅動,編程的方法則要通過修改程序代碼來實現,而配置的方法可以在表中進行簡單的鼠標鍵盤操作即可完成。
1.1.2 建立和解除方程式關系
在零部件的繪制過程中經常會遇到一些模型特征存在一定的數學約束關系的情況,以圖1三通管接頭模型為例。通常三通管接頭各個接頭長度相等,即圖中d1等于d0的1/2。

圖1 三通管接頭模型
實現這個長度關系有兩種方法:
1.1.2.1 編程實現
在程序中獲得d0的值,并令d1=0.5d0,這樣就把1/2倍的d0賦給了d1。通過這種方式就設定了管接頭各個接頭的長度關系,驅動參數d0就能實現改變整個模型尺寸大小的目的[7,8]。
1.1.2.2 使用方程式實現
關系(即建立方程式)是Pro/E提供的一種重要的尺寸約束關系,在零件尺寸實現參數驅動后,可以使用尺寸名稱作為變量添加方程式。通過在關系菜單中直接列出d0和d1的數學關系,使用方程式可以輕松地實現上述模型的尺寸關系,同時也方便用戶日后的修改。對于存在復雜數學關系的模型,如果采用編程方式設定各個尺寸的數學關系,那么關系發生微小變動時就要修改整個程序,而這對于用戶來說是比較困難的。采用建立方程式的方式,將模型的尺寸約束關系直接建立在模型的關系列表中,這樣用戶可以直接在Pro/E中添加和修改尺寸約束關系,而不必擔心代碼的修改。通過使用方程式的方式,可以大大減少資源開銷,實現用戶自行變更和升級。
1.2.1 使用隱含的方法處理不同拓撲結構問題
在產品建模過程中,經常會遇到拓撲結構,拓撲問題也是一種CAD軟件使用過程中的重要問題。
圖2所示為一臺真空鍍膜設備,在設備MV模塊(左)上部要安裝分子泵(右),該系列機型選用的分子泵主要有DP22x2和DP20x2兩種型號,根據設備尺寸的不同進行相應分子泵型號的選擇。

圖2 真空鍍膜機和分子泵
通??梢允褂靡韵聝煞N方式實現。
1.2.1.1 編程實現
步驟如下:①在Pro/E中加載真空鍍膜設備文件,取得元組件的句柄。然后根據MV模塊尺寸大小判斷需要選用的分子泵型號,并加載相應文件獲得句柄。②確定對應的裝配關系,編寫裝配函數。③利用獲得的句柄調用第二步編好的裝配函數,實現設備的選型和裝配[9,10]。
1.2.1.2 隱含實現
Pro/E中,隱含是暫時將零部件從裝配體中移除(而非刪除),使它不裝入內存,不再是裝配體中有功能的一部分。這里選用Pro/E中的隱含功能而沒有使用隱藏功能,因為在對零部件進行隱含后,其對應的裝配關系也被隱含了,這樣在同樣的位置裝配兩個類似的零部件,只要其中之一處于隱含狀態,另外的一個則完全不受影響,不會造成信息混亂和編輯困難。
在繪制圖2所示的三維模型時,將兩種型號的分子泵都裝配在真空鍍膜設備MV模塊的上部并處于隱含狀態,設計過程中,用戶根據需要選用一種分子泵后,程序就恢復該分子泵,解除其隱含狀態。如果設計變動,需要選用另一個分子泵,用戶則可以很方便地刪除當前分子泵,將另一種分子泵從隱含狀態恢復出來即可。依此類推,當設計者需要選用更多型號的分子泵,只需要在設備中裝配新型號的分子泵并處于隱含狀態,待程序生成整套設備以后,根據需要選擇各種分子泵的隱含與否狀態。
除此之外,實際設計過程中有時還需要對分子泵的選型標準作出相應調整。例如在上述設備中,其中一種情況按照過往經驗應該選用DP20x2型號分子泵,對應的程序中也是這么設定的。但是現在一款新機型根據設計需要,在同種情況下卻需要選用DP22x2型號分子泵。這種情況,無論是用戶去改動程序,還是開發者在開發過程中充分考慮這些特殊情況,都是十分困難的。因此,在實際設計中,當元組件選用型號需要增減時,或者選用標準變化時,程序編寫將很難實現這個過程,而使用隱含的方法可以比較靈活有效地解決這個問題。
1.2.2 使用橫向裝配方式
在產品三維建模過程中,通常采用圖3(a)所示裝配方式進行模型的裝配。即首先在裝配體中載入子裝配體1作為基礎組件,再依次在子裝配體1上裝入子裝配體2,在子裝配2上裝入子裝配體3,以此類推,最終完成所有零部件的裝配(本文稱之為縱向裝配)。與之相對,本文提出一種橫向裝配方式,即各個子裝配體直接與總裝配體建立裝配關系,這樣可以建立一個沒有模型的“空的”總裝配體,使各個子裝配體的空間位置關系由圖3(a)中的相對位置關系變為絕對位置關系。

圖3 縱向裝配和橫向裝配
采用橫向裝配方式,可以依據Pro/E中通過文件名索引模型文件的特點,先建立一個只有裝配關系的“空的”總裝配體,這個裝配體中的各個子裝配體以實際要裝入的子裝配體模型命名。這樣,當需要修改或替換某一個子裝配體時,只要保證這個子裝配體與“空的”總裝配體中對應的子裝配體同名即可。使用這種裝配方式,不用擔心出現因修改或刪除某個子裝配體而導致整個模型出錯不可用的狀況,保證了每個子裝配體的獨立變更性。對于每個子裝配體本身的裝配過程而言,這種裝配方式同樣適用。
另外值得一提的是,在二次開發過程中,使用隱含和橫向裝配一起配合使用,利用隱含保證模型變動的靈活性,利用橫向裝配保證模型修改的獨立性。尤其對于變動頻繁但又改動不大的模型,避免每次小的改動都要去修改程序代碼,方便了用戶的自我維護,為用戶三次開發提供了良好的接口。
本文分別從零部件和裝配體兩個方面,詳細介紹了在Pro/E二次開發完成后,如何留給用戶三次開發空間的若干方法。這些方法在一定程度上延長了二次開發軟件的生命周期,同時最大限度地節省了用戶的開發和維護成本,給用戶提供自由發揮的平臺。
[1] 張繼春.Pro/ENGINEER二次開發教程[J].CAD/CAM與制造業信息化,2002,(11):100-104.
[2] Parametric Technology Corporation.Pro/ENGINEER Wildfire Pro/TOOLKIT User's Guide[M].USA:PTC,2003.
[3] Parametric Technology Corporation.Pro/TOOLKIT User's Guide[Z].USA:PTC,1998.
[4] 程俊峰,沈精虎.基于Pro/E二次開發的零件參數化設計[J].現代制造工程,2008,(02):76-80.
[5] 王海巧,孫蓓蓓,陳 南.基于Pro/Engineer的參數化零件二次開發研究與實現[J].機械制造 與自動化,2006,(05):98-100+104.
[6] 賴朝安,李振南,孫延明,徐學軍,鄭時雄.Pro/E二次開發的關鍵技術[J].機械設計與制造工程,2001,(01):43-45.
[7] 蘇 丹,劉 佶.Pro/E二次開發基本方法研究[J].機電產品開發與創新,2008,(06):114-116.
[8] 劉 超,陳海峰,范曉斌.基于Pro/E二次開發的參數化零件的研究與實現[J].組合機床與自動化加工技術,2009,(06):26-29.
[9] 謝敏理,和 麗,許紀倩.Pro/E二次開發實現自動裝配的一種方法[J].現代機械,2006,(01):46-48.
[10]高霄漢,張予川.基于Pro/E二次開發技術的通用裝配仿真過程的研究[J].計算機輔助工程,2003,(01):49-54.