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