劉軍輝
(河源職業技術學院,河源 517000)
Siemens NX 是一款集工程設計、制造和分析的綜合3D軟件,在機械領域發揮著重要作用。針對漸開線內齒輪的設計,NX并沒有現成的齒輪模塊,需要在齒輪技術參數的分析與計算基礎上,運用基本的建模功能對其進行繁瑣的漸開線繪制、齒輪參數表達式的建立和實體造型。設計步驟較為復雜,效率底下,且在進行參數設計時容易出現錯誤。因此,開發出獨立的齒輪模塊非常有必要,本文以NX/Open API和Grip編程技術開發出一具體的漸開線內齒輪模塊,使內齒輪的設計很好的傳承NX的“參數化設計”思想,通過輸入內齒輪的參數就可以自動設計出來。

圖1 內齒輪開發流程
在漸開線內齒輪的二次開發過程中,需要設計菜單、用戶對話框和Grip程序。菜單的設計采取MenuScript腳本進行設計,用戶對話框UI界面的設計則運用UG/Open,把內齒輪的Grip編譯程序grx導入VC++ 6.0進行處理,最終得到所需的漸開線內齒輪模塊DLL文件,具體流程如圖1所示。
在進行漸開線內齒輪開發之前,需要分析它的漸開線方程和參數。漸開線對于齒輪有著重要的作用,它是齒輪的工作齒廓,它保證了齒輪傳動具有瞬時傳動比恒定、傳力方向恒定、傳動中心距具有可分性等特點[1]。漸開線的參數方程為:

漸開線內齒輪參數定義如下:

其中,rb為基圓半徑,Φ為形成漸開線的旋轉角度,m為模數,z為齒數,ha為齒頂高系數,c為徑向間隙系數,d為分度圓直徑,db為基圓直徑,da為齒徑圓直徑,df為齒根圓直徑,α為壓力角,s為分度圓上齒輪的厚度。
在開發之前,首先確定齒輪開發的目錄:E:gear,并且在此目錄下創建文件夾startup和application,前者存放菜單文件(.men)和模塊動態鏈接庫文件(.dll),后者存放UI交互界面文件(.dlg)。
用于NX菜單的設計語言為MenuScript腳本,它能方便的對NX菜單進行更改和增減,本文在NX的菜單“窗口”前加入一個菜單“內齒輪設計”,菜單文件命名為:gear.men,內容如下所示:
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR
AFTER UG_APPLICATION
CASCADE_BUTTON gear_menu
LABEL 內齒輪設計
END_OF_AFTER
MENU gear_menu
BUTTON gear
LABEL基于UG/Open 與Grip漸開線內齒輪的二次開發
ACTIONS gear.dlg
END_OF_MENU
其中gear.dlg為后續設計的UI交互界面名稱,它在點擊菜單后彈出。在啟動NX前,添加一個設置環境變量UGII_USER_DIR= E:gear,啟動NX如圖2所示。

圖2 菜單設計
在設計UI交互界面時,利用NX集成的UIStyler進行,它是一種所見即所得的模式,可以方便快速的設計出用戶對話框窗口。在界面設計前先分析漸開線內齒輪的關鍵輸入數據,通過這些數據可以唯一的決定內齒輪規格。按照內齒輪的參數要求,有如下數據需要選取:內齒輪外徑、模數、齒數、壓力角、齒頂高系數、徑向間隙系數和齒寬,其中只有齒數為整數類型Interger,其余全部為Real類型。
啟動NX進入“樣式編輯器模式”,選擇“確定和取消”按鈕類型,加入上述輸入參數的元素,并對其輸入名稱,如圖3、4所示。

圖3 UI界面

圖4 UI屬性框
保存后形成3個文件:頭文件(.h)、C文件(.c)和界面文件(.dlg),在進行界面與Grip程序數據互通時需要在C文件上編寫相應的功能代碼,將dlg文件拷貝到startup文件下供菜單調用。
漸開線內齒輪的設計,先要繪制出基圓、分度圓、齒頂圓和齒根圓曲線,再依據參數決定的漸開線進行齒廓曲線繪制,其余齒廓曲線采取環形陣列的方式完成,創建完曲線之后利用齒頂圓曲線進行實體拉伸,用齒根圓曲線進行實體剪切,最后用漸開線齒廓曲線進行齒剪切成形。在對Grip進行程序設計時,為了防止內齒輪生成失敗,必須加入條件判斷,限制不合理的數據輸入,如齒頂圓不能小于基圓。Grip關鍵代碼如下:
number/dd,m,z,a,ha,c,w $$ 定義齒輪參數數據;
……
$$ 數據合理性判斷;
ifthen/da<db

$$ 漸開線曲線方程如上述漸開線內齒輪參數的定義

$$ 運用創建的曲線進行實體建模

編寫完成后運用NX自帶的編譯工具進行編譯,得到內齒輪建模文件gear.grx。
啟動VC++ 6.0,對其開發環境進行設置,在【Project】/【Setting】的【Link】選項卡中添加:libufun.lib和libugopenint.lib兩個庫文件[2],把前面步形成的gear.c更改為c++程序:gear.cpp,并且把它與gear.h加載進VC。在針對gear.cpp的程序編寫中,主要是編寫相應“確定”按鈕的回調函數int GEAR_ok ( int dialog_id, void * client_data,UF_STYLER_item_value_type_p_t callback_data)。為了讀取UI界面數據程序的清晰,設計參數讀取函數:void Read_para(int dialog_id),其中關鍵代碼如下:
……
UF_STYLER_item_value_type_t data[7];//data[7]為UI界面操作的結構體數據類型;
……
data[0].item_attr=UF_STYLER_VALUE;//獲取UI整體界面屬性;
data[0].item_id= GEAR_D;//獲取內齒輪外徑元素屬性;
UF_STYLER_ask_value(dialog_id,&data[0]);//獲取內齒輪外徑數據并存入&data[0]中;
……
回調函數GEAR_ok通過調用Read_para建立UI界面與Grip 程序的數據傳遞,關鍵代碼如下:

完成gear.cpp的編程后,對其進行編譯連接,生成對應的gear.dll,將它拷貝到application文件夾下,啟動NX,運行結果如圖5所示。

圖5 內齒輪
NX功能的強大,不僅僅體現在它本身內置的一些功能,還體現在它對二次開發的強大支持上,只有充分的挖掘NX的潛能,定制具有專業特色領域的NX功能,才能更高效準確的進行設計。本文很好的闡述了運用NX/Open API與Grip技術進行漸開線的內齒輪開發,利用這種開發思路可以開發出其余種類的齒輪,為機械齒輪領域的NX參數化設計提供了條件。
[1] 張志強,夏尊鳳,許焰.任意轉角位置的漸開線齒輪齒面參數方程的研究[J].機械設計與制造,2005,8(8):52-54.
[2] 夏天,吳立軍.UG二次開發技術基礎[M].電子工業出版社,2005:89-90.