PythonでCATIAを操作する方法|CATIAマクロの作成方法
基本的にCATIAマクロは標準装備されているCATIA VBA、もしくはExcelと連携させExcel VBAで作成することが主だと思います。
そこで今回は別のアプローチ方法として、別言語である『Python』からCATIAを操作する方法を紹介していきます。
ただ、先にいっておくとPythonでCATIAを操作するメリットはほとんどありません。
例えば「CATIA内でディープラーニングをはじめとする機械学習を行い、その結果から形状を作成する」といったPythonの強みを活かす場合であれば多少のメリットはありますが、そういった場合に出くわすことがほとんどありません。(AI技術が進めば変わってくるかもしれませんが)
そのため、本ページでは「PythonでもCATIAを操作することはできる」ということを軸として、その操作方法を解説していきます。「Pythonで効率的なCATIAマクロを作る」という内容ではないということは予め弁明しておきます。
本ページではAnaconda3とPythonが導入されていることが前提となっています。
未導入の方は先にAnaconda3/Pythonをインストールしてください。
※Anaconda3 =「Python」と「よく使うライブラリ」をまとめてインストールできるセット
pywin32のインストール
PythonでCATIAを操作するには「pywin32」というPythonのパッケージが必要になります。
というわけで、まずは「pywin32」をインストールします。
Anaconda Promptを開き、以下のコードを実行します。
1 |
conda install pywin32 |
Anaconda3をインストールした時に、「pywin32」もまとめてインストールされているはずですが一応実行しておきましょう。すでに「pywin32」がインストールされている場合は実行後に「All requested packages already installed」的なメッセージが表示されます。
インストールができたら最終確認として下記のコードをAnaconda Promptで実行します。
1 |
pip list |
すると下画像のように現在インストールされているパッケージとそのバージョンが全て表示されます。
この中に「pywin32」があればインストールは完了です。
pyファイルの作成
「pywin32」がインストールできたら、CATIAを操作するためのPythonのファイル(pyファイル)を作成していきます。
まずはメモ帳を開いて下記のコードを入力し保存します。
(アクティブドキュメントに「GS1」〜「GS5」という名前の形状セットを作成するマクロです)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import win32com.client app = win32com.client.Dispatch("CATIA.Application") #アクティブドキュメントの定義 doc = app.ActiveDocument #Partの定義 pt = doc.part #HybridShapeBodiesの定義 hbs = pt.HybridBodies #ループ文で形状セットを5個作成 for i in range(5): hb = hbs.add() hb.Name = "GS" + str(i+1) |
このコードで最も重要なのは最初の2行です。
ここで先ほどインストールした「pywin32」の「win32com」を使ってCATIAを取得しています。
import win32com.client
app = win32com.client.Dispatch(“CATIA.Application”)
このコードを書くことで以降、CATIA VBAで使用可能な固有オブジェクト(Document,HybridBody,AnyObjectなど)がPython上で使用可能になります。
ちなみに上記コードの「CATIA」の部分を「Excel」に変えれば同じようにExcel VBAの固有オブジェクト(WorkBook,Sheet,Cellsなど)が使用可能になります。
また、オブジェクトだけでなくプロパティやメソッドもVBAと同じように使うことができるので、コードを書くこと自体はVBAと同じような考えで作成することができます。
ただCATIAの固有オブジェクトが使えるようになったとはいえ、言語自体は「Python」なのでFor文やIf文などの基本構文は全てPythonの書き方にする必要があります。
Pythonコードの保存が完了したら、メモ帳の拡張子を「.txt」から「.py」に書き換えます。
(メモ帳を右クリック>[名前を変更])
上画像のようにアイコンが変わればpyファイルの作成は完了です。
PythonコードをVBAコードで見る
今回必要なものではありませんが、上記のコードをVBAで表すと以下のようになります。
変数の宣言方法やコメント文の書き方、For文の書き方などは違いますが、なんとなく書いてあることは同じということがわかると思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Option Explicit Sub CATMain() 'アクティブドキュメントの定義 Dim doc As Document Set doc = CATIA.ActiveDocument 'Partの定義 Dim pt As Part Set pt = doc.Part 'HybridShapeBodiesの定義 Dim hbs As HybridBodies Set hbs = pt.HybridBodies 'ループ文で形状セットを5個作成 Dim i As Integer For i = 1 To 5 Dim hb As HybridBody Set hb = hbs.Add() hb.Name = "GS" & i Next i End Sub |
pyファイルの実行
pyファイルが作成できたらあとは実行するだけです。
通常のファイルと同じくpyファイルをダブルクリックすれば実行できます。
(もしくは右クリック>[プログラムから開く]>[Python 3.○]をクリック)
実行するとPythonウィンドウ(コマンドプロンプトに似たウィンドウ)が立ち上がり処理が始まります。
コードの内容によりますが数秒待つとCATIA内で処理が行われます。
もしエラーが発生した場合は、通常のPythonスクリプトと同様にPythonウィンドウ内にエラーが出た行と原因が表示され、処理が中断されます。
まとめ
今回は「PythonでCATAを操作する方法」についての内容でした。
内容を簡単にまとめると以下のとおりです。
・PythonでCATIAを操作するには「pywin32」パッケージが必要
・pyファイル内で「win32com」を呼び出すことで任意のアプリケーションの操作が可能になる
・pyファイルに書くコードはPythonの構文だがVBAオブジェクトの使用が可能
・pyファイルはダブルクリックで実行可能(設定にもよる)
・pyファイルはメモ帳からでも作成可能(作成後は拡張子を[.py]に変更する)
今回の内容を実践してみた方ならわかると思いますが、正直なお話PythonでCATIAを操作するメリットはほとんどありません。
というのもCATIAに装備されている訳ではないPythonから操作を行うと、どうしても処理に時間がかかってしまうためです。VBAから実行すれば一瞬で終わる処理も、Pythonから実行すると数秒かかってしまうことがほとんどです。
しかし、その割にはPythonであることの強みがほとんどありません。
強いて言うのであれば共有が少し楽な点は強みといってもいいかもしれません。Pythonが導入されている会社の場合、Pythonの設定はどのPCでも同じようなものになっていると思います。
つまり作成したpyファイルを渡せば、受け取った側はダブルクリックですぐにマクロを実行することができます。バッチファイルのように設定なしですぐに実行できるというのはプログラミングが全くわからない人に優しく共有もしやすいです。
このように一長一短というわけでもなく零長一短といっても過言ではないPythonでの操作ですが、操作自体は可能ということは理解していただけたと思います。いずれ何かの役に立つ可能性もあるので、本ページの内容を頭の片隅にでも残しておいてもらえたら幸いです。
CATIAマクロを本気で勉強するなら