CATIA CAA 二次開發(fā)詳細(xì)教程 (3):添加Addin(菜單、對話框)_第1頁
CATIA CAA 二次開發(fā)詳細(xì)教程 (3):添加Addin(菜單、對話框)_第2頁
CATIA CAA 二次開發(fā)詳細(xì)教程 (3):添加Addin(菜單、對話框)_第3頁
CATIA CAA 二次開發(fā)詳細(xì)教程 (3):添加Addin(菜單、對話框)_第4頁
CATIA CAA 二次開發(fā)詳細(xì)教程 (3):添加Addin(菜單、對話框)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 CATIACAA二次開發(fā)第三講:添加Addin(菜單、對話框)下面簡單介紹addin的制作:所謂Addin,是在系統(tǒng)已有的Workbench中插入新的工具條或者菜單。下面的例子,我們來在PartDesign中插入一個(gè)工具條。1、新建一個(gè)module命名為PartAddin,并將它設(shè)為active。2、做接口CATIPrtWksAddin的implemention,insert-component,彈出對話框如圖,輸入addin的名字,點(diǎn)擊add再點(diǎn)擊瀏覽選擇要執(zhí)行的接口,如圖。要選擇的接口為CATIPrtWksAddin注意Searchworkspace為你的CATIA安裝路徑,并將下面的單

2、選框設(shè)為空。點(diǎn)ok完成。文件相應(yīng)的試圖如下:Availableinterfacesr:+itct紂偽匕7E2SJRefreshlist廠SturchinprsrsquisitsframaworksflalyjMcatiaVEUInterface(e)toStirchworkspace:CATIPrLT電chfigsSUFictoryCATIPrLT電chR電sThr色adCATIFftTedKRtsToProp述也七Hol直CATIPrtTecKResToPropagateThreadUnFvtThi心CATifrthreadCATI?rtThreadableCATIFrtThrw曲tsad#

3、dCTIF)ri,TPternCMIFrtTrimFactoryCATIFrt.iJI5hapeUtilitiesCATIFrtVarEdgeRibbonCATIFitVariableEdgeFillatiCATIPtksAddinCATIPrtWkEConfigurationCATIPrtWorkbenchServicesCATlFSCaordinateSyEtemCTIFSIxtteroperabilityCATIFpAppClassNavi爭teObjectCATIFspAppLifeCycleQbjectCATIFspEventSubscriberCATIFsuMinorNode)FS

4、e嗣itViewIpsertCAAV5Workspace密ojtPartAdd園PartAddin.mfilesPartDesignAddin.mfilestSsrc自NewAddin.cpp宣NewAddin.hiHImakefile.mk*lTestWb.mfiles二AllclassmembersLocalInterfaces.ProductLine-MkroioftVliualC+-C:VtrcN3、此時(shí)建立了一個(gè)空的Addin。在yourframe.dico文件中可以看到這個(gè)Addin的聲明:NewAddin?CATIPrtWksAddin?libPartDesignAddin但是,

5、要?jiǎng)?chuàng)建一個(gè)工具條,我們還需要在這個(gè)類:NewAddin中添加一些函數(shù)。在NewAddin類中添加兩個(gè)Public函數(shù)聲明:voidCreateCommands();CATCmdContainer*CreateToolbars();在NewAddin.cpp中添加宏定義:#includeCATCommandHeader.h?MacDeclareHeader(PartCmdHeader);這兩個(gè)函數(shù)及宏都可以按ctrl+F1查到,CreateCommands里面的代碼只是用MacDeclareHeader生成的PartCmdHeader定義命令的header(不知道怎么翻譯,就是工具條或菜單里面可

