久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区

您的位置:網站首頁 > CAD新聞

基于CATIA的界面二次開發方法與實例

時間:2011-02-25 10:06:13 來源:

  一、引言

  CATIA(Computer Aided Three & Two Dimensional Interaction Application System,計算機輔助三維/二維交互式應用系統)V5是IBM/DS基于Windows核心開發的高端CAD/CAM軟件系統。目前CATIA最新的版本為V5R14。CATIA系統如今已經發展為集成化的CAD/CAE/CAM系統,它具有統一的用戶界面、數據管理以及兼容的數據庫和應用程序接口,并擁有20多個獨立的模塊。

  在國內,CATIA應用CAA 組件應用架構進行二次開發剛剛開始不久,相對人員比較少,資料不多,由于CATIA軟件功能的強大以及CAA二次開發功能的強大,探索和實現基于CATIA的二次開發技術具有很好的應用價值。

  二、CATIA的二次開發方式

  作為強大的工程軟件,CATIA具有很強的開放性能。用戶可以按照自己的需要,采用不同方式進行各種程度上的開發。

  CATIA二次開發接口是通過兩種方式與外部程序通信:進程內應用程序(In-process Application)方式和進程外應用程序(Out-Process Application)方式。進程內應用程序方式下,CATIA軟件與腳本運行在同一進程地址空間,比如宏方式(Macro)。在CATIA環境下通過菜單記錄宏(Record Macro),宏記錄后,生成VB腳本(Visual Basic Script)序列,當宏開始運行,CATIA就處于非激活狀態,因此不能宏調用之間存儲變量的值,這種方式比較簡單,在CATIA環境就中可完成。進程外應用程序方式下,CATIA與外部應用程序在不同進程地址空間運行。在CATIA運行的情況下,外部進程可以通過接口駕馭CATIA,創建、修改CATIA環境和幾何形體的數據、尺寸等,同時支持對象連接與嵌入(OLE,Object Linking and Enbedding)。

  具體來說,CATIA的二次開發主要有兩種方法:使用宏對CATIA進行二次開發和使用組件應用架構(CAA–RADE)對CATIA進行二次開發。

  1、 使用宏(Macro)對CATIA進行二次開發。

  可以用于自動化(Automation)組件,使用VBScript作為編輯工具,這是一種交互方式的定制。可以記錄用戶的操作過程,自動生成代碼。CATIA提供了Automation API用于VBScript對CATIA的二次開發,Automation API具備了與任何OLE所兼容的平臺進行通訊能力。自動化應用接口可以調用“InputBox”和“MsgBox”函數獲取用戶輸入信息和進行輸出,而對于NT用戶則可以應用Visual Basic來定義更為復雜的輸入輸出面板。運行的時候可以給宏關聯一個圖標,并置入CATIA顯示框架。這種方式的開發流程如圖1中所示。

   1

  圖1 使用VB進行CATIA二次開發的基本流程

  2、使用組件應用架構(CAA–RADE)對CATIA進行二次開發

  Component Application Architecture (CAA) 組件應用架構,是Dassault Systemes產品擴展和客戶進行二次開發的強有力工具。Dassault Systemes提供的CAA產品包括如下內容:

  CAA RADE 快速開發環境,基于Microsoft Visual Studio  & #61548;

  CAA CATIA V5 API, CATIA V5應用開發工具  & #61548;

  CAA ENOVIA LCA V5 API,ENOVIA LCA應用開發工具  & #61548;

  CAA DELMIA V5 API,DELMIA V5應用開發工具  & #61548;

  CAA ENOVIA PORTAL V5 API ,ENOVIA PORTAL V5應用開發工具

  快速應用研發環境Rapid Application Development Environment(RADE)是一個可視化的集成開發環境,它提供完整的編程工具組。RADE以Microsoft Visual C++6.0為載體,開發工具完全集成在了VC++環境中,并且提供了一個CAA框架程序編譯器,但同時也限制了VC++的部分功能。可以說CATIA CAA–RADE是目前所有高端CAD/CAM開發環境中最為復雜、同時也是功能最為強大的一個。

  CAA采用面向對象的程序語言,開發過程可看作是其組件對象的組合和擴展。CAA采用組件對象模型CAA采用面向對象的程序語言,開發過程可看作是其組件對象的組合和擴展。CAA采用組件對象模型(COM)和對象的連接和嵌入(OLE)技術,CAA的架構如圖2所示。

   1

  圖2 CAA架構

  三、使用組件應用架構的CATIA界面二次開發方法

  下面的例子說明了如何使用CAA C++開發方式來建立一個CATIA內部程序。實現的功能是新建一個獨立的工作臺(workbench),并在其下面實現添加自定義菜單,添加工具條以及按鈕圖標,插入CATIA風格的對話框。并生成對界面功能的響應,建立command,實現調用對話框,以及通過輸入參數直接用代碼生成一個三維模型,并在CATIA主窗口中顯示。

  1、 新建獨立的workbench

  CATIA V5將某類包含一系列交互命令的一些工具條分組顯示在不同的工作臺(workbench)中,這樣有利于工具的查找和使用。通過自己新建的workbench可以將自己二次開發形成的一系列命令集中顯示在一個工作臺中,便于以后的操作。工作臺的建立需要以下幾個步驟。

  創建工作臺廠(factory)的接口(interface);

  創建工作臺廠;

  創建工作臺描述類;

  創建響應命令(command)的標題;

  創建工作臺并排列圖標按鈕響應;

  提供圖片及提示等資源并將新建的工作臺插入開始菜單;

  創建工作臺的顯示界面。

  插入新建的工作臺MyWorkBench后的CATIA開始菜單如圖3所示,它與CATIA現有的模塊成為并列關系。現在進入MyWorkBench工作臺里面沒有任何工具條及按鈕,下面添加這部分工具。

   1

  圖3 生成的新的工作臺

  2、 添加工具條及按鈕

  首先創建按鈕的描述類CAAAfrGeoCreationWkb,派生于CATBaseUnknown類。CATBaseUnknown是創建用戶界面并實現界面的基類,所有的接口都是從IUnknown/CATBaseUnknown繼承的。這個類中建立了兩個函數分別為CATCmdWorkbench *的CreateWorkbench()函數和無返回值類型的CreateCommands()。前面的函數是用來實現順序插入工具條、按鈕圖標以及菜單,后面的函數是實現對插入按鈕以及菜單和響應函數的關聯。

  在CreateWorkbench()函數中用到了宏NewAccess(className,variableName,objectName)。CATIA的工作場(workshop)或者工作臺(workbench)可以被看作是一個入口的集合包,使用NewAccess宏可以創建一個這樣的入口。使用SetAccessChild(variableName,childName)以及SetAccessNext (variableName,nextName)這兩個宏則可以連接入口。其中className表示被創建類的類型,包括以下幾種類型:CATCmdContainer,CATCmdWorkshop,CATCmdSeparator,CATCmdStarter。下面就是創建了一個按鈕的容器,也就是工具條,并在其中添加按鈕的部分代碼。

  NewAccess(CATCmdContainer,pCAAAfrTB1EltTlb,CAAAfrTB1EltTlb);//創建工具條pCAAAfrTB1EltTlb

  SetAccessChild(pCAAAfrGeoCreationWkb, pCAAAfrTB1EltTlb); //工具條加入工作臺

  //創建按鈕cmd1,并設置其響應宏為CAAAfrCmd1Hdr,最后將其加入工具條TB1中

  NewAccess(CATCmdStarter,pCAAAfrTTB1EltCmd1Str,CAAAfrTTB1EltCmd1Str);

  SetAccessCommand(pCAAAfrTTB1EltCmd1Str,"CAAAfrCmd1Hdr");

  SetAccessChild(pCAAAfrTB1EltTlb,pCAAAfrTTB1EltCmd1Str);

  接下來繪制一個圖標,并在CAAAfrGeoCreationWkbHeader.CATRsc中將其關聯,具體如下,則cmd1按鈕顯示的是CAACmd1.Bmp圖標。

  CAAAfrGeoCreationWkbHeader.CAAAfrCmd1Hdr.Icon.Normal = "I_CAACmd1";

  在CAAAfrGeoCreationWkbHeader.CATNls文件中設置新建按鈕的標題以及提示內容

  CAAAfrGeoCreationWkbHeader.CAAAfrCmd1Hdr.Category = "Element";

  CAAAfrGeoCreationWkbHeader.CAAAfrCmd1Hdr.Title = "command1";

  CAAAfrGeoCreationWkbHeader.CAAAfrCmd1Hdr.ShortHelp = "new cmd1";

  添加兩個工具條并插入一系列按鈕的效果圖如下面圖4所示。

   1

                     圖4 新添加的按鈕                                                             圖5 添加的菜單

  3、添加菜單

  菜單的添加與添加按鈕類似,也是在CreateWorkbench()函數中,只不過是在宏中的參數與添加按鈕并不一樣。添加后的效果圖如圖5所示

  NewAccess(CATCmdContainer, pCAAAfrGeoCreationMbr, CAAAfrGeoCreationMbr);

  NewAccess(CATCmdContainer, pCATAfrInsertMnu, CATAfrInsertMnu);

  SetAccessChild(pCAAAfrGeoCreationMbr, pCATAfrInsertMnu);

  NewAccess(CATCmdSeparator, pCAAAfrGeoCreationInsertSep, CAAAfrGeoCreationInsertSep);

  SetAccessChild(pCATAfrInsertMnu, pCAAAfrGeoCreationInsertSep);

  NewAccess(CATCmdContainer, pCAAAfrMeu1EltSnu, CAAAfrMeu1EltSnu);

  SetAccessNext(pCAAAfrGeoCreationInsertSep, pCAAAfrMeu1EltSnu);

  NewAccess(CATCmdStarter, pCAAAfrMMeu1SubMn1Str, CAAAfrMMeu1SubMn1Str);

  SetAccessChild(pCAAAfrMeu1EltSnu, pCAAAfrMMeu1SubMn1Str);

  SetAccessCommand(pCAAAfrMMeu1SubMn1Str, "CAAAfrCmd1Hdr");

  在CAAAfrGeoCreationWkb.CATNls文件中設置菜單顯示的屬性。

  CAAAfr Meu1EltSnu.Title = "新建菜單1" ;

  CAAAfr Meu1EltTlb.Title = "command1" ;

  3、 建立菜單以及按鈕的響應類

  建好的workbench空框架中可以創建三種類型的響應(command)類,他們都是CATCommand派生出來的。具體添加過程是打開CAA Rade 菜單"Insert",選擇 "CATIA Resource"下的"Command..."。可以選擇Statechart command,dialog-box based command和 Basic command。Basic command是創建一個空的響應類,在函數Activate( CATCommand * iFromClient, CATNotification * iEvtDat)中添加響應。

  dialog-box based command在二次開發中會被更多的用到。選擇該類型響應類,在運行的時候會直接彈出一個對話框,當然,可以對這個對話框進行編輯。對話框編輯界面如圖6所示,里面有一個正在編輯的對話框,在圖的中部,右邊是自帶的一些控件,包括CATDlgFrame,CATDlgLabel,CATDlgEditor,CATDlgPushButton,CATDlgRadioButton等等。對話框內所有的控件在Build()函數中列出,應用函數SetGridConstraints(short int iTopRow, short int iLeftColumn, short int iRowSpan, unsigned int iJustification)通過設置控件在對話框中矩陣位置的方式來調整位置。

  為控件添加回調函數來響應各種操作。如圖7所示,CATDlgPushButton按鈕控件包括Creation,Visibility swap,Resizement,Button activation以及Repetitive button activation5中回調函數。選擇Button activation產生點擊響應生成回調函數OnPushButton004PushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data),可以在這個函數內添加代碼。

   1

                                       圖6 對話框編輯                                   圖7 添加對話框控件回調函數

  四、開發實例

  1、通過輸入參數繪制拉伸體的例子,可以根據自己的需要生成拉伸體以及其他復雜的模型,并實現參數化的過程,此例中通過輸入截面圓的半徑、拉伸長度以及拉伸方向與截面法向角度值生成拉伸體,并可以改變其位置。如圖8所示。

   1

  圖8 按鈕對話框響應繪制拉伸體

  2、五座標數控機床運動仿真。實現了機床的數字化建模以及機床的運動仿真,并可在此基礎上實現更多的仿真功能和模塊。仿真完成后的效果圖如圖9所示,圖10和圖11分別為局部效果以及刀軌的顯示。

  首先,新建一個獨立的工作臺,在下面建立兩個個模塊:機床模型建立模塊和運動仿真模塊。為每個模塊建立各自所需的Toolbar和對話框以及響應函數,可以參考前面提到的方法。

  然后,通過利用CATIA本身的建模功能或者利用二次開發自己應用代碼生成機床數字化模型。本文采用了后者,這樣有利于后面對于模型的操作和添加機床行程等約束參數。建模應用了CATIA的產品結構模塊,機床文件為*.CATProduct。首先應用CAA C++的Part Design部分建立機床各部分的零件,每個部分都為獨立的*.CATPart文件。然后應用CAA C++的3D PLM PPR組件實現整個機床的裝配。

  接下來是機床的運動仿真的實現。讀取NC文件經過處理后提取到移動的方向和坐標值后。應用CATIDocRoots接口找到機床模型的根產品(Root Product),遍歷得到要移動的相應機床部件,得到CATIMovable接口實現相應部分的移動,移動矩陣為CATMathTransformation類型。

  最后是刀具軌跡的生成和顯示,這里用到了CAA的GSM和Shape Design & Styling。可以顯示直線,圓弧和樣條曲線。

   1

  圖9 機床運動仿真的整體效果圖

   1

                圖10 運動仿真局部效果圖                                             圖11 獨立顯示的導軌

  機床運動仿真探索了應用CAA實現了界面二次開發、實體和空間曲線建模、產品裝配及運動效果等方面。不但可以實現虛擬加工仿真,也可以應用在虛擬裝配的動畫顯示方面。因為CATIA CAA二次開發采用的組件方式以及COM的應用,再加上CATIA本身結構的層次化和嚴謹,所以對于和其他CAD軟件相比也有更大的難度。

  五、結束語

  應用CAA組件對CATIA軟件進行二次開發,可以大大縮短專用系統的開發周期。Component Application Architecture(CAA) 組件應用架構,是第三方產品集成和一般客戶進行客戶化、個性化設計的強有力的工具,利用CAA完全可以實現Dassault Systemes應用的深層次開發。但是,由于Dassault Systemes應用本身的復雜性和CAA所涉及的深層次內容,再加上CATIA本身結構的層次化和嚴謹,所以利用CAA進行CATIA二次開發與其他CAD軟件相比也具有更大的復雜性和難度,但同時也可以實現更強大的功能。


