64弧面凸輪數(shù)控轉(zhuǎn)臺(tái)的設(shè)計(jì)——3D建模與裝配
64弧面凸輪數(shù)控轉(zhuǎn)臺(tái)的設(shè)計(jì)——3D建模與裝配,64,凸輪,數(shù)控,轉(zhuǎn)臺(tái),設(shè)計(jì),建模,裝配
1弧面凸輪數(shù)控轉(zhuǎn)臺(tái)的設(shè)計(jì)——3D 建模與裝配摘要:弧面凸輪機(jī)構(gòu)是一種高速裝置,廣泛的應(yīng)用于各種機(jī)械傳動(dòng)中。為適應(yīng)當(dāng)代社會(huì)對(duì)弧面凸輪制造加工精度等方面的要求,本設(shè)計(jì)利用 UG 強(qiáng)大的二次開(kāi)發(fā)功能,通過(guò)運(yùn)用UG/API 語(yǔ)言進(jìn)行編程,從而開(kāi)發(fā)出弧面凸輪的建模命令,使得弧面凸輪的 3D 建模與裝配變得簡(jiǎn)單。關(guān)鍵詞:弧面凸輪,UG 二次開(kāi)發(fā),3D 建模,裝配The Design Of Globoidal Indexing Cam NC rotate table——3D construction mode and AssemblyAbstract:Globoidal indexing cam mechanism is a high speed indexing drivingdevice,it is widely used in many kinds of mechanical transmission .In order to fit the social request of Arc Cam manufacturing and processing precision, this Design used a strong secondary development function of UG. By using UG/API programming, therefore, to develop a modeling command Arc Cam. And make it easy to 3D Modeling and assembling.Keywords: Globoidal indexing cam, Secondary development function of UG, 3D Modeling and assembling.2第 1 章 緒論1.1 課題的研究背景弧面凸輪減速器是一種新型、高效的減速器,在國(guó)內(nèi)尚屬于研究階段。該減速器可取代渦輪蝸桿減速器,且具有優(yōu)良的特性。它可通過(guò)調(diào)整中心距進(jìn)行預(yù)緊,達(dá)到無(wú)間隙嚙合,長(zhǎng)期運(yùn)轉(zhuǎn)后可保持良好精度,傳動(dòng)效率高,熱損耗小。該機(jī)構(gòu)不僅精度高,而且體積小、重量輕、傳動(dòng)效率高、壽命長(zhǎng),適宜于高速高精度及高效率的場(chǎng)合。我國(guó)對(duì)弧面分度凸輪機(jī)構(gòu)的研究始于 20 世紀(jì) 70 年代末, 上海工業(yè)大學(xué), 天津大學(xué)、合肥工業(yè)大學(xué)、吉林工業(yè)大學(xué)、山東工業(yè)大學(xué)、陜西科技大學(xué)(原西北輕工業(yè)學(xué)院)、大連輕工業(yè)學(xué)院、上海工程技術(shù)大學(xué)等高校以及山東諸城鍛壓機(jī)床廠、西安鐘表機(jī)械廠、蕪湖電工機(jī)械廠等廠家都在弧面分度凸輪機(jī)構(gòu)的研究、制造方面取得了一批成果弧面凸輪在經(jīng)歷了幾十年的發(fā)展后,凸輪機(jī)構(gòu)學(xué)的理論研究已經(jīng)達(dá)到較高的水平, 為凸輪機(jī)構(gòu)的設(shè)計(jì)制造奠定了堅(jiān)實(shí)的理論基礎(chǔ)。當(dāng)今, 凸輪機(jī)構(gòu)的設(shè)計(jì)已廣泛采用解析法并借助計(jì)算機(jī)來(lái)完成, 但目前國(guó)內(nèi)文獻(xiàn)介紹的凸輪機(jī)構(gòu) CAD、 CAM 只能設(shè)計(jì)幾種平面或空間凸輪機(jī)構(gòu)。而基于 UG 軟件的二次開(kāi)發(fā)模塊開(kāi)發(fā)了弧面凸輪的三維 CAD 軟件,為弧面凸輪數(shù)控加工模擬以及建立弧面凸輪的運(yùn)動(dòng)仿真系統(tǒng)奠定了基礎(chǔ)。因此,現(xiàn)代弧面分度凸輪機(jī)構(gòu)的設(shè)計(jì)建模技術(shù)有著廣泛的工程應(yīng)用背景和研究意義 。隨著計(jì)算機(jī)技術(shù)和現(xiàn)代設(shè)計(jì)理論與方法的迅速發(fā)展,三維設(shè)計(jì)軟件尤其是 Unigraphics 在機(jī)械零件和產(chǎn)品設(shè)計(jì)中的日益普及,弧面凸輪實(shí)體在三維軟件特別是在 UG 中的繪制變得越來(lái)越重要。但 UG 中并無(wú)弧面分度凸輪的實(shí)體建模命令,這就得要我們借助 UG 強(qiáng)大的二次開(kāi)發(fā)功能,通過(guò)定制弧面凸輪設(shè)計(jì)界面,達(dá)到直接建立三維實(shí)體的目的。建模技術(shù)是 CAD 的核心技術(shù),參數(shù)化造型技術(shù)和特征造型技術(shù)是新一代繼承化 CAD系統(tǒng)應(yīng)用研究的熱點(diǎn)理論。目前國(guó)內(nèi)外對(duì)二維圖形參數(shù)化和簡(jiǎn)單三維實(shí)體的參數(shù)化造型較為成熟。對(duì)復(fù)雜的三維實(shí)體的參數(shù)化造型尚不多見(jiàn),特別是弧面分度凸輪這類形狀復(fù)雜、精確齒形的三維實(shí)體參數(shù)化造型設(shè)計(jì)更少。由于弧面凸輪形狀復(fù)雜,繪制齒形曲線較復(fù)雜。并且弧面凸輪各參數(shù)間都有嚴(yán)格的函數(shù)關(guān)系,再加上隨著當(dāng)代機(jī)械制造業(yè)的不斷發(fā)展,弧面凸輪的精度要求也越來(lái)越高,其實(shí)體的繪制較為麻煩?;∶嫱馆啿⒉皇且粋€(gè)標(biāo)準(zhǔn)件,它的各個(gè)參數(shù)隨著設(shè)計(jì)要求的不同而不同。如果每設(shè)計(jì)一個(gè)齒輪都要畫一個(gè)對(duì)應(yīng)的實(shí)體部件的話,那不僅增加了設(shè)計(jì)者的勞動(dòng)量,還大大降低了設(shè)計(jì)效率,阻礙了企業(yè)的生產(chǎn)和發(fā)展。參數(shù)化設(shè)計(jì)是新一代智能化、集成化 CAD 系統(tǒng)的核心內(nèi)容,也是當(dāng)前 CAD 技術(shù)的研究熱點(diǎn)。用大型的三維軟件實(shí)現(xiàn)弧面凸輪的參數(shù)化造型已成為設(shè)計(jì)者的迫切需求,弧面凸輪體參數(shù)化造型有重要的意義:(1)弧面凸輪傳動(dòng)的參數(shù)化設(shè)計(jì)與建模系統(tǒng)是 CAD 技術(shù)與弧面凸輪設(shè)計(jì)相結(jié)合的產(chǎn)物,也是兩者發(fā)展的趨勢(shì)所在。(2)實(shí)現(xiàn)設(shè)計(jì)過(guò)程自動(dòng)化避免了設(shè)計(jì)人員手動(dòng)查閱大量的數(shù)據(jù),也避免了手工取點(diǎn)造型的復(fù)雜過(guò)程,該系統(tǒng)的開(kāi)發(fā),可以將手算設(shè)計(jì)的工作人員從繁瑣、低效的工作中解放了出來(lái)。3(3)實(shí)現(xiàn)弧面凸輪了的參數(shù)化設(shè)計(jì)以及其精確的造型,可以將設(shè)計(jì)計(jì)算、三維造型與繪制工程圖的無(wú)縫結(jié)合,同時(shí)為弧面凸輪的有限元分析、機(jī)構(gòu)仿真和數(shù)控加工等工作奠定基礎(chǔ)。本課題利用 UG 的二次開(kāi)發(fā)技術(shù),為解決弧面凸輪參數(shù)化設(shè)計(jì)問(wèn)題提供了可行的方法,通過(guò)直接輸入弧面凸輪設(shè)計(jì)條件,利用計(jì)算得出的設(shè)計(jì)參數(shù)進(jìn)行實(shí)體建模,實(shí)現(xiàn)弧面凸輪的參數(shù)化設(shè)計(jì),提高弧面凸輪設(shè)計(jì)的效率和準(zhǔn)確性。1.2 課題的研究?jī)?nèi)容和解決方法本課題利用大型軟件 UGNX5.0 來(lái)實(shí)現(xiàn)弧面凸輪的三維參數(shù)化造型,通過(guò)改變弧面凸輪的一些基本參數(shù),生成其相應(yīng)弧面凸輪。要達(dá)到相應(yīng)的設(shè)計(jì)要求,首先要知道弧面凸輪的廓面方程,畫出弧面凸輪模型后,還應(yīng)知道 UG 二次開(kāi)發(fā)的知識(shí),靈活運(yùn)用 UG 系統(tǒng)提供的二次開(kāi)發(fā)工具,在模型的基礎(chǔ)上編制相應(yīng)的程序,最后完成弧面凸輪參數(shù)化設(shè)計(jì)模塊的開(kāi)發(fā)。具體內(nèi)容和步驟如下:(1) 研究弧面凸輪的廓面方程和各參數(shù)間的關(guān)系并建立數(shù)學(xué)模型;(2)深入掌握 UG 二次開(kāi)發(fā)的各種方法,并熟練運(yùn)用 UG/OPEN 開(kāi)發(fā)工具,在建立弧面凸輪的數(shù)學(xué)模型的基礎(chǔ)上,對(duì)各弧面凸輪實(shí)現(xiàn)三維參數(shù)化造型;(4) 在構(gòu)建弧面凸輪模塊框架的基礎(chǔ)上,深入研究菜單的制作技術(shù)以確定本課題應(yīng)采用的最佳菜單制作技術(shù)。UG 軟件是集 CAD/CAM/CAE 一體化的三維參數(shù)化軟件,是當(dāng)今世界上最為先進(jìn)的計(jì)算機(jī)輔助設(shè)計(jì)、制造和分析軟件,在國(guó)內(nèi)使用相當(dāng)廣泛。另外它所提供的二次開(kāi)發(fā)語(yǔ)言模塊 UG/Open API、UG/Open GRIP 和輔助開(kāi)發(fā)模塊 UG/Open Menu script 與 UG/Open UI Styler 及其良好的高級(jí)語(yǔ)言接口,使 UG 的圖形功能和計(jì)算功能有機(jī)的結(jié)合起來(lái),便于用戶去開(kāi)發(fā)各種基于自身需要的專用 CAD 系統(tǒng)。使用 UG/Open API 和 UG/Open GRIP 中任何一個(gè)模塊都能實(shí)現(xiàn) UG 的二次開(kāi)發(fā),再結(jié)合輔助模塊,就能開(kāi)發(fā)出 UG 界面的應(yīng)用模塊。因此,合理利用 UG 的二次開(kāi)發(fā)語(yǔ)言模塊和輔助模塊,就可以實(shí)現(xiàn)在 UG 環(huán)境下對(duì)弧面凸輪進(jìn)行參數(shù)化設(shè)計(jì)。4第二章 弧面分度凸輪機(jī)構(gòu)設(shè)計(jì)基礎(chǔ)2.1 弧面分度凸輪廓面理論弧面凸輪的工作廓面是空間不可展曲面,很難用常規(guī)的機(jī)械制圖方法進(jìn)行測(cè)繪,也不能用展成平面輪廓線的方法設(shè)計(jì)。針對(duì)弧面分度凸輪機(jī)構(gòu)實(shí)際嚙合過(guò)程中滾子曲面與弧面凸輪廓面互為共扼曲面的特點(diǎn),利用空間包絡(luò)曲面的共扼原理進(jìn)行設(shè)計(jì)計(jì)算,推導(dǎo)弧面分度凸輪的廓面方程。2.2 共軛曲面原理共軛曲面是機(jī)構(gòu)中兩構(gòu)件上用以實(shí)現(xiàn)給定運(yùn)動(dòng)規(guī)律連續(xù)相切的一對(duì)曲面,研究的是相互接觸且有相對(duì)運(yùn)動(dòng)的兩個(gè)曲面。對(duì)于空問(wèn)共扼曲面問(wèn)題用圖解法求解困難較大,因此一般結(jié)合微分幾何和剛體運(yùn)動(dòng)學(xué),以向量、矩陣或?qū)ε紨?shù)等為工具的解析法,研究一對(duì)共扼曲面的兒何形狀與這對(duì)曲面相對(duì)運(yùn)動(dòng)的關(guān)系。已知共軛運(yùn)動(dòng)和共扼曲面中的一個(gè)曲面,求另一個(gè)曲面,是共軛曲面理中的基本問(wèn)題。求解方法有包絡(luò)法和運(yùn)動(dòng)法等,因包絡(luò)法比較繁瑣,多用運(yùn)動(dòng)法求解。與共扼曲線相仿,一對(duì)共軛曲面在嚙合過(guò)程中連續(xù)相切的條件是兩曲面在接觸點(diǎn)處的相對(duì)速度應(yīng)與過(guò)該點(diǎn)所作這對(duì)共軛曲面的公法線垂直。根據(jù)這個(gè)原理,在給定的曲面 1 上任選一點(diǎn),找出該點(diǎn)進(jìn)入接觸位置曲面所需的轉(zhuǎn)角和位移,用坐標(biāo)轉(zhuǎn)換法或向量回轉(zhuǎn)法等即可求得接觸點(diǎn)在固定空間中的位置,即嚙合曲面上的一個(gè)對(duì)應(yīng)點(diǎn)。同時(shí)也可求出曲面 2 上的對(duì)應(yīng)點(diǎn)。這樣一個(gè)一個(gè)點(diǎn)求解,最后可求得整個(gè)嚙合曲面及與曲面 1 共軛的曲面 2。根據(jù)共扼曲面原理,凸輪工作廓面與從動(dòng)盤滾子曲面間的共軛接觸點(diǎn)必須滿足下列三個(gè)基本條件:(1)在共 V- E 接觸位置,兩曲面上相對(duì)應(yīng)的一對(duì)共轆接觸點(diǎn)必須重合。(2)在共桃接觸點(diǎn)處,兩曲面間的相對(duì)運(yùn)動(dòng)速度必須垂直于其公法線。(3)兩曲面在共軛接觸點(diǎn)處必須相切,不產(chǎn)生干涉,且在共軛接觸點(diǎn)處無(wú)曲率干涉。根據(jù)以上原理,當(dāng)己知凸輪和分度盤的運(yùn)動(dòng)規(guī)律之后,就可以由滾子圓柱面方程,通過(guò)坐標(biāo)變換,推導(dǎo)出凸輪廓面方程。2.3 齊次坐標(biāo)變換所謂齊次坐標(biāo)變換,就是要把被變換坐標(biāo)系描述的矢量變換成用其參考坐標(biāo)系所描述的矢量。在笛卡爾坐標(biāo)系 o'x'y'z'中點(diǎn)(x',y ',z')向另一個(gè)笛卡爾坐標(biāo)系 oxyz 變換,變換后的坐標(biāo)(x, y,z)可由下式求得: x= '''xxnoyazp?y= '''yyz= '''zzzz--坐標(biāo)系 o'x' y'z'的原點(diǎn)在坐標(biāo)系 oxyz 中的坐標(biāo);xpyznx , ny , nz --坐標(biāo)系 o'x' y'z'的 o'x'軸對(duì)坐標(biāo)系 oxyz 的 3 個(gè)方向余弦;--坐標(biāo)系 o'x' y'z'的 o' y'軸對(duì)坐標(biāo)系 oxyz 的 3 個(gè)方向余弦;xyzo5--坐標(biāo)系 o'x' y'z'的 o' z'軸對(duì)坐標(biāo)系 oxyz 的 3 個(gè)方向余弦。,xyza若( )是 o'x' y'z'系的齊次坐標(biāo),( )是 oxyz 的齊次坐標(biāo),而我們總''''1234,x124,x可以認(rèn)為 ,則'?''''1234''''2xxyyynoap??1—(1)''''31234'4zzzzxx?將此式寫成矩陣 形式,即:'XT?1—(2)'11 '2 2'3 3'4 401xxyyzznoapxxx?????????????????????那么1—(3)T 是一個(gè) 4 4 階矩陣,稱為笛卡爾坐標(biāo)系的齊次坐標(biāo)變換,它溝通了兩個(gè)坐標(biāo)?系的關(guān)系:表示了坐標(biāo)系中 o'x'y'z'的點(diǎn) x',經(jīng)過(guò) T 變換后變成了坐標(biāo)系 oxyz 中的點(diǎn) X。為 oxyz 坐標(biāo)系原點(diǎn) o 向 o'x'y'z'原點(diǎn) o'移動(dòng)的位移矢量。為 oxyz 坐標(biāo)系轉(zhuǎn)向 o'x'y'z'相吻合的旋轉(zhuǎn)矩陣。xxyyzznoaR???????故齊次坐標(biāo)變換矩陣可以分解為一個(gè)平移和一個(gè)旋轉(zhuǎn)矩陣之積 即:61-(4)2.4 坐標(biāo)系的建立基于共扼曲面原理和齊次坐標(biāo)變換理論,研究弧面分度凸輪機(jī)構(gòu)的空間嚙合曲面的關(guān)系和幾何參數(shù)間的內(nèi)在聯(lián)系,需要建立合理的坐標(biāo)系。坐標(biāo)系選擇的合理與否,不僅影響所要求的廓面方程的形式,也影響推導(dǎo)求解過(guò)程中的繁簡(jiǎn)程度。如圖(a)所示,建立笛卡爾右手直角坐標(biāo)系。(1)與機(jī)架相連的坐標(biāo)系 ()fXYZ坐標(biāo)系 的原點(diǎn) 與轉(zhuǎn)盤轉(zhuǎn)動(dòng)中心重合,X, 軸沿轉(zhuǎn)盤轉(zhuǎn)動(dòng)中心與凸輪中心連線,Y,1kfO軸與 X,軸組成的平面與轉(zhuǎn)盤的旋轉(zhuǎn)平面平行,Z:軸與轉(zhuǎn)盤的轉(zhuǎn)動(dòng)軸線重合,按右手法則可知 Z,軸垂直紙面向外。(2)與機(jī)架相連的定坐標(biāo)系 ()gYZ坐標(biāo)系 的原點(diǎn) 與凸輪中心重合, 軸和 ,軸重合, 軸與凸輪轉(zhuǎn)動(dòng)軸線重合,2kg gXt gZ選擇 軸的方向時(shí),應(yīng)使面對(duì) 軸的箭頭方向看, 為逆時(shí)針。根據(jù)右手法則,Z 軸垂gZgc?直紙面向內(nèi),與 Y,軸間的夾角為 /2??(3)與凸輪相連的動(dòng)坐標(biāo)系 ()cYZ坐標(biāo)系 的原點(diǎn) 與凸輪中心重合。X 在通過(guò)輪中心壞并垂直于凸輪轉(zhuǎn)動(dòng)軸線的平3kCO面上。Y 軸 Z 軸組成的平面垂直于凸輪的轉(zhuǎn)動(dòng)軸線,Z 軸是凸輪的轉(zhuǎn)動(dòng)軸線, 和 重cZg合且方向一致。(4)一與轉(zhuǎn)盤相連的動(dòng)坐標(biāo)系 ()tYZ坐標(biāo)系 的原點(diǎn) 與轉(zhuǎn)盤中心重合。X 沿滾子的自轉(zhuǎn)軸線,即轉(zhuǎn)盤的徑向線。4kf與 間的夾角為 ,即滾子的位置角,由 量起,逆時(shí)針?lè)较驗(yàn)檎?軸與fOXt ?tOXfY為軸組成的平面為滾子的中心平面,它與轉(zhuǎn)盤的旋轉(zhuǎn)平面平行。 軸即為轉(zhuǎn)盤的轉(zhuǎn)動(dòng)軸fZ線, 和 重合,垂直紙面向外。圖 1 為垂直于 軸的滾子截面示意圖。fZt f7圖 1: 圓錐滾子弧面分度凸輪機(jī)構(gòu)的坐標(biāo)系:從動(dòng)盤中心至滾子近端面的距離;?、 :分別為共軛嚙合點(diǎn)的嚙合角和滾子的長(zhǎng)度參數(shù);?u:圓柱滾子長(zhǎng)度。h2.5 弧面分度凸輪廓面方程求解設(shè)滾子在動(dòng)坐標(biāo)系 中的向量表達(dá)式如下所示()rXYZ式中 為滾子上嚙合點(diǎn)的嚙合角, 為嚙合點(diǎn)在 軸上的坐標(biāo), 為小端滾子半徑,?urZ?為滾子的錐角。 u根據(jù)圖1所建立的弧面凸輪機(jī)構(gòu)的坐標(biāo)系,通過(guò)將滾子柱面在 坐標(biāo)系的向量表()rXYZ達(dá)式轉(zhuǎn)換到( xyz ) c 中,可求得弧面分度凸輪與滾子嚙合傳動(dòng)的共軛嚙合點(diǎn)在 中的()c向量表達(dá)式 ,即弧面分度凸輪的曲面方程如(2) 式所示:mR式(2)中各參數(shù)表示如下:8式中的 和 必須基于嚙合方程進(jìn)行確定,在坐標(biāo)系 中,嚙合方程如下:?u ()fXYZ其中, 表示滾子在共軛嚙合點(diǎn)在坐標(biāo)系 中的單位法向矢量, 表示共軛嚙合kfN()f kmfV點(diǎn)在 中的相對(duì)滑動(dòng)速度。求得單位法向矢量與相對(duì)滑動(dòng)速度如式: ()fXYZ其中 式中: 為從動(dòng)轉(zhuǎn)盤的角速度與弧面分度凸輪角速度之比。't?Unigraphics(簡(jiǎn)稱 UG)是當(dāng)前世界上最先進(jìn)和緊密集成的、面向制造行業(yè)的CAID/CAD/CAE/CAM 高端軟件。它為制造業(yè)產(chǎn)品開(kāi)發(fā)的全過(guò)程提供解決方案,主要功能包括:概念設(shè)計(jì)、工程設(shè)計(jì)、性能分析和制造。此外,UG 軟件還提供了 CAD/CAE/CA業(yè)界最先進(jìn)的編程工具集,以滿足用戶二次開(kāi)發(fā)模塊的開(kāi)發(fā)和應(yīng)用需要。9第三章 UG 二次開(kāi)發(fā)的工具3.1 UG 軟件概述UGnx 建 立 在 為 客 戶 提 供 無(wú) 與 倫 比 的 解 決 方 案 的 成 功 經(jīng) 驗(yàn) 基 礎(chǔ) 之 上 , 這 些 解 決 方 案可 以 全 面 地 改 善 設(shè) 計(jì) 過(guò) 程 的 效 率 , 削 減 成 本 , 并 縮 短 進(jìn) 入 市 場(chǎng) 的 時(shí) 間 。 通 過(guò) 再 一 次 將注 意 力 集 中 于 跨 越 整 個(gè) 產(chǎn) 品 生 命 周 期 的 技 術(shù) 創(chuàng) 新 , NX 的 成 功 已 經(jīng) 得 到 了 充 分 的 證實(shí) 。 NX 是一個(gè)交互的計(jì)算機(jī)輔助設(shè)計(jì)、計(jì)算機(jī)輔助制造和輔助工程(CAD/CAE/CAM)系統(tǒng)。CAD 功能自動(dòng)化是在今天制造公司中見(jiàn)到的一般工程、設(shè)計(jì)和制圖能力;CAM 功能利用 NX 描述完成零件的設(shè)計(jì)模型,為現(xiàn)代機(jī)床提供 NC 編程;CAE 功能橫越一廣范的工程學(xué)科,提供許多的產(chǎn)品、裝配和零件的性能防真能力。NX 是一個(gè)全三維、雙精度系統(tǒng),它允許用戶精確地描述幾乎任一幾何形狀。通過(guò)組合這些形狀,用戶可以設(shè)計(jì)、分析產(chǎn)品和建立他們的工程圖。一但設(shè)計(jì)完成,制造應(yīng)用允許用戶選擇描述零件的幾何體,加入制造信息,如刀具直徑并自動(dòng)生成一刀具位置,源文件(CLSF) ,它可用來(lái)驅(qū)動(dòng)大多數(shù) NC 機(jī)床。目前 UGS 公司已經(jīng)推出 NX5 產(chǎn)品,本次設(shè)計(jì)中使用的是 NX5 版本的軟件。NX5 的特點(diǎn)是:1、為了數(shù)字化產(chǎn)品開(kāi)發(fā)集成的自動(dòng)化;2、在所有開(kāi)發(fā)學(xué)科中的新能力,包括工業(yè)設(shè)計(jì)、防真、工裝、加工和管理;3、在一個(gè)全面的產(chǎn)品生命周期管理(PLM)解決力案內(nèi)的領(lǐng)先前沿的 CAD、CAE 和 CAM 技術(shù)。通過(guò) NX 可以建立、存儲(chǔ)、恢復(fù)和操縱設(shè)計(jì)與制造信息,典型地通過(guò)建立描述一零件的幾何體開(kāi)始工作。NX 功能被劃分成共同功能的一系列“應(yīng)用(Application ) ”共 18 個(gè)模塊,各模塊分別為:1、入口(Gateway):對(duì)所有其他交互應(yīng)用的首要必備的應(yīng)用; 2、建模(Modeling):包括實(shí)體、特征、自由形狀、鈑金特征建模和用戶定義特征;3、裝配(Assembilies):支持裝配建模;4、幾何公差模塊(Geometric Tolerancing Module):讓用戶捕捉公差;5、產(chǎn)品和制造信息(PMI Introduction):可用于在三維環(huán)境中對(duì)產(chǎn)品形成文檔說(shuō)明;6、分析(Analysis):包括注塑模流動(dòng)分析、運(yùn)動(dòng)應(yīng)用和 ICAD;7、制圖(Drafting):可將三維模型生成二維視圖; 8、高質(zhì)量圖像( High Quality Image):生成逼真照片的圖像;9、知識(shí)熔接(Knowledge Fusion):允許用戶應(yīng)用工程知識(shí)驅(qū)動(dòng)規(guī)則和設(shè)計(jì)意圖到 NX 中的幾何模型和裝配;10、制造(Manufacturing):可進(jìn)行虛擬加工和自動(dòng)加工編程;11、開(kāi)放的用戶界面設(shè)計(jì)(Open User Interface Styler):允許用戶和第三方開(kāi)發(fā)商生成 NX 對(duì)話框;12、編程語(yǔ)言(Programming Languages):包括 GRIP 和API;13 、質(zhì)量控制(Quallity Control) ;14、走線( Routing):定義圍繞和通過(guò)其他 NX裝配的裝配;15、鈑金(Sheet Metal):包括鈑金設(shè)計(jì)、沖壓和多零件加工的柵格;16、電子表格(Spreadsheet ):提供一在 Xess 或者電子表格應(yīng)用和 NX 間的智能界面;17、Web Express;18、Wire Harness:可在用于描述產(chǎn)品機(jī)械裝配的同一三維空間建立電氣布線的表示。3.2 UG 二次開(kāi)發(fā)相關(guān)工具概述UG NX 軟件提供了 CAD/CAE/CAM 業(yè)界最先進(jìn)的編程工具集,以滿足用戶二次開(kāi)發(fā)10的需要,這組工具集稱之為 UG/Open,以開(kāi)放性架構(gòu)面向不同的軟件平臺(tái)提供靈活的開(kāi)發(fā)支持。UG/Open 包括以下幾個(gè)部分: UG/Open Menu scrip 開(kāi)發(fā)工具,對(duì) UG 軟件操作界面進(jìn)行用戶化開(kāi)發(fā),無(wú)須編程即可對(duì) UG 標(biāo)準(zhǔn)菜單進(jìn)行添加、重組、剪裁或在 UG 軟件中集成用戶自己的軟件功能;UG/Open UI Styler 開(kāi)發(fā)工具是一個(gè)可視化編輯器,用于創(chuàng)建類似 UG 的交互界面,利用該工具,用戶可為 UG/Open 應(yīng)用程序開(kāi)發(fā)獨(dú)立于硬件平臺(tái)的交互界面;UG/Open API 開(kāi)發(fā)工具提供了 UG 軟件直接編程接口,支持C、C++、Fortran 和 Java 等主要高級(jí)語(yǔ)言;UG/Open GRIP 開(kāi)發(fā)工具是一個(gè)類似 API 的UG 內(nèi)部開(kāi)發(fā)語(yǔ)言,利用該工具用戶可生成 NC 自動(dòng)化或自動(dòng)建模等用戶的特殊應(yīng)用。利用 UG/Open 提供的應(yīng)用程序和開(kāi)發(fā)工具,用戶可以在其提供的平臺(tái)上開(kāi)發(fā)出適合自己需要的 CAD 產(chǎn)品。3.2.1 UG/Open Menu ScriptUG/Open Menu Script 不僅可以使用戶利用 ASCⅡ文件來(lái)編輯 UG 的菜單,也可以以一種無(wú)縫集成的方式為用戶開(kāi)發(fā)的應(yīng)用程序創(chuàng)建菜單。Menu Script 同時(shí)也提供了一個(gè)菜單欄報(bào)告工具,以幫助用戶查看定制的菜單,診斷錯(cuò)誤。對(duì)于菜單的自定義大致可以分為如下三個(gè)層次。(1)自定義菜單該級(jí)別的自定義允許單個(gè)用戶或者管理員重新安排 UG 的功能,去除在其產(chǎn)品開(kāi)發(fā)過(guò)程中不需要的功能。這種級(jí)別的自定義不需要編程實(shí)現(xiàn)。(2)自定義 UG 功能該級(jí)別的自定義允許單個(gè)用戶或者管理員取代或增加標(biāo)準(zhǔn)的 UG 功能,并添加其自己定義的功能。(3)添加自定義應(yīng)用該級(jí)別的自定義其目的在于使用戶或第三方開(kāi)發(fā)商開(kāi)發(fā)的應(yīng)用程序完全集成在 UG中。該級(jí)別的自定義需要編程實(shí)現(xiàn)。UG 的菜單文件是擴(kuò)展名為.men 的文本文件,可以使用 Windows 的記事本進(jìn)行編輯。UG/Open Menu Script 提供了一套用于定義 UG 菜單的腳本語(yǔ)言。實(shí)際上, UG 系統(tǒng)的菜單文件也是用該腳本語(yǔ)言編寫的。UG 為主菜單欄、快捷菜單欄提供了豐富的系統(tǒng)菜單文件,這些菜單文件默認(rèn)情況下都保存在 UGⅡ_BASE_DIR/ugⅡ/menus 文件夾下。3.2.2 UG/Open UI StylerUI Styler 是開(kāi)發(fā) UG 對(duì)話框的可視化工具,生成的對(duì)話框能與 UG 集成,讓用戶更方便、更高效地與 UG 進(jìn)行交互操作。UG/Open UI Styler 模塊提供了強(qiáng)大的制作 UG 風(fēng)格窗口的功能,其主要功能如下:(1) 提供了讓開(kāi)發(fā)人員建造 UG 風(fēng)格對(duì)話框的可視化環(huán)境,并能生成 UG/Open UI Styler 文件和 C 代碼,從而使用戶在使用 UG/Open UI Styler 產(chǎn)生的對(duì)話框時(shí),不必考慮圖形用戶界面(Graphical User Interface 縮寫為 GUI )的實(shí)現(xiàn)。(2) 利用可視化環(huán)境快速生成 UG 風(fēng)格對(duì)話框,從而減少開(kāi)發(fā)時(shí)間。11(3) 通過(guò)選取和放置控件,從而能實(shí)現(xiàn)所見(jiàn)即所得。(4) 可以在對(duì)話框中實(shí)現(xiàn)用戶自定義位圖。(5) 提供了屬性編輯器,從而允許開(kāi)發(fā)人員設(shè)置和修改控件屬性。(6) UI Styelr 產(chǎn)生的對(duì)話框可以在 Menu Script 中被調(diào)用,因此可以實(shí)現(xiàn)在 UG 菜單項(xiàng)上調(diào)用 UI Styler 產(chǎn)生的對(duì)話框,從而將用戶應(yīng)用程序和 UG 軟件完全融合。應(yīng)用 UI Styler 這一工具可以使開(kāi)發(fā)人員方便、快速地設(shè)計(jì)出與 UG 界面風(fēng)格一致的對(duì)話框,避免其他復(fù)雜的編程。而且可以和用其他開(kāi)發(fā)工具開(kāi)發(fā)出的結(jié)果進(jìn)行集成。UG/Open UI Styler 工具和 UG/Open Menu Script 工具一樣,都只具有某一方面的功能:UG/Open UI Styler 用于對(duì)話框的開(kāi)發(fā), UG/Open Menu Script 用于菜單的開(kāi)發(fā)。3.2.3 UG/Open GRIPUG/Open GRIP(Graphics Interactive Programming)是一種專用的圖形交互編程語(yǔ)言。這種語(yǔ)言與 UG 系統(tǒng)集成,實(shí)現(xiàn) UG 下的絕大多數(shù)的操作。GRIP 語(yǔ)言與一般的通用語(yǔ)言一樣,有其自身的語(yǔ)法結(jié)構(gòu),程序結(jié)構(gòu),內(nèi)部函數(shù),以及與其他通用語(yǔ)言程序相互調(diào)用的接口。一個(gè) GRIP 語(yǔ)句是由一個(gè)或幾個(gè) GRIP 命令組成,GRIP 命令是 GRIP 語(yǔ)言的基本組成部分。GRIP 命令有三種表示格式:a)陳述格式。主要用于生成和編輯實(shí)體。b)GPA 符號(hào)格式。GPA 是全局參數(shù)存取(Global Parameter Access)的縮寫,用于訪問(wèn) UG 系統(tǒng)中各種對(duì)象的狀態(tài)和參數(shù)。c)EDA 符號(hào)格式。EDA 是實(shí)體數(shù)據(jù)存取(Entity Data Access)的縮寫,用于訪問(wèn) UG 數(shù)據(jù)庫(kù),能夠訪問(wèn)各種對(duì)象的功能性數(shù)據(jù)。例如在屬性、繪圖和尺寸標(biāo)注以及幾何體等領(lǐng)域與 UG 進(jìn)行交互操作時(shí),其參數(shù)可用 EDA 格式的命令取得。用 GRIP 語(yǔ)言編寫 GRIP 源程序,可以在 windows 的記事本中進(jìn)行,記為*.grs;或者在 GRIP 高級(jí)開(kāi)發(fā)環(huán)境(GRAD-Grip Advanced Development Environment)中編寫。執(zhí)行GRIP 程序必需進(jìn)入 UG 環(huán)境中,運(yùn)行 File—Execute UG/Open—Grip。GRIP 編程語(yǔ)言是面向工程師的語(yǔ)言,具有簡(jiǎn)單、易學(xué)、易用的特點(diǎn),但是所編寫的程序長(zhǎng)、復(fù)雜。要考慮程序的各個(gè)細(xì)節(jié)問(wèn)題。因此,GRIP 語(yǔ)言常用于開(kāi)發(fā)一些規(guī)模比較小的程序,例如,同類零件建模、計(jì)算和分析、數(shù)據(jù)訪問(wèn)等程序。與 GRIP 語(yǔ)言相比較,用API 函數(shù)編程則可實(shí)現(xiàn)功能復(fù)雜的操作。3.2.4 UG/Open API作為 UG NX5.0 與外部應(yīng)用程序之間的接口,UG/Open API 是一系列函數(shù)的集合。通過(guò) UG/Open API 的編程,用戶幾乎能夠?qū)崿F(xiàn)所有的 UG NX5.0 功能。開(kāi)發(fā)人員可以通過(guò)用 C++語(yǔ)言編程來(lái)調(diào)用這些函數(shù),從而實(shí)現(xiàn)用戶的需要。(1) 對(duì) UG part 文件及相應(yīng)模型進(jìn)行操作,包括建立 UG NX5.0 模型、查詢模型對(duì)象、建立并遍歷裝配體,以及創(chuàng)建工程圖等。(2) 在 UG NX5.0 中創(chuàng)建交互式程序界面。(3) 創(chuàng)建并管理用戶定義對(duì)象等。應(yīng)用函數(shù)時(shí)應(yīng)注意所有的 UG/Open API 應(yīng)用必須及時(shí)進(jìn)行初始化和終止,以確保獲12取或者釋放 UG/Open API 的執(zhí)行許可權(quán)限。初始化函數(shù)是 UF_ initialize (),當(dāng)開(kāi)始調(diào)用 UG/Open API 的函數(shù)時(shí)應(yīng)先調(diào)用 UF_ initialize()來(lái)獲取執(zhí)行許可權(quán)限。一般來(lái)說(shuō),我們?cè)谧兞柯暶魍瓿珊?,?1 個(gè)調(diào)用UG/Open API 的函數(shù)就是 UF_ initialize()。終止函數(shù)是 UF_ terminate(),當(dāng)不再調(diào)用 UG/Open API 的函數(shù)時(shí)必須調(diào)用 UF_ terminate()來(lái)釋放執(zhí)行許可。UG/Open API 程序能在兩種不同環(huán)境(依賴于程序的連接方式)下運(yùn)行,即 Internal環(huán)境(也稱為“Internal 開(kāi)發(fā)模式” )和 External 模式。其中 Internal 環(huán)境下的程序只能在UG NX5.0 的界面環(huán)境(session)下運(yùn)行,在運(yùn)行這些程序時(shí)他們被加載到 UG NX5.0 的運(yùn)行空間中(UG NX5.0 分配的內(nèi)存) ;External 模式開(kāi)發(fā)的程序能在操作系統(tǒng)(Windows NT/2000/XP 及 UNIX)下運(yùn)行,不在 UG NX5.0 環(huán)境中或作為 UG NX5.0 的子進(jìn)程運(yùn)行。盡管沒(méi)有圖形顯示,但 UG/Open API 提供了函數(shù)用于打印機(jī)或繪圖儀輸出,也可以輸出為 CGM 文件等其他數(shù)據(jù)文件。3.3 系統(tǒng)菜單的制作UG 軟件為用戶提供了一個(gè)調(diào)用二次開(kāi)發(fā)結(jié)果的交互式接口:User Tools。它的功能是生成彈出式對(duì)話框或工具條,其界面風(fēng)格與 UG 界面風(fēng)格一致。通過(guò)執(zhí)行對(duì)話框或工具條,操作相應(yīng)的控件就可運(yùn)行菜單文件、宏文件、UG/Open GRIP 程序、UG/Open API 程序和其他二次開(kāi)發(fā)文件。通過(guò)編寫對(duì)話框定義文件(*.utd)來(lái)實(shí)現(xiàn) User Tool 工具的功能。編寫文件完成以后,在 UG 中執(zhí)行 Tools—Customize—User Tools—Load.選擇所編寫的*.utd 文件即可彈出需要的對(duì)話框或工具條。*.utd 這個(gè)文件是文本文件,可用 Windows中的記事本進(jìn)行編寫和編輯。一種比較簡(jiǎn)單的實(shí)現(xiàn)方法:拷貝 UG 中的模板文件Usertoo1.utd 到 UG 啟動(dòng)目錄下,然后編輯模板文件,實(shí)現(xiàn)所需要的功能。在以前較早版本中例如 V13,運(yùn)用 User Tools 工具必須編寫兩個(gè)文件:菜單定義文件 (*.utm)和對(duì)話框定義文件(*.utd) ,然后通過(guò)執(zhí)行菜單項(xiàng)彈出相應(yīng)的對(duì)話框或工具條?,F(xiàn)在,較高的 UG 版本已經(jīng)省略產(chǎn)生菜單這一步,操作同上所述。在 UG 界面中應(yīng)用 File— Execute UG/Open 菜單執(zhí)行 UG/Open API 程序或 UG/Open GRIP 程序,操作一次只能執(zhí)行一個(gè)程序,而且必須找到程序所在的路徑。若利用 User Tools 這個(gè)工具,用戶可以將多個(gè) GRIP 或 API 函數(shù)所編寫的程序集成到一個(gè) User Tools 對(duì)話框或者工具條中,一個(gè)程序?qū)?yīng)一個(gè)控件,通過(guò)操作控件來(lái)調(diào)用程序,使用起來(lái)就非常方便。雖然各種菜單的制作方法,在結(jié)構(gòu)、內(nèi)容和開(kāi)發(fā)過(guò)程上有一定的差異,但是在整個(gè)構(gòu)建過(guò)程中有其共性和相同的部分,就是菜單制作之前應(yīng)先設(shè)置系統(tǒng)環(huán)境變量。設(shè)置了系統(tǒng)環(huán)境變量,UG 才能找到開(kāi)發(fā)內(nèi)容所在目錄。系統(tǒng)環(huán)境變量設(shè)置方法有以下兩種:方法一:打開(kāi)$UG_BASE_DIR/ugii 目錄下的 ugii_env.dat 文件(該文件包含Unigraphics 系統(tǒng)的全部環(huán)境變量及系統(tǒng)路徑定義 ),找到下面兩條語(yǔ)句:#UG_VENDOR_DIR=${UGALLIANCE_DIR}/vendor 和#UG_ SITE_DIR= ${UGALLIANCE_DIR}/site。將它們前面的注釋符號(hào)“#”刪除,以使它們起作用。這兩條語(yǔ)句其實(shí)指明了供用戶放置二次開(kāi)發(fā)文件的目錄。在 Unigraphics 初始安裝時(shí),它們不起作用,當(dāng)刪除了“#”號(hào)后, UG/OPEN 才能從這些目錄下得到二次開(kāi)發(fā)的功能擴(kuò)展。這兩個(gè)13目錄的功能和結(jié)構(gòu)是完全相同的,下面都有 startup 和 application 兩個(gè)目錄。其中 startup存放 Unigraphics 啟動(dòng)時(shí)需載入的動(dòng)態(tài)共享庫(kù) (以 ufsta()為入口的.dl1)及菜單腳本文件(.men);application 目錄存放具體的功能擴(kuò)展程序文件(如應(yīng)用模塊的功能擴(kuò)展共享庫(kù)( .dl1)及對(duì)話框資源文件( .dlg))。Unigraphics 下設(shè)置的這兩個(gè)目錄是為不同等級(jí)的開(kāi)發(fā)者提供的,vendor 目錄下放置 Unigraphics 指定的開(kāi)發(fā)商的二次產(chǎn)品,site 目錄下存放其余開(kāi)發(fā)者的產(chǎn)品。因此 vendor 目錄下同類內(nèi)容的文件要比 site 目錄下的優(yōu)先載入。此外,在ugii_env.dat 文件中還有一條語(yǔ)句,是用來(lái)設(shè)置用戶自己二次開(kāi)發(fā)內(nèi)容的目錄:#UG_USER_DIR =${HOME},同樣將其前面的“#”號(hào)刪除,并在其后使用用戶自己的目錄替換${HOME} 。例如,UG_USER_DIR=E:\ugapi ,在此目錄下也必須建立目錄 startup 和application,存放的內(nèi)容和 site 及 vendor 下的 startup、application 一樣,不過(guò)它的優(yōu)先級(jí)更低。方法二:打開(kāi) UG 安裝目錄 UGⅡ_BASE_DIR\ UGⅡ\menus 下的 custom_dirs.dat(用記事本打開(kāi)) ,在文件最后添加開(kāi)發(fā)的文件夾的絕對(duì)路徑。在添加的文件里建立兩個(gè)子目錄:startup 和 application ,分別用來(lái)放置開(kāi)發(fā)的各種文本文件( .men 文件) 、動(dòng)態(tài)庫(kù)文件和對(duì)話框文件。上述兩種方法中第二種方法較簡(jiǎn)單方便,本課題采用第二種方法。打開(kāi) UG 安裝目錄 UGⅡ_BASE_DIR\ UGⅡ\menus 下的 custom_dirs.dat,在文件最后添加開(kāi)發(fā)的文件夾的絕對(duì)路徑 E: \tulun_open。在 E: \tulun_open 文件夾下建立 startup 和 application 兩個(gè)子目錄。本課題只涉及到弧面凸輪的參數(shù)化設(shè)計(jì),因此應(yīng)在一個(gè)主菜單下建立一個(gè)子菜單。在 E:\tulun_open\startup 下建立文件 disign.men,代碼如下:VERSION 120 //版本號(hào)EDIT UG_GATEWAY_MAIN_MENUBAR //編輯 UG 系統(tǒng)剛啟動(dòng)時(shí)菜單BEFORE UG_HELP //定義菜單位于【幫助】菜單前CASCADE_BUTTON DESIGN //定義一級(jí)菜單 ID,為下拉菜單LABEL 二次開(kāi)發(fā) //主菜單標(biāo)題END_OF_BEFORE //結(jié)束 BEFORE 定義MENU DESIGN BUTTON DESIGN_OK //定義二級(jí)菜單 ID LABEL 弧面凸輪 //第一個(gè)子菜單標(biāo)題ACTIONS tulun.dlg //調(diào)用對(duì)話框END_OF_MENU //結(jié)束菜單的定義菜單運(yùn)行效果圖運(yùn)行結(jié)果如圖所示:14第四章 程序設(shè)計(jì)4.1 總體方案設(shè)計(jì)建立好實(shí)體模型后,接下來(lái)就是利用 API 程序?qū)⒛P椭械谋磉_(dá)式的值與對(duì)話框聯(lián)系起來(lái)。程序的功能是針對(duì)部件的設(shè)計(jì)參數(shù),對(duì)設(shè)計(jì)參數(shù)進(jìn)行查詢、修改,根據(jù)新的參數(shù)值更新模型從而實(shí)現(xiàn)設(shè)計(jì)變更。因此,程序?qū)θN齒輪的功能是一樣的,在對(duì)各個(gè)模型編寫程序時(shí)只需要根據(jù)各個(gè)模型的參數(shù)對(duì)程序中所調(diào)用模型參數(shù)做一些修改,其他在程序的編寫思路、程序所用的函數(shù)和結(jié)構(gòu)等都可以相同。要實(shí)現(xiàn)程序針對(duì)某個(gè)模型的設(shè)計(jì)參數(shù)進(jìn)行查詢、修改,主要的程序設(shè)計(jì)思路是先讀取對(duì)話框中的參數(shù),然后把對(duì)話框中的參數(shù)傳遞給模型中的表達(dá)式,改變表達(dá)式中相應(yīng)參數(shù)的值,更新模型。程序運(yùn)行后,就能實(shí)現(xiàn)把設(shè)計(jì)者輸入對(duì)話框的參數(shù)轉(zhuǎn)化成模型尺寸的變化,實(shí)現(xiàn)設(shè)計(jì)目的。但是由于此種參數(shù)化設(shè)計(jì)的方法是建立在模型的基礎(chǔ)上進(jìn)行的,對(duì)話框的設(shè)計(jì)也是針對(duì)某個(gè)實(shí)體模型,編寫程序時(shí)使用的參數(shù)也是針對(duì)具體某一個(gè)模型的。因此,在程序運(yùn)行時(shí)應(yīng)首先檢測(cè)當(dāng)前打開(kāi)的模型是否就是該程序和對(duì)話框所對(duì)應(yīng)的模型,只有打開(kāi)了相對(duì)應(yīng)的模型時(shí)程序才繼續(xù)運(yùn)行,否則退出。另外,為了方便設(shè)計(jì)者使用,讓使用者在打開(kāi)對(duì)話框時(shí)就能直接看到當(dāng)前模型的各個(gè)參數(shù),在調(diào)用對(duì)話框時(shí)應(yīng)首先將當(dāng)前模型中表達(dá)式中的對(duì)應(yīng)參數(shù)讀出,并傳遞給對(duì)話框,顯示在對(duì)話框上。因此,程序設(shè)計(jì)時(shí),首先檢測(cè)當(dāng)前顯示的部件是否為程序?qū)?yīng)的部件文件,接著使用構(gòu)造函數(shù)將模型中的表達(dá)式中的參數(shù)值讀出并傳遞到對(duì)話框上,然后是用戶輸入?yún)?shù)值后讀取參數(shù)并傳遞給模型,更新模型。程序流程如下圖所示:15檢測(cè)是否為與程序相對(duì)應(yīng)部件讀取模型表達(dá)式中參數(shù)值,調(diào)用對(duì)話框讀取對(duì)話框中的數(shù)值將讀取的參數(shù)值傳遞到模型中的表達(dá)式中,更新模型開(kāi)始退出是否圖 4-1 程序設(shè)計(jì)流程圖4.2 對(duì)話框設(shè)計(jì)程序要將對(duì)話框和部件模型聯(lián)系起來(lái),在程序中必然要調(diào)用對(duì)話框,并有相應(yīng)的程序相應(yīng)對(duì)話框中的控件。UG 中建立好對(duì)話框后,保存對(duì)話框時(shí)系統(tǒng)還自動(dòng)生成另外兩個(gè)文件,分別是與對(duì)話框關(guān)聯(lián)的.c 和.h 文件,在編寫程序時(shí)要使用這兩個(gè)文件。因此,在編寫程序前必須先建立對(duì)話框,建立好對(duì)話框后再利用對(duì)話框生成的文件進(jìn)行編程?,F(xiàn)以直齒圓柱齒輪為例,介紹對(duì)話框的建立和程序編寫的過(guò)程。(1)在 UG 中,單擊下拉菜單“應(yīng)用” ——“用戶界面編輯器”,即可進(jìn)入 UI Style 模塊,操作界面如圖 4-2 所示。16圖 4-2 UIStyle 操作界面由圖中我們可以看出,在操作界面中,除下拉菜單和“標(biāo)準(zhǔn)” 工具欄外,該界面主要有:項(xiàng)目工具欄:包括 UI Style 模塊所提供的對(duì)話框控件;編輯的對(duì)話框:可視化顯示正在編輯的對(duì)話框;對(duì)象瀏覽器:在對(duì)象瀏覽器中可以選擇對(duì)話框本身或其中包含的控件,之后在編輯器中對(duì)其資源屬性進(jìn)行編輯;資源編輯器:對(duì)在對(duì)象瀏覽器中被選擇的控件的資源屬性進(jìn)行編輯。在建立對(duì)話框時(shí),我們可以充分利用以上工具。首先,編輯對(duì)話框的屬性。選擇對(duì)象瀏覽器中最頂層的對(duì)話框,就可以在資源編輯器中對(duì)對(duì)話框的屬性進(jìn)行編輯。如圖 4-3 所示:17圖 4-3 編輯對(duì)話框?qū)傩越缑尜Y源編輯器中包括“ 屬性 ”、 “選擇”、和“回叫” 三個(gè)選項(xiàng)卡。 “屬性”選項(xiàng)卡中可編輯對(duì)話框標(biāo)題、提示語(yǔ)、對(duì)話框名、對(duì)話框類型等。根據(jù)需要設(shè)置后如圖 4-3 所示。 “選擇” 選項(xiàng)包括:?jiǎn)⒂茫哼x擇是否希望當(dāng)顯示對(duì)話框的同時(shí)可以對(duì) UG 圖形窗口中的對(duì)象進(jìn)行選擇;類型:設(shè)置在 UG 圖形窗口中選擇對(duì)象的方式是否變化;范圍:用于確定被選對(duì)象所在范圍是否變化。該選項(xiàng)中不需設(shè)置,界面如圖 4-4 所示:18圖 4-4 選擇選項(xiàng)在回調(diào)選項(xiàng)卡中,所有對(duì)話框都可以包含一些基本的回調(diào)函數(shù),主要包括:應(yīng)用、后退、取消、確定、構(gòu)造、毀壞等。根據(jù)程序需要編輯后如圖 4-5 所示:圖 4-5 回叫選項(xiàng)卡編輯好對(duì)話框?qū)傩院?,?yīng)在對(duì)話框中添加相應(yīng)的控件,本課題中只需要輸入齒輪的一些參數(shù),只需添加一定數(shù)量的“實(shí)數(shù)” 控件就可以了。添加好控件后應(yīng)該對(duì)控件的屬性進(jìn)行編輯,其界面如圖 4-6 所示:19圖 4-6 “實(shí)數(shù)” 控件資源編輯器由圖可看出,其中包含:屬性、微調(diào)按鈕、回叫、布局設(shè)置四個(gè)選項(xiàng)卡。屬性選項(xiàng)卡中可以編輯標(biāo)簽、控件名等。在這里只需對(duì)屬性進(jìn)行編輯其余的可保持默認(rèn)狀態(tài)。圖 4-6顯示的就是編輯后的結(jié)果。要注意的是,在資源編輯器中編輯任何一個(gè)選項(xiàng)卡后,都要單擊編輯器底部的“ 應(yīng)用”按鈕,這樣所編輯的內(nèi)容才會(huì)被保存。最后,直齒圓柱齒輪的對(duì)話框如圖 4-7 所示:圖 4-7 對(duì)話框設(shè)計(jì)結(jié)果編輯好對(duì)話框后,將對(duì)話框保存在開(kāi)發(fā)路徑下的 application 文件夾中。204.3 程序設(shè)計(jì)UG/Open API 應(yīng)用程序是利用 UG/Open API,采用 C 語(yǔ)言進(jìn)行程序設(shè)計(jì),使用 C 編譯器和連接器創(chuàng)建的能夠在外部(External)環(huán)境或內(nèi)部(Internal)環(huán)境運(yùn)行的可執(zhí)行程序(文件名后綴為 EXE)或動(dòng)態(tài)連接庫(kù)(文件名后綴為 DLL)形式的程序。對(duì)于不同的操作系統(tǒng)平臺(tái),在編譯和連接生成 UG/Open API 應(yīng)用程序時(shí),編譯選項(xiàng)和所需的系統(tǒng)庫(kù)文件是不同的。要使用 UG/Open API 應(yīng)用程序正常運(yùn)行,必須正確設(shè)置編譯和連接選項(xiàng)。本次設(shè)計(jì)采用 Windows 操作系統(tǒng),Visual C++6.0 集成開(kāi)發(fā)程序來(lái)編程,具體步驟如下:步驟一:檢查目錄 Microsoft Visual Studio\Common\MSDev98\Template 下是否有文件ugopen.awx 及 ugopen.hlp,若有,進(jìn)入步驟二;否則從 UG 安裝目錄下的UG_BASE_DIR/ugopen 下拷貝這兩個(gè)文件到以上目錄中。步驟二:?jiǎn)?dòng) VC++6.0,選擇下拉菜單“文件”—“ 新建”,系統(tǒng)彈出新建對(duì)話框如圖 4-8 所示。在對(duì)話框中選擇“工程” 選項(xiàng)卡,在項(xiàng)目類別中選擇 “Unipraphics NX App Wizsrd V1”。在右側(cè) “位置”中指定位置,在“工程名稱”中輸入工程名稱,如下圖 4-8,最后單擊“確認(rèn)”。圖 4-8 新建對(duì)話框步驟三:在系統(tǒng)彈出的“步驟 1 共 2 步” 對(duì)話框中,可以選擇“internal application”內(nèi)部模式,生成 DLL 文件,也可以選擇 “external application”外部模式,生成 EXE 文件。另外,在產(chǎn)生的原代碼中可以選擇使用“C++” 語(yǔ)言,也可以使用 “C”語(yǔ)言。如果選擇外部模式,完成工程的創(chuàng)建。這里選擇內(nèi)部模式,C++語(yǔ)言,如圖 4-9 所示。單擊“下一步” 。21圖 4-9 步驟 1 對(duì)話框步驟四:在系統(tǒng)彈出的“步驟 2 共 2 步”對(duì)話框中,選擇如何激活和卸載應(yīng)用程序。各復(fù)選框和當(dāng)選框的含義如表 4-1 和表 4-2 所示,這里選擇如圖 4-10 所示各項(xiàng),單擊“ 完成”按鈕完成應(yīng)用程序的創(chuàng)建。表 4-1 應(yīng)用程序的加載選項(xiàng) 含義Automatically(ufsta) 使用 ufsta 函數(shù)作為入口函數(shù),可以在 UG 啟動(dòng)后自動(dòng)加載應(yīng)用程序Explicitly(ufusr) 使用 ufusr 函數(shù)作為入口函數(shù),可以在 UG 環(huán)境下選擇菜單“文件”—“執(zhí)行 ”—“NX 打開(kāi) ”,打開(kāi)“執(zhí)行用戶函數(shù) ”對(duì)話框,選擇應(yīng)用程序進(jìn)行手動(dòng)加載From a User Exit 使用用戶出口函數(shù)作為入口函數(shù),例如使用 ufget 函數(shù),將在 UG 打開(kāi)一個(gè)文件時(shí),激活應(yīng)用程序;使用 ufcre 函數(shù),將在UG 創(chuàng)建一個(gè)部件文件時(shí),激活應(yīng)用程序表 4-2 應(yīng)用程序的卸載選項(xiàng) 含義Automatically, when the Unigraphics session terminates UG 進(jìn)程結(jié)束時(shí)自動(dòng)卸載Automatically, when the application completes 應(yīng)用程序結(jié)束時(shí)自動(dòng)卸載Explicitly, via an unload dialog 應(yīng)用程序手動(dòng)卸載22圖 4-10 步驟二對(duì)話框單擊“完成 ”后,系統(tǒng)彈出一個(gè) “確認(rèn)信息”對(duì)話框,如圖 4-11 所示,列出工程的所有信息,確認(rèn)無(wú)誤后單擊“ 確認(rèn) ”,進(jìn)入編程界面,同時(shí)系統(tǒng)將在指定目錄下創(chuàng)建一個(gè) UG NX5.0開(kāi)發(fā)框架。圖 4-11 確認(rèn)對(duì)話框23步驟五:按快捷鍵 F7,編譯工程,出現(xiàn)編譯成功信息,如圖 4-12 所示。圖 4-12 編譯工程打開(kāi)“File View”選項(xiàng)卡,分別單擊“spur_cams.files” 、 “Source Files”和“Header Files” 前面的“+”,雙擊“spur_ cams.cpp” ,就能看見(jiàn)文件中的內(nèi)容。步驟六:將 UG/Open UI Styler 模塊生成的對(duì)話框文件 spur_cams _template.c 和spur_cams.h 分別重新命名為 spur_cams_dialog.cpp 和 spur_cams _dialog.h,復(fù)制到工程所在的文件夾內(nèi)。在 VC++中選擇菜單“工程” —“增加到工程 ”—“文件” ,將上述兩個(gè)文件加入工程中,結(jié)果如圖 4-13 所示。注意應(yīng)將 spur_cams_dialog.cpp 中頭文件的#include修改為 #include “spur_cams_dialog.h”。圖 4-13 將對(duì)話框文件加入工程效果圖24步驟七:在工程中編寫程序。從前面的程序設(shè)計(jì)思路可知,該程序中主要包括:入口函數(shù)程序、主程序、檢測(cè)部件程序、獲取表達(dá)式程序、傳遞對(duì)話框中數(shù)值程序。入口函數(shù)程序是將菜單中定義的按鈕和程序連接起來(lái),當(dāng)點(diǎn)擊對(duì)應(yīng)的按鈕時(shí)調(diào)用可執(zhí)行程序,調(diào)用程序后執(zhí)行主程序。在主程序中先檢測(cè)部件是否是對(duì)應(yīng)的部件,否時(shí)彈出提示信息,退出;是的話調(diào)用對(duì)話框,執(zhí)行對(duì)話框中的程序,程序運(yùn)行結(jié)束后退出?,F(xiàn)就幾個(gè)主要程序做簡(jiǎn)單介紹。主程序,程序代碼如下:{int resp; //設(shè)置變量int errorCode = UF_initialize(); //程序初始化if ( 0 == errorCode ){if(PRO_DESIGN_check_part()) //調(diào)用部件檢查程序{uc1601("當(dāng)前顯示模型不是弧面凸輪部件,不能進(jìn)行參數(shù)化設(shè)計(jì)",1); return UF_MB_CB_CONTINUE; //不是對(duì)應(yīng)部件時(shí)彈出對(duì)話框提示,并退出}LaunchProDesignDialog( &resp); //調(diào)用對(duì)話框errorCode = UF_terminate();}return UF_MB_CB_CONTINUE;}在主程序中有檢測(cè)部件程序和調(diào)用對(duì)話框程序,調(diào)用對(duì)話框程序是系統(tǒng)自動(dòng)生成的,只需要在上面加上函數(shù)名就可以了,而檢測(cè)部件程序是需要自己編寫的,主要程序代碼如下:變量聲明part_tag=UF_PART_ask_display_part();if(part_tag==NULL_TAG)return 1; //檢測(cè)是否有部件顯示,沒(méi)有部件顯示時(shí)返回 1UF_PART_ask_part_name(part_tag,part_fspec); //查詢部件文件名for(i=0;inum = r+1; for(int m2=0;m2id[m2] = spline1_1[m2];ge1_2->string[m2] = 1;ge1_2->dir[m2] = 1;}/* Use str1_tag as a template curve */ge1_2->id[r+1] = spline1_1[0];ge1_2->string[r+1] = 1;ge1_2->dir[r+1] = 1;/* Create a through curve surface without template */附錄48UF_MODL_create_thru_curves1 (ge1_2, sp1, &patch, &alignment, value, °ree, &status,simple, &body_type, boolean, target_body, tol, c_num, c_face_id, c_flag, c_dir, &surface1_2);/*---------------創(chuàng)建另一側(cè)面-------------------*/UF_MODL_init_string_list(ge2_2);UF_MODL_create_string_list(r+2, 100, ge2_2);ge2_2->num = r+1; for(int n2=0;n2id[n2] = spline2_1[n2];ge2_2->string[n2] = 1;ge2_2->dir[n2] = 1;}/* Use str1_tag as a template curve */ge2_2->id[r+1] = spline2_1[0];ge2_2->string[r+1] = 1;ge2_2->dir[r+1] = 1;/* Create a through curve surface without template */UF_MODL_create_thru_curves1 (ge2_2, sp1, &patch, &alignment, value, °ree, 31&status,simple, &body_type, boolean,target_body, tol, c_num, c_face_id, c_flag, c_dir, &surface2_2); /* Free the list */UF_MODL_free_string_list(ge1_2); UF_MODL_free_string_list(ge2_2); /*--------------------------創(chuàng)建凸輪槽底面----------------------------*/degree = 3;simple=2;UF_MODL_init_string_list(ge3_2);UF_MODL_create_string_list(10, 100, ge3_2);ge3_2->num = 9; ge3_2->id[0] = spline1_1[r];ge3_2->string[0] = 1;ge3_2->dir[0] = 1;ge3_2->id[1] = spline6_1[1];ge3_2->string[1] = 1;ge3_2->dir[1] = 1;附錄48ge3_2->id[2] = spline4_1[1];ge3_2->string[2] = 1;ge3_2->dir[2] = 1;ge3_2->id[3] = spline7_1[1];ge3_2->string[3] = 1;ge3_2->dir[3] = 1;ge3_2->id[4] = spline3_1[1];ge3_2->string[4] = 1;ge3_2->dir[4] = 1;ge3_2->id[5] = spline8_1[1];ge3_2->string[5] = 1;ge3_2->dir[5] = 1;ge3_2->id[6] = spline5_1[1];ge3_2->string[6] = 1;ge3_2->dir[6] = 1;ge3_2->id[7] = spline9_1[1];ge3_2->string[7] = 1;ge3_2->dir[7] = 1;ge3_2->id[8] = spline2_1[r];31ge3_2->string[8] = 1;ge3_2->dir[8] = 1;/* Use str1_tag as a template curve */ge3_2->id[9] = spline1_1[r];ge3_2->string[9] = 1;ge3_2->dir[9] = 1;/* Create a through c
收藏