6、以看到的執(zhí)行命令的按鈕了,這個(gè)命令是連接界面命令和實(shí)現(xiàn)代碼的橋梁。)如:?newPartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void*)NULL);newPartCmdHeader(line,CmdModule,LinCmd,(void*)NULL);第一個(gè)參數(shù)是按鈕的名字,第二、三個(gè)代表按鈕執(zhí)行的命令所在的module和命令的名字,參數(shù)四缺省就行了。CreateToolbars里面就是要建的工具條和菜單的主要內(nèi)容:NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);NewAccess(CAT

7、CmdStarter,pPointCmd,PointCmd);SetAccessCommand(pPointCmd,point);SetAccessChild(pPartBenchTlb,pPointCmd);NewAccess(CATCmdStarter,pLineCmd,LineCmd);SetAccessCommand(pLineCmd,line);SetAccessNext(pPointCmd,pLineCmd);這三個(gè)函數(shù)都可以查到,NewAccess肯定是新建了,常用的類有CATCmdWorkbench(TheworkbenchsaccessisaCATCmdContainerwh

8、ichcontainscontainers:oneforitsmenubarandoneforeachtoolbar.)、CATCmdContaine(rClasstocreatethecontainersaccesslikeamenubar,amenu,asubmenu,atoolbaroraniconbox)、CATCmdStarter、(Astarterisaleafoftheworkshopsaccessestree.AteachstarteryouattachaCATCommandHeadertolaunchtheassociatedcommand.)NewAccess,SetAcc

9、essCommand,SetAccessChild,SetAccessNext等幾個(gè)命令的使用。其具體含義可以參看API文檔的說明。(SetAccessCommand就是將starter與上面的PartCmdHeader建立的東西連接了,注意參數(shù)“l(fā)ine”)其他的顧名就可思義。4、此時(shí)編譯,發(fā)生幾個(gè)連接錯(cuò)誤。主要是CATCmdContainer類型及Newaccess的定義的頭文件及其Module的添加。在.h文件中加上:#includeCATCmdContainer.h在.cpp中加入:#includeCATCmdContainer.h#includeCATCreateWorkshop.h

10、在.mk文件中加入:WIZARD_LINK_MODULES=?JS0FMJS0GROUPPrtWorkshopMechanicalModelerUIUUIDCATApplicationFrame#ENDWIZARDEDITIONZONELINK_WITH=$(WIZARD_LINK_MODULES)?CATApplicationFrame在Identitycard.h中加入:AddPrereqComponent(ConstraintModelerUI,Protected);注意:每次換行時(shí),都要加一斜線用來繼續(xù)執(zhí)行下面的module.到此addin就做成了。剩下的就是定義資源文件,也就是換換名

11、字或給按鈕連接個(gè)圖片。和前面的workbench一樣工具條名字在“NewAddin.CATNIS”中進(jìn)行定義:PartBenchTlb.Title=”測試工具條”;在NewAddin.CATRsc定義圖片。NewAddin.point.Icon.Normal=“I_CAAPoint”;(圖片一般放在cnext/resourcegraphicIconNormal文件加下,NewAddin.CATRsc文件可能不會(huì)自動(dòng)生成,你可以在相應(yīng)的文件加下新建一個(gè)問本文檔,把后綴改成CATRsc再在VC里刷新你的工程就有了)。下面簡單介紹一下命令的響應(yīng),首先就是前面提到的newPartCmdHeader(“

12、point”,“CmdModule”,“TestCmd”,(void*)NULL);你做的命令所在的模塊和命令名一定要和上面的名字對應(yīng)。新建一個(gè)名為CmdModule的Module。將此Module設(shè)為當(dāng)前的Project,選擇“Insert?“CATIAResource?“Command,插入一個(gè)名位TestCmd的Command:Dialog的插入將CmdModule設(shè)為當(dāng)前Project,選擇“Insert?“CATIAResource?“Dialog”,并將其名字設(shè)為TestDialog。然后在TestDialog.CATDlg中添加控件,這里的控件與一般VC程序差不多,不再詳述。添加

13、三個(gè)回調(diào)函數(shù)。在Command(TestCmd.cpp)的BuildGraph()函數(shù)或者其構(gòu)造函數(shù)中添加代碼:TestDialog*pi=newTestDialog();pi-Build();pi-SetVisibility(CATDlgShow);注意先加其頭文件:#includeTestDialog.h在TestDialog.cpp的Build()函數(shù)中添加在三個(gè)回調(diào)函數(shù)中加入RequestDelayedDestruction();此語句功能為執(zhí)行Dialog的析構(gòu)函數(shù)。編譯(MKMK),更新(Create/Updateruntimevirw),運(yùn)行tools-openruntimewindow輸入cnext。去partdesign里找你的工具調(diào)就行了。補(bǔ)充:在自己做的wor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論