CATIA Automation Development
本文包括以下內容:
- Automation(以下簡稱自動化)與CAA的區別
- 用C#創建Automation根對象的代碼
- Automation文檔的使用方法
相比CAA開發,COM自動化介面的好處在於:
1、不需要購買安裝CAA2、因為是基於COM組件調用進行開發,所以可以用任何(高)版本VS進行開發,有更好的智能感知和代碼提示3、CAA開發中涉及大量複雜的設計模式,而且必須用C++開發,編譯環境也必須是達索提供的編譯環境,而自動化開發可以基於C++,也可以使用CLR語言如C#、http://VB.NET,開發難度大大降低,可以非常非常順手的寫圖形化程序,可以在同一個工程中同時用C#、VB、C++/CLI開發,這非常酷4、開發前準備只需要安裝CATIA和IDE如VS2015、而且介面一定程度上能夠實現跨版本。
相比CAA開發,COM自動化介面的不足在於:
1、自動化只能實現CATIA本身各個模塊能夠做到的工作,比如你有一萬個法蘭需要批量打孔,甚至根據不同大小的法蘭和受力打不通數量的孔,自動化介面都可以勝任。但如果你想要在一個曲面上求空間上從一個點出發經過曲面反射到另一個點的所有反射點,因為這樣的工作CATIA本身做不到,自動化就難以勝任了。2、自動化開發還有個缺點是:不能像CAA一般,開發嵌入CATIA的可交互的程序(感謝題主補充)。合理的使用自動化提供的select方法可以實現簡單的選擇或選擇集交互,更複雜的拖動乃至子視圖樹狀圖什麼的開發只能靠CAA所以自動化介面能夠勝任80%的自動化工作,其他的只能靠CAA。
貼一段C#的代碼,這段代碼用於獲得CATIA對象,是每個自動化程序最初的一步,之後都是按部就班的創建和操作CATIA的子類就可以了。
INFITF.Application CATIA;ntryn{n CATIA=(INFITF.Application)Marshal.GetActiveObject("CATIA.Application");n}ncatchn{n Type oType = System.Type.GetTypeFromProgID("CATIA.Application");n CATIA = (INFITF.Application)Activator.CreateInstance(oType);n CATIA.Visible = true;n}n
上述代碼獲得到的CATIA.Application對象就是下面的Application對象了
如果你安裝了CAA的話,以上自動化文檔的內容同樣可以在任何版本的CAADoc目錄中找到,如果你沒有安裝CAA,可以下載我提供的文檔原件壓縮包
達索原來是有在線文檔的,但兩年前關閉了不給訪問了,或者鏈接改了,反正我沒有再找到,這是很可惜的
關於Doc,可以看到是分為三個目錄
不過我比較常用的是第二個和第三個,因為夠用了
Generated文檔
generated文件夾下的是傳統的interface document,裡面樸素的列出了所有的類、公有方法原型、類繼承關係,是我見過的API手冊裡面組織的比較清晰的。裡面有兩個文件夾,interface是給自動化開發用的,refman是給CAA開發用的,兩者文檔結構相似,內容不同,這裡只表interface。打開Docgeneratedinterfaces_indexmain.htm,首頁顯示的是Framework list,每個Framework對應一個COM組件,就是說如果你的程序調用了Partinterface,你就要引用Partinterface對應的COM組件(一般和framework名字很像),然後在代碼中impore(VB)或using(C#) PARTITF(它的命名空間,具體什麼名字在vs中引用後可以通過雙擊引用查看到)
第二列是類繼承關係
第三列是比較好用的各類索引,需要什麼方法直接進master之後find之類的,小技巧很多,要靠自己摸索
online文檔
達索原來的線上文檔就是這個online文檔,基本一樣的,相比上面的,這個更像是Guiding、Tutorial之類的東西,講解怎麼使用一些介面,展示一些例子等等。
打開/Doc/online/CAACenV5Title.htm
第一個是CAA開發的,第二個是自動化開發的,下面的那些對象目錄都是在這個文檔裡面找到的。比如零件設計(PartDesign)->
Shape Automation Objects->
就可以看到
個人寫的COM的CATIA插件已經在GitHub開源,項目主頁是GitHub - Lentil1016/LTB: A CATIA plug-in that can generate complex shaft parts within CATIA via COM interface automatically.
可以用在R19~23上面,能生成軸類零件,含直齒/斜齒圓柱、圓錐齒輪,可定義多段特徵,插件截圖如下
鏈接:http://pan.baidu.com/s/1miFB4jm 密碼:qw9n
歡迎大家試用該插件。
推薦閱讀: