版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章UG/OpenAPI它是UG/Open二次開(kāi)發(fā)軟件包的一個(gè)重要組成部分。UG/Open主要包括:GRIPAPI其中API的包含了約2000個(gè)C函數(shù),分別用來(lái)實(shí)現(xiàn)大部分的UG操作,通過(guò)調(diào)CUG的各種實(shí)體對(duì)象(part文件、點(diǎn)、線、面、實(shí)體、特征、坐標(biāo)系、表達(dá)式等UG行為等。CAD軟件系統(tǒng)中,UG的開(kāi)放性能是比較好的,絕大多數(shù)用戶(hù)通過(guò)交互方式在UG系統(tǒng)中實(shí)現(xiàn)的功能,都可以通過(guò)UG/OpenAPI來(lái)編程實(shí)現(xiàn)。NX二次開(kāi)發(fā)的讀者或者是已經(jīng)具有開(kāi)發(fā)經(jīng)驗(yàn)的讀者,NX/OpenAPI的幫助都是有用的助手。API的幫助可以通過(guò)如下幾種方式打開(kāi)。在瀏覽器中直接打開(kāi):在瀏覽器地址欄中輸入“C:\ProgramFiles\UGS\NX3.0\UGDOC\hm_fesanbrar.h是NX3的安裝路徑)注:由于幫助庫(kù)是以網(wǎng)頁(yè)的形式展現(xiàn),其中包括了一個(gè)顯示幫助資料的控件,此控件有可能會(huì)被瀏覽器,請(qǐng)讀者手動(dòng)允許運(yùn)行此控件。否則看不到結(jié)構(gòu),也就無(wú)法使NX3的幫助庫(kù)(NX3HelpLibrary,NXOpen是其中的一個(gè)重要組成部分。在NXOpen中,有兩個(gè)部分與本書(shū)讀者有關(guān)。OpenCProgrammer'sGuideNXOpen編程時(shí)需要掌握的OpenCReferenceGuideAPI的詳細(xì)使用說(shuō)明。包括數(shù)據(jù)結(jié)構(gòu)NXOpenAPI編程時(shí)必3-1NXOpenAPI助界NXOpenAPI幫助系統(tǒng)的左邊,按照類(lèi)型對(duì)函數(shù)進(jìn)行了分類(lèi)。用戶(hù)在查找函數(shù)介紹uf_csys:度量單位和坐標(biāo)系的uf_defsuf_disp:與顯示有關(guān)的的uf_view:與視圖和視圖操作相關(guān)的uf_wave:與WAVE相關(guān)的API;可以管理的特征和延遲的更新說(shuō)明中涉及到的各種數(shù)據(jù)類(lèi)型,包括枚舉、結(jié)構(gòu)體等;functions中包括了函數(shù)的名字、說(shuō)UGUGOpenAPI函數(shù),有兩搜索工具,如圖3-1所示。早期UF采用標(biāo)C開(kāi)發(fā)語(yǔ)言,其APIC的接口形式提供調(diào)用。在NX的后期UFAPI被封裝到了類(lèi)中,以類(lèi)的方法的形式體現(xiàn),編程調(diào)用時(shí)也要采用C++的語(yǔ)法來(lái)書(shū)寫(xiě)。內(nèi)部和外部UFUFUGC程序一樣必須通過(guò)編輯形成動(dòng)態(tài)鏈內(nèi)部UF兩種形式。(*.EXE作系統(tǒng)直接執(zhí)行,不需要啟動(dòng)UGGateway(主界面。它具體應(yīng)用在VisualC++或C++Builder的*.EXEUFUG功能。它的優(yōu)點(diǎn)是不必啟動(dòng)UG,屬于運(yùn)行,這樣可以節(jié)約運(yùn)行時(shí)間,其缺點(diǎn)在于它不能和UGGateway發(fā)生所以一般多用于Part文件大量創(chuàng)建、存取和管理或控制出圖,而不適用于用戶(hù)交互性的幾內(nèi)部UF是以動(dòng)態(tài)庫(kù)(*.DLL)的形式創(chuàng)建并編譯的。和外部UF不同,它必須啟UGGateway才能被運(yùn)行。UGUFUG后,點(diǎn)擊菜fusr另一種則是從用戶(hù)創(chuàng)建的菜單中(Script)調(diào)出用戶(hù)定制的界面(UIStyler)來(lái)運(yùn)行(程序點(diǎn):ufsta。內(nèi)部UF的優(yōu)點(diǎn)是能處理UG的UI對(duì)象接口,實(shí)現(xiàn)和UG界面的UGUG的客戶(hù)窗口中得到動(dòng)所有的UF函數(shù)都可用于內(nèi)部UF方式,但不一定能用于外部UF方式,在幫助文件中UFUFInternal(內(nèi)部)External(外部)的說(shuō)明。UserExitUserExit是UF中的一個(gè)重要概念。UG運(yùn)行中的某些特定的地點(diǎn)存在著特定的,能讓用戶(hù)自己編寫(xiě)的內(nèi)部UF程序在UG運(yùn)行到特定點(diǎn)時(shí)被自動(dòng)執(zhí)行,不同的有不同UGUserExit是ufsta(,手動(dòng)執(zhí)行用戶(hù)程序【文件】→【執(zhí)行】→【NX打開(kāi)】)UserExitufusr(),在用戶(hù)新Part時(shí)的ufer(ufusr由【文件】→【執(zhí)行】→【NX打開(kāi)】調(diào)用動(dòng)態(tài)庫(kù)(*.DLL)執(zhí)行,它沒(méi)有UIStyler在起止點(diǎn)間順序運(yùn)行。UGufusr(),若找到,則從此函數(shù)ufusr為VisualC++6.0,點(diǎn)擊菜單【File】→【New...】,創(chuàng)建一個(gè)新的工程。因?yàn)槲覀円⒁粋€(gè)內(nèi)部UF程序,所以選擇“Win32Dynamic-LinkLibrary”。為工程起一個(gè)名字CPP文件和頭文件。然后點(diǎn)擊【Finish】按鈕,完成工程的創(chuàng)選選擇保存位選擇動(dòng)態(tài)庫(kù)類(lèi)型的工輸入工程3-2建工3-3擇簡(jiǎn)單首先添加庫(kù),這些庫(kù)是調(diào)用UF函數(shù)的代碼在時(shí)必須的。在VC6中點(diǎn)【Project】→【Settings】→【Link】,在Outputfilename文本框中填入最終編譯成的需要添加的庫(kù)包括:libufun.lib、libugopenint.liblibvmathpp.lib,如圖3-4所示。設(shè)定編譯和時(shí)頭文件和庫(kù)文件的查找。在VC6中點(diǎn)擊【Tools】→【Options在Options框中分別為包含文件(IncludeFile)和庫(kù)文件(LibraryFile)設(shè)置查找,是UGNX的安裝路徑。如圖3-5所示。3-5置查在VC6開(kāi)發(fā)環(huán)境中,進(jìn)入文件視圖,雙擊編輯文件CreateBlock.cpp。此文件中有一個(gè)已voidufusr(char*param,int*retcode,int{if(!UF_CALL(UF_initialize()))//{UF_CALL(UF_terminate());//釋放二次開(kāi)發(fā)}{}}
二次開(kāi)發(fā)的功能也需要才能執(zhí)行,而且也是浮動(dòng),即控制同時(shí)的用戶(hù)數(shù)。如果沒(méi)有獲取二次開(kāi)發(fā)執(zhí)行,則UF不能正常工作。如果獲取成功則0,若不成功則返回錯(cuò)誤號(hào)。int{ }當(dāng)當(dāng)DLL文件時(shí),UG無(wú)須關(guān)閉重啟動(dòng)就可調(diào)用此新的*.DLL文件。到打開(kāi)此動(dòng)態(tài)庫(kù)的UG會(huì)話結(jié)束時(shí)才卸除。UF_UNLOADSE_DALOG:通過(guò)一個(gè)卸載選擇框來(lái)進(jìn)行卸載操作。UGf_ugoenn.hstaticvoid{/*用戶(hù)在此編寫(xiě)自己的UF程序*/UF_FEATURE_SIGNsignUF_NULLSIGN;doubleblock_orig[3]={0.0,0.0,0.0};char*block_len[3]={"1","2","3"};tag_tblk_obj;UF_CALL(UF_MODL_create_block1(sign,block_orig,block_len,}此函數(shù)是實(shí)際上進(jìn)行造型操作的工作函數(shù),注意到此函數(shù)是在UFufusr()中被布爾操作類(lèi)型,在UF中已經(jīng)預(yù)定義好,是一個(gè)枚舉類(lèi)型。常用的可選值包括:UF_NULLSIGNUF_POSITIVEUF_NEGATIVEUF_UNSIGNEDblock_orig定義了一個(gè)浮點(diǎn)型一維數(shù)組,了長(zhǎng)方體的原點(diǎn)坐標(biāo)。block_len定義了#defineUF_CALL(X) FILE LINE,#X,staticintreport(char*file,intline,char*call,int{if{ printf("%s,line%d:%s\n",file,line,call);(UF_get_fail_message(irc,msg))?printf("returneda%d\n",irc):printf("returnederror%d:%s\n",irc,msg);}}#include"ufh"#include"uf_uih" 在VC中,編譯和此工程,若沒(méi)有錯(cuò)誤,則系統(tǒng)會(huì)提示生成了動(dòng)態(tài)庫(kù)文件 打開(kāi)UG,新建一個(gè)part文件【文輸入文件名。進(jìn)入建模模塊【應(yīng)用→【建。然后選擇執(zhí)行UF程序【文件】→【執(zhí)行】→【NX打開(kāi)】,或者Ctrl+U),在彈中的函數(shù),在UG建模工作區(qū)中生成一個(gè)長(zhǎng)方體。如圖3-6所示。3-6序生成的長(zhǎng)方ufsta與ufusr不同,ufusta沒(méi)有明顯的執(zhí)行過(guò)程,它用UG中UIStyler模塊所定制的界面來(lái)實(shí)現(xiàn)面向?qū)ο蟆⒔换ナ降牟僮鬟^(guò)程,整個(gè)程序除回調(diào)函數(shù)的過(guò)程外,都是純創(chuàng)建應(yīng)用程序部署結(jié)構(gòu)首先創(chuàng)建一個(gè)工作,本程序所開(kāi)發(fā)的菜單文件、框文件、動(dòng)態(tài)庫(kù)文件等都會(huì)被部署到此或其子中。例如創(chuàng)建工作為“d:\CreateBlock”,在其中分別創(chuàng)建兩個(gè)子,“d:\CreateBlock\startup”和“dCreateBlock\application”。其中“startup”目錄中用來(lái)存放菜單文件(*.men)和動(dòng)態(tài)庫(kù)文件(*.dll),“application”中存放框文件在上一步創(chuàng)建的“startup”下創(chuàng)建一個(gè)菜單文件(CreateBlock.men,名字可以自己定義,擴(kuò)展名必須是men。使用純文本編輯軟件(例如NotePadUltraEdit等)打開(kāi)此文件,輸入菜單定義,如代碼示例3-6所示。VERSION BUTTONBUTTON_CreateBlock 創(chuàng)建一個(gè)BlockACTIONSCreateBlock.dlg在幫助菜單后面添加了一個(gè)用戶(hù)自定義頂級(jí)菜單,其標(biāo)識(shí)符為“_CreateBlock”,顯示名字為“CreateBlock”。Windows環(huán)境下,假定用戶(hù)的工作為“d:\CreateBlock”,在控制面板下的系統(tǒng)中的環(huán)境框中,設(shè)置用戶(hù)變量“UGII_USER_DIR”(若沒(méi)有則添加一個(gè))為“d:\CreateBlock”,確定即可。見(jiàn)圖3-7。3-7置系統(tǒng)環(huán)境變UGUG下ugii_env.dat文件中找到兩行文本如下所示:UGIISITEDIR=${UGALLIANCEDIR}\site置二次開(kāi)件的。在UG初始安裝時(shí),它們不起作用,當(dāng)刪掉“#”號(hào)后,UG/Open才能從這些下得到二次開(kāi)發(fā)的功能擴(kuò)充。這兩個(gè)的功能和結(jié)構(gòu)是完全相同的,都有startupapplication這兩個(gè)。UG設(shè)的這兩個(gè)sitevendor,是為了供給不同等級(jí)的開(kāi)發(fā)者使用,vendorUGsite下則存放其余開(kāi)發(fā)者的產(chǎn)品,因此vendor下同類(lèi)內(nèi)容的文件要比site下的優(yōu)先載入。此行數(shù)據(jù)用來(lái)設(shè)置存放用戶(hù)自己二次開(kāi)發(fā)內(nèi)容的,同樣將其前面的“#”號(hào)刪除,并且在其后面添上用戶(hù)的,例如“UGII_USER_DIRd:\CreateBlock”,在此下也startupapplicationsitevendorstartupapplication一樣,設(shè)置完環(huán)境變量之后,啟動(dòng)UGNX3,則會(huì)看到系統(tǒng)的幫助菜單已經(jīng)了,增加了3-8單定制效Styler(,此模塊可以支持二次開(kāi)發(fā)用戶(hù)以“所見(jiàn)即所得”的圖形化操作方式來(lái)制作圖3-9初始圖中的界面中包含了3個(gè)框,最左邊的是用戶(hù)設(shè)計(jì)的框,右上方是對(duì)界面元單擊選中界面元素的列表框(右上方框)中第一個(gè)對(duì)象(對(duì)象識(shí)別號(hào):CHANGE,戶(hù)設(shè)計(jì)的框中增加一個(gè)按鈕。在界面元素的列表框(右上方框)中選中此按鈕(對(duì)象識(shí)別號(hào):CHANGE_ACTION_0然后在界面元素的屬性框(右下方框)后的框如圖3-10所示。圖3-10定制后的 和2個(gè)靜態(tài)變量定義到“CreateBlock.cpp”文件中,如代碼示例3-8所示。#defineCHANGE_CB_COUNT(2+1)/*Add1fortheterminatorstaticUF_STYLER_callback_info_tCHANGE_cbs[CHANGE_CB_COUNT]{{UF_STYLER_DIALOG_INDEX,UF_STYLER_APPLY_CB,0,{CHANGE_ACTION_0,UF_STYLER_ACTIVATE_CB,0,{"CreateBlock.dlg", {NULL,NULL,NULL,0}/*ThisisaNULLterminatedlist的調(diào)用語(yǔ)句。如代碼示例3-9所示:externvoidufsta(char*param,int*retcode,int{intif((UF_initialize())!=0)if((error_code=UF_MB_add_styler_actions(actions))!=0{charfail_message[133];printf("%s\n",fail_message);}}intCHANGE_apply_cb(intvoid*_data,{/*MakesureUserFunctionisavailable.*/if(UF_initialize()!=0)/*----Enteryourcallbackcode /*Callbackacknowledged,donotterminate /*AreturnvalueofUF_UI_CB_EXIT_DIALOGwillnotbe /*forthiscallbacktype.Youmustrespondtoyourapplybutton.*/return(UF_UI_CB_CONTINUE_DIALOG);}intCHANGE_action_0_act_cb(intvoid* {/*MakesureUserFunctionisavailable.*/if(UF_initialize()!=0)/*----Enteryourcallbackcode UF_terminate/*Callbackacknowledged,donotterminatedialog*/return(UF_UI_CB_CONTINUE_DIALOG);/*orCallbackacknowledged,terminate }將“CreateBlock_temte.c”中的頭文件到“CreateBlock.cpp”文件中。如代碼3-10所示。#include<stdioh>#include<ufh>#include<uf_defsh>#include<uf_exith>#include<uf_uih>#include<uf_mbh>#include<CreateBlock貝到“startup”下。圖3-6所示。UGAPI的幫助中,每一個(gè)函數(shù)都有一個(gè)說(shuō)明是否適合內(nèi)部模式或者外部模式,大部分UF函數(shù)都可以運(yùn)行在外部模式。下面以一個(gè)例子來(lái)說(shuō)明如何編寫(xiě)UF外部程序。此例子在磁盤(pán)上新創(chuàng)建一prt文件,prtprt文件。在上述這些操作進(jìn)行規(guī)程中,不需要任何人工交互,用戶(hù)也看不到UG程序界面。VC中創(chuàng)建一個(gè)win32控制臺(tái)應(yīng)用程序(win32consoleapplication,名字為“CreateBlockExt”,保存位置為“d:\”,選擇類(lèi)型為“asimpleapplication”。3.2.2節(jié)中的第(2)UG的動(dòng)態(tài)運(yùn)行,即“C:\ProgramFiles\UGS\NX3.0\UGII3-11所示。3-11置輸出位staticvoid{intscope0;//只關(guān)閉當(dāng)前文件,不涉及子裝配intmode=1;// doublecorner_pt0.0,0.0,0.0};//立方體原點(diǎn)坐標(biāo)tag_tblock_tag;tag_t/*創(chuàng)建一個(gè)新的prt文件*//*在prt文件中創(chuàng)建一個(gè)立方體*//*保存此prt文件*//*關(guān)閉此prt文件*/}intmain(intargc,char*{
if{}return}了一個(gè)各邊長(zhǎng)為1,原點(diǎn)位于(0,0,0)的立方體。part;生成一個(gè)新的part文件,并把它作為工作文件。point;件中加以,如“#include<uf_part.h>”,“#include<uf_curve.h>”等。UGUF中會(huì)逐漸放棄UG的函數(shù)時(shí)盡量避免使用它們,以保證開(kāi)發(fā)的程序有UFCC的結(jié)構(gòu)、枚舉、指針和預(yù)定義常數(shù)UF中擁有大量的特定數(shù)據(jù)結(jié)構(gòu),一般從后綴上已經(jīng)對(duì)它們的類(lèi)型進(jìn)行了明確的 最常用的UF數(shù)據(jù)類(lèi)型包括:Expression等。它的定義如代碼示例3-13所示。typedefunsignedinttag_t,中有一個(gè)特殊的Tag(“NULL_TAG”)是用來(lái)表示暫時(shí)不標(biāo)識(shí)任何對(duì)象的Tag,相當(dāng)于初值為零typedefstructuf_list_sstruct{ eid /*ObjectIDstruct /*PointertothenextOIDinthelist00則表示函數(shù)執(zhí)行失敗,此非零的返回值就是錯(cuò)誤號(hào)。讀者在使用UF進(jìn)行編程時(shí)應(yīng)注意檢查每一個(gè)UF調(diào)用的返回值,若非零則Object、BodyFeature使用UF中的函數(shù)時(shí)需要用到這些類(lèi)型,因此有必要分清它們的概念及范圍。UG實(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教研成果成果轉(zhuǎn)化
- 裝修設(shè)計(jì)師的工作總結(jié)
- 房地產(chǎn)行業(yè)設(shè)計(jì)師工作總結(jié)
- 2024年爬山安全教案
- 2024年計(jì)算機(jī)應(yīng)屆生簡(jiǎn)歷
- 農(nóng)田租賃協(xié)議書(shū)(2篇)
- 2024年苯噻草胺項(xiàng)目營(yíng)銷(xiāo)方案
- 《贛州市國(guó)家稅務(wù)局》課件
- 烏魯木齊市實(shí)驗(yàn)學(xué)校2023-2024學(xué)年高三上學(xué)期1月月考政治試題(解析版)
- 甘肅省部分學(xué)校2025屆高三上學(xué)期第一次聯(lián)考(期末)歷史試卷(含答案解析)
- 《蘇寧電器的內(nèi)部控制與評(píng)價(jià)研究》18000字(論文)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專(zhuān)業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之12:“6策劃-6.1應(yīng)對(duì)風(fēng)險(xiǎn)和機(jī)遇的措施”(雷澤佳編制-2025B0)
- 《IT企業(yè)介紹》課件
- 2024年研究生考試考研思想政治理論(101)試卷及解答參考
- 年終獎(jiǎng)發(fā)放通知范文
- 油田員工勞動(dòng)合同范例
- Unit 5 Music Listening and Talking 說(shuō)課稿-2023-2024學(xué)年高一英語(yǔ)人教版(2019)必修第二冊(cè)
- 車(chē)間主任個(gè)人年終總結(jié)
- 2024年甘肅省公務(wù)員錄用考試《行測(cè)》試題及答案解析
- 消防工程技術(shù)專(zhuān)業(yè)畢業(yè)實(shí)習(xí)報(bào)告范文
- 2024年高等教育法學(xué)類(lèi)自考-00229證據(jù)法學(xué)考試近5年真題附答案
評(píng)論
0/150
提交評(píng)論