1. 程式人生 > >利用C#進行CATIA自動化二次開發的入門指南

利用C#進行CATIA自動化二次開發的入門指南

本文包括以下內容:

  • Automation(以下簡稱自動化)與CAA的區別
  • 用C#建立Automation根物件的程式碼
  • Automation文件的使用方法

    以下是正文

Automation(以下簡稱自動化)與CAA的區別

相比CAA開發,COM自動化介面的好處在於

  1. 不需要購買安裝CAA
  2. 因為是基於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#建立Automation根物件的程式碼

貼一段C#的程式碼,這段程式碼用於獲得CATIA物件,是每個自動化程式最初的一步,之後都是按部就班的建立和操作CATIA的子類就可以了。

INFITF.Application CATIA;
try
{
    CATIA=(INFITF.Application)Marshal.GetActiveObject("CATIA.Application");
}
catch
{
   Type oType = System.Type.GetTypeFromProgID("CATIA.Application"
); CATIA = (INFITF.Application)Activator.CreateInstance(oType); CATIA.Visible = true; }

上述程式碼獲得到的CATIA.Application物件就是下面的Application物件了

這裡寫圖片描述

Automation文件的使用方法

達索原來是有線上文件的,但兩年前關閉了不給訪問了,或者連結改了,反正我沒有再找到,這是很可惜的。

如果你安裝了CAA的話,自動化文件的內容同樣可以在任何版本的CAADoc目錄中找到,如果你沒有安裝CAA,可以下載我提供的文件原件壓縮包,密碼為csq6

關於Doc,可以看到是分為三個目錄
這裡寫圖片描述
不過我比較常用的是第二個和第三個,因為夠用了

Generated文件
generated資料夾下的是傳統的interface document,裡面樸素的列出了所有的類、公有方法原型、類繼承關係,是我見過的API手冊裡面組織的比較清晰的。裡面有兩個資料夾,interface是給自動化開發用的,refman是給CAA開發用的,兩者文件結構相似,內容不同,這裡只表interface。

開啟\Doc\generated\interfaces_index\main.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->
這裡寫圖片描述

就可以看到
這裡寫圖片描述