劉軍輝
(河源職業(yè)技術(shù)學(xué)院,河源 517000)
Siemens NX 是一款集工程設(shè)計(jì)、制造和分析的綜合3D軟件,在機(jī)械領(lǐng)域發(fā)揮著重要作用。針對(duì)漸開(kāi)線內(nèi)齒輪的設(shè)計(jì),NX并沒(méi)有現(xiàn)成的齒輪模塊,需要在齒輪技術(shù)參數(shù)的分析與計(jì)算基礎(chǔ)上,運(yùn)用基本的建模功能對(duì)其進(jìn)行繁瑣的漸開(kāi)線繪制、齒輪參數(shù)表達(dá)式的建立和實(shí)體造型。設(shè)計(jì)步驟較為復(fù)雜,效率底下,且在進(jìn)行參數(shù)設(shè)計(jì)時(shí)容易出現(xiàn)錯(cuò)誤。因此,開(kāi)發(fā)出獨(dú)立的齒輪模塊非常有必要,本文以NX/Open API和Grip編程技術(shù)開(kāi)發(fā)出一具體的漸開(kāi)線內(nèi)齒輪模塊,使內(nèi)齒輪的設(shè)計(jì)很好的傳承NX的“參數(shù)化設(shè)計(jì)”思想,通過(guò)輸入內(nèi)齒輪的參數(shù)就可以自動(dòng)設(shè)計(jì)出來(lái)。
圖1 內(nèi)齒輪開(kāi)發(fā)流程
在漸開(kāi)線內(nèi)齒輪的二次開(kāi)發(fā)過(guò)程中,需要設(shè)計(jì)菜單、用戶對(duì)話框和Grip程序。菜單的設(shè)計(jì)采取MenuScript腳本進(jìn)行設(shè)計(jì),用戶對(duì)話框UI界面的設(shè)計(jì)則運(yùn)用UG/Open,把內(nèi)齒輪的Grip編譯程序grx導(dǎo)入VC++ 6.0進(jìn)行處理,最終得到所需的漸開(kāi)線內(nèi)齒輪模塊DLL文件,具體流程如圖1所示。
在進(jìn)行漸開(kāi)線內(nèi)齒輪開(kāi)發(fā)之前,需要分析它的漸開(kāi)線方程和參數(shù)。漸開(kāi)線對(duì)于齒輪有著重要的作用,它是齒輪的工作齒廓,它保證了齒輪傳動(dòng)具有瞬時(shí)傳動(dòng)比恒定、傳力方向恒定、傳動(dòng)中心距具有可分性等特點(diǎn)[1]。漸開(kāi)線的參數(shù)方程為:
漸開(kāi)線內(nèi)齒輪參數(shù)定義如下:
其中,rb為基圓半徑,Φ為形成漸開(kāi)線的旋轉(zhuǎn)角度,m為模數(shù),z為齒數(shù),ha為齒頂高系數(shù),c為徑向間隙系數(shù),d為分度圓直徑,db為基圓直徑,da為齒徑圓直徑,df為齒根圓直徑,α為壓力角,s為分度圓上齒輪的厚度。
在開(kāi)發(fā)之前,首先確定齒輪開(kāi)發(fā)的目錄:E:gear,并且在此目錄下創(chuàng)建文件夾startup和application,前者存放菜單文件(.men)和模塊動(dòng)態(tài)鏈接庫(kù)文件(.dll),后者存放UI交互界面文件(.dlg)。
用于NX菜單的設(shè)計(jì)語(yǔ)言為MenuScript腳本,它能方便的對(duì)NX菜單進(jìn)行更改和增減,本文在NX的菜單“窗口”前加入一個(gè)菜單“內(nèi)齒輪設(shè)計(jì)”,菜單文件命名為:gear.men,內(nèi)容如下所示:
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR
AFTER UG_APPLICATION
CASCADE_BUTTON gear_menu
LABEL 內(nèi)齒輪設(shè)計(jì)
END_OF_AFTER
MENU gear_menu
BUTTON gear
LABEL基于UG/Open 與Grip漸開(kāi)線內(nèi)齒輪的二次開(kāi)發(fā)
ACTIONS gear.dlg
END_OF_MENU
其中g(shù)ear.dlg為后續(xù)設(shè)計(jì)的UI交互界面名稱,它在點(diǎn)擊菜單后彈出。在啟動(dòng)NX前,添加一個(gè)設(shè)置環(huán)境變量UGII_USER_DIR= E:gear,啟動(dòng)NX如圖2所示。
圖2 菜單設(shè)計(jì)
在設(shè)計(jì)UI交互界面時(shí),利用NX集成的UIStyler進(jìn)行,它是一種所見(jiàn)即所得的模式,可以方便快速的設(shè)計(jì)出用戶對(duì)話框窗口。在界面設(shè)計(jì)前先分析漸開(kāi)線內(nèi)齒輪的關(guān)鍵輸入數(shù)據(jù),通過(guò)這些數(shù)據(jù)可以唯一的決定內(nèi)齒輪規(guī)格。按照內(nèi)齒輪的參數(shù)要求,有如下數(shù)據(jù)需要選?。簝?nèi)齒輪外徑、模數(shù)、齒數(shù)、壓力角、齒頂高系數(shù)、徑向間隙系數(shù)和齒寬,其中只有齒數(shù)為整數(shù)類型Interger,其余全部為Real類型。
啟動(dòng)NX進(jìn)入“樣式編輯器模式”,選擇“確定和取消”按鈕類型,加入上述輸入?yún)?shù)的元素,并對(duì)其輸入名稱,如圖3、4所示。
圖3 UI界面
圖4 UI屬性框
保存后形成3個(gè)文件:頭文件(.h)、C文件(.c)和界面文件(.dlg),在進(jìn)行界面與Grip程序數(shù)據(jù)互通時(shí)需要在C文件上編寫相應(yīng)的功能代碼,將dlg文件拷貝到startup文件下供菜單調(diào)用。
漸開(kāi)線內(nèi)齒輪的設(shè)計(jì),先要繪制出基圓、分度圓、齒頂圓和齒根圓曲線,再依據(jù)參數(shù)決定的漸開(kāi)線進(jìn)行齒廓曲線繪制,其余齒廓曲線采取環(huán)形陣列的方式完成,創(chuàng)建完曲線之后利用齒頂圓曲線進(jìn)行實(shí)體拉伸,用齒根圓曲線進(jìn)行實(shí)體剪切,最后用漸開(kāi)線齒廓曲線進(jìn)行齒剪切成形。在對(duì)Grip進(jìn)行程序設(shè)計(jì)時(shí),為了防止內(nèi)齒輪生成失敗,必須加入條件判斷,限制不合理的數(shù)據(jù)輸入,如齒頂圓不能小于基圓。Grip關(guān)鍵代碼如下:
number/dd,m,z,a,ha,c,w $$ 定義齒輪參數(shù)數(shù)據(jù);
……
$$ 數(shù)據(jù)合理性判斷;
ifthen/da<db
$$ 漸開(kāi)線曲線方程如上述漸開(kāi)線內(nèi)齒輪參數(shù)的定義
$$ 運(yùn)用創(chuàng)建的曲線進(jìn)行實(shí)體建模
編寫完成后運(yùn)用NX自帶的編譯工具進(jìn)行編譯,得到內(nèi)齒輪建模文件gear.grx。
啟動(dòng)VC++ 6.0,對(duì)其開(kāi)發(fā)環(huán)境進(jìn)行設(shè)置,在【Project】/【Setting】的【Link】選項(xiàng)卡中添加:libufun.lib和libugopenint.lib兩個(gè)庫(kù)文件[2],把前面步形成的gear.c更改為c++程序:gear.cpp,并且把它與gear.h加載進(jìn)VC。在針對(duì)gear.cpp的程序編寫中,主要是編寫相應(yīng)“確定”按鈕的回調(diào)函數(shù)int GEAR_ok ( int dialog_id, void * client_data,UF_STYLER_item_value_type_p_t callback_data)。為了讀取UI界面數(shù)據(jù)程序的清晰,設(shè)計(jì)參數(shù)讀取函數(shù):void Read_para(int dialog_id),其中關(guān)鍵代碼如下:
……
UF_STYLER_item_value_type_t data[7];//data[7]為UI界面操作的結(jié)構(gòu)體數(shù)據(jù)類型;
……
data[0].item_attr=UF_STYLER_VALUE;//獲取UI整體界面屬性;
data[0].item_id= GEAR_D;//獲取內(nèi)齒輪外徑元素屬性;
UF_STYLER_ask_value(dialog_id,&data[0]);//獲取內(nèi)齒輪外徑數(shù)據(jù)并存入&data[0]中;
……
回調(diào)函數(shù)GEAR_ok通過(guò)調(diào)用Read_para建立UI界面與Grip 程序的數(shù)據(jù)傳遞,關(guān)鍵代碼如下:
完成gear.cpp的編程后,對(duì)其進(jìn)行編譯連接,生成對(duì)應(yīng)的gear.dll,將它拷貝到application文件夾下,啟動(dòng)NX,運(yùn)行結(jié)果如圖5所示。
圖5 內(nèi)齒輪
NX功能的強(qiáng)大,不僅僅體現(xiàn)在它本身內(nèi)置的一些功能,還體現(xiàn)在它對(duì)二次開(kāi)發(fā)的強(qiáng)大支持上,只有充分的挖掘NX的潛能,定制具有專業(yè)特色領(lǐng)域的NX功能,才能更高效準(zhǔn)確的進(jìn)行設(shè)計(jì)。本文很好的闡述了運(yùn)用NX/Open API與Grip技術(shù)進(jìn)行漸開(kāi)線的內(nèi)齒輪開(kāi)發(fā),利用這種開(kāi)發(fā)思路可以開(kāi)發(fā)出其余種類的齒輪,為機(jī)械齒輪領(lǐng)域的NX參數(shù)化設(shè)計(jì)提供了條件。
[1] 張志強(qiáng),夏尊鳳,許焰.任意轉(zhuǎn)角位置的漸開(kāi)線齒輪齒面參數(shù)方程的研究[J].機(jī)械設(shè)計(jì)與制造,2005,8(8):52-54.
[2] 夏天,吳立軍.UG二次開(kāi)發(fā)技術(shù)基礎(chǔ)[M].電子工業(yè)出版社,2005:89-90.