潘泓誼 劉淑梅 毛欣然
(上海工程技術大學 材料工程學院,上海 201620)
標準件庫在產品成體系的企業中有著非常廣泛應用。然而,UG部件族標準件庫和UG/Open API開發標準件庫都存在兼容性問題,且后者的開發成本高,入門困難,給標準件庫的開發造成了一定困難。
課題組以UG系統為基礎,重點闡述UG高通用性標準庫制作程序二次開發的關鍵思路,實現了面向模型的標準化實體及特征編譯方式,并設計了基于UG/Open GRIP的標準庫代碼生成系統流程,為標準件庫的建立提供了一個高效和實用的方案。
零件建模一般需要先閱讀并抽象圖中的幾何元素,后通過實體特征建立外形、內腔和孔洞,將外形實體減去內腔和孔洞,并對最終實體進行細節的修飾,從而得到完整的零件建模。簡而言之,零件建模就是通過人工識別圖紙中的各個零件特征,在外形實體的基礎上逐個添加特征,最后得到需要的零件。用戶將圖紙中幾何特征通過幾何體擬合后歸類為外形族,將實體內腔和孔洞擬合后歸為內腔族。系統自動將外形族減去內腔族便可以得到要求的體。根據標準件庫和標準件的總分關系,可以將系統編譯功能以代碼屬性分為單個零件的GRIP代碼和在單個零件數據基礎上生成的標準件庫GRIP代碼兩大類[1]。每個類別的編譯功能下,以用戶在軟件中主要操作類別設計對應的功能、對應功能族實體的定義和賦值、封裝實體信息并編譯為對應代碼。
結合標準件庫的操作界面和零件建模流程,可以得出圖1中的GRIP標準件庫系統的程序框架。用戶只需給對應功能族實體定義和賦值并給出代碼生成請求,即可生成GRIP語言的標準件庫。

圖1 系統框架圖
系統在Microsoft Visual Studio 2010(以下簡稱VS2010)環境下開發,為4層體系,包括用戶層、應用層、數據層及驅動層。用戶層是軟件的交互界面,用戶通過可視化界面調用系統的各功能選項完成交互動作。應用層主要由標準件參數化建模和GRIP代碼生成器兩個功能模塊組成。標準件參數化建模模塊下的各模塊負責圖形界面對應族實體的生成和屬性賦值[2]。GRIP代碼生成模塊對用戶對應生成的對應實體和賦值進行GRIP語言的編譯和合成。數據層為系統緩存,由用戶賦值數據和代碼緩存組成。系統通過讀取各項數據得到所需的參數,最終生成圖形界面對應族實體及GRIP代碼緩存[3]。各功能模塊通過對數據緩存進行讀寫完成數據交互。驅動層是在VS2010及UG/Open GRIP環境下對程序進行編譯,完成相關的功能。通過UG/OpenAPI函數及GRIP語言函數,從后臺調用UG系統的各項功能,完成對參數化建模和標準件庫的快速建立。
系統根據用戶設計結果生成標準件和標準件庫代碼,流程如圖2所示。單個標準件代碼由參數化建模模塊生成。模塊涵蓋了大部分擬合實體及相同的內腔和孔洞擬合實體。模塊程序對用戶設定的外形族和內腔族擬合實體進行創建和涂色,并對創建實體的形狀、尺寸、位置數據進行記錄,保存至單個零件實體代碼緩存中。通過單個標準件GRIP代碼生成模塊對功能族數據運算,從而得到單個標準件GRIP代碼和符合系統標準的標準件代碼緩存。標準件庫代碼框架生成模塊讀取標準件代碼緩存集合及標準件和標準件庫名稱,生成能被UG/Open GRIP編譯器編譯成程序的GRIP代碼。

圖2 GRIP標準庫建立流程
2.2.1 參數化建模方法
通過UG/Open API從外部驅動UG完成建模和創建GRIP代碼。以圓柱體特征為主的標準件創建和GRIP代碼輸出為例,說明參數化建模下如何生成顯示實體和代碼[4]。UF_MODL_create_cylinder函數能夠在顯示窗口創建圓柱體,其中高度、直徑以及中軸線矢量具體數據通過功能的輸入窗口獲得。生成實體原點的坐標數據由UF_UI_point_construct點構造器獲得。通過UF_OBJ_set_color涂色命令,將生成實體按照外形族或內腔族分類設置為綠色或紅色。用戶輸入所有需要的數據后,系統自動創建已涂色實體。
2.2.2 標準件代碼格式
在用戶創建特定功能族實體的同時,需要選擇創建實體的類型。例如,用戶選擇創建外形族圓柱體時,系統會自動將生成圓柱體的GRIP代碼寫入緩存。將外形族命名為cyc(n),n為實體個數,而后使用solcyl命令創建圓柱體,并按照代碼格式填入原點、高度、半徑以及矢量方向數據。數據由對話框和點構造器獲得。內腔族格式相同,變量名不同。對應族實體代碼緩存隨用戶創建對應實體疊加,而后所有外形族實體通過unite命令進行合并,再將合并后的外形族實體賦予cyc_unite(n)實體變量方便調用。將完整外形族實體通過subtra命令與緩存內內腔族實體進行求差,最后得到的標準件實體賦值給part(n)實體變量。需要說明的是,過程中的GRIP代碼保存在系統緩存中。
2.2.3 標準件庫代碼生成
系統設計將GRIP標準庫要素和程序整體架構設計相相合,構建具有一定格式的GRIP程序框架,將輸入信息和零件緩存按照格式填入框架中,生成相應的GRIP標準件庫程序。程序框架將GRIP標準件庫程序分成3部分:一是以實體變量聲明、主程序結束命令為主滿足GRIP程序運行要求的框架命令;二是以彈出多個選項單選框命令為主的標準件庫菜單命令;三是被菜單命令調用生成實體的工作命令。代碼來源于系統中的生成單個標準件的代碼緩存[5]。
GRIP標準件庫基本運行方式:程序開頭聲明實體變量;單選框程序段中定義與零件對應選項以及相應跳轉程序段,選擇任意選項跳轉指定位置;零件與程序段對應,程序段先從分別定義外形族和內腔族的實體類型、尺寸以及位置;聲明完外形族和內腔族實體后,將所有外形族實體合并為一個實體并聲明合并體;將合并體與內腔族實體依次求差,得到最后成品并聲明;程序段最后加上跳轉到結尾語句,以結束整個標準件庫程序。
本文在標準件庫設計理論研究和UG二次開發的基礎上,開發了一種能夠快速生成基于GRIP語言的標準件庫代碼編譯系統。根據具有普適性的參數建模邏輯和UG系統的特點,結合UG/Open API函數在VS2010開發環境下,使UG能夠快速生成高通用性標準件庫。系統彌補了標準件庫開發版本通用性較差及成本較高的缺點,為今后相關建模軟件的高通用性標準件庫的設計制作提供了參考。