久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区
欧美一级特黄aaaaaa在线看片| 97久久超碰福利国产精品…| 久久久精品一区| 久久久精品国产| 欧美在线视频观看免费网站| 高清国语自产拍免费一区二区三区| 色偷偷88888欧美精品久久久| 亚洲一区二区三区久久| 欧美专区第一页| 久久久亚洲福利精品午夜| 欧美成人免费va影院高清| 日韩不卡av| 777久久精品一区二区三区无码 | 日韩免费在线免费观看| 国产精品永久在线| 久久躁日日躁aaaaxxxx| 精品一区二区三区视频日产| 久久天天躁狠狠躁夜夜躁| 日本a在线免费观看| 久久久精品在线视频| 亚洲影院色在线观看免费| 国产美女精品视频免费观看| 欧美成人四级hd版| 国产日韩综合一区二区性色av| 国产精品久久久久久久久| 国内成+人亚洲| 国产精品久久久久久久久久久新郎| 欧美精品成人网| 国产精品日韩欧美| 麻豆传媒一区二区| 欧美精品生活片| 国产精品夜夜夜一区二区三区尤| 欧美日韩福利在线观看| 国产日产欧美视频| 亚洲熟妇无码一区二区三区导航 | 国产精品电影久久久久电影网| 91黄在线观看| 国产成人精品日本亚洲11| 日本在线观看a| 国产精品传媒毛片三区| 国产成人亚洲精品无码h在线| 麻豆视频成人| 国产亚洲第一区| 青青草精品毛片| 日韩手机在线观看视频| 欧美日韩aaaa| 欧美成人第一页| 国产精品视频大全| 久草视频这里只有精品| 久久久水蜜桃| 国产日韩一区二区| 欧美亚洲视频一区二区| 福利视频一区二区三区四区| 欧美一级特黄aaaaaa在线看片| www.日韩.com| zzjj国产精品一区二区| 国产高清精品一区二区| 奇米影视首页 狠狠色丁香婷婷久久综合| 久久精品国产理论片免费| 欧美亚洲另类在线一区二区三区| 国产精品久久..4399| 国产综合18久久久久久| 欧美激情一二区| 91精品国产综合久久香蕉922| 日本免费高清不卡| 久久最新资源网| 国产伦精品一区二区三区免 | 97色在线播放视频| 日韩欧美视频一区二区三区四区| 国产精品久久久久久久久久直播| 国产精品一区久久| 日本一区二区三区四区五区六区| 久久久精品一区| 北条麻妃在线一区| 人妻av无码专区| 一区二区三区免费看| 久久久久久久免费| 国产精品一区二区三区成人| 欧美在线国产精品| 亚洲精品在线免费| 国产精品果冻传媒潘| 91精品国产91久久久久久不卡| 今天免费高清在线观看国语| 亚洲va韩国va欧美va精四季| 操人视频在线观看欧美| 久久国产一区二区| 99久久精品久久久久久ai换脸| 欧美亚洲日本在线观看| 亚洲第一页在线视频| 国产精品成人观看视频免费| 久久精品国产99精品国产亚洲性色| 国产九色porny| 国内外免费激情视频| 日本一区二区免费高清视频| 欧美激情视频一区| 国产精品久久久久久久久久久久午夜片 | 欧美重口乱码一区二区| 亚洲欧美日韩综合一区| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久郑州公司 | 99中文字幕| 国产综合 伊人色| 欧美专区一二三| 色欲av无码一区二区人妻| 久久久久久国产精品美女| 国产精品久久久久久久乖乖| 日韩在线视频网站| 久久久av水蜜桃| 91精品一区二区三区四区| 成人免费无码av| 红桃av在线播放| 日韩视频免费播放| 欧美一区1区三区3区公司| 亚洲午夜精品久久| 一区二区三区免费看| 精品国产乱码久久久久久88av| 国产精品久久久久久久久久久不卡 | 久久亚洲国产精品日日av夜夜| 国产精选在线观看91| 国模杨依粉嫩蝴蝶150p| 欧美一级成年大片在线观看| 日本a级片在线播放| 痴汉一区二区三区| 午夜在线视频免费观看| 亚洲熟妇无码一区二区三区| 久久久久久国产精品美女| 欧美激情一级二级| 一区二区三区精品国产| 最新av网址在线观看| 欧美激情小视频| 精品国产区在线| 久久伊人精品一区二区三区| 欧美猛交ⅹxxx乱大交视频| 国产精品久久久久久久久久尿 | 蜜臀久久99精品久久久无需会员 | 亚洲在线色站| 一区二区成人国产精品| 亚洲一区二三| 无码免费一区二区三区免费播放| 亚洲制服中文| 亚洲一区二区三区四区视频 | 麻豆成人在线看| 精品免费日产一区一区三区免费| 国产精品久久精品| 精品久久久久亚洲| 国产99在线免费| 亚洲国产精品女人| 欧美一区二区大胆人体摄影专业网站| 日本一区二区三区精品视频| 青青在线视频免费| 欧美影院久久久| 精品少妇在线视频| 俄罗斯精品一区二区三区| 91高清免费视频| 久久久久久久激情| 国产精品日本一区二区| 久久成人一区二区| 亚洲天堂第一区| 日本不卡一二三区| 精品一区二区三区视频日产 | 国产日韩精品在线播放| 福利视频一二区| 91精品美女在线| 久久久久久久久久久久久久一区| 久久久成人精品| 伊人久久大香线蕉av一区| 日本不卡高字幕在线2019| 精品人妻少妇一区二区| 国产精品一区二区女厕厕| 久久亚洲精品欧美| 国产精品免费一区二区三区观看 | 欧美激情www| 国产精品自拍片| 久久观看最新视频| 国产99在线|中文| 日韩精品―中文字幕| 精品无人区一区二区三区| 97精品久久久| 国产精品日本一区二区| 亚洲激情一区二区| 欧美亚州在线观看| 成人免费在线网址| 久久激情视频久久| 一区二区精品视频| 男人的天堂99| 国产精品91在线| 国产精品久久久久久久久久东京| 一本色道久久综合亚洲二区三区| 欧洲日本亚洲国产区| 粉嫩精品一区二区三区在线观看| 久久精品丝袜高跟鞋| 欧美日本亚洲视频| 欧美中文字幕精品| 97精品国产97久久久久久粉红| 久久精品这里热有精品| 亚洲精品天堂成人片av在线播放| 欧美久久在线| 国产精品678| 久久91精品国产| 欧美精品成人一区二区在线观看| 久青草视频在线播放|