気になっていたpycatiaを試してみることにしました。
但し、不完全で解決する方法がわかりません。
解決方法がわかったら別途記載しますが、取り組んだ事を
忘れてしまいそうなためのメモ書きです。
pycatia自体はこちらです。
GitHub - evereux/pycatia: python module for CATIA V5 automation
ほぼ個人での開発だと思うので、すごいと思います。
インストールは、こちらに手順が記載されています。
Installation — pycatia 0.6.4 documentation
但し、手順がちょっと違う方法を行ったような気もするので
記載しておきます。
予め、スタート時の環境です。
・OSはwin10 proです。
・CATIAはV5-6 R2022です。
・pythonは3.11がインストール済みです。
(Anacondaとか嫌だったので、素のpythonです)
・pythonのpathは通していません。(確か)
・vscodeでは、ms-pythonの拡張をインストール済みです。
〇仮想環境を作成
過去にfletを取り組んだ際に行った手順です。
上手くいかない原因がここにあるような気もしています・・・。
まず、任意のフォルダーをエクスプローラ上で作成します。
エクスプローラのアドレス部分(?)で、"cmd"を実行しターミナル
(コマンドプロンプト)を起動します。
あまり詳しく分かっていないのですが、ターミナル上でこちらを実行。
py -3.11 -m venv .venv
これで".venv"フォルダが出来上がり、仮想環境が出来ました。
そのままターミナル上で、次を実行。
.venv\Scripts\activate.bat
これで仮想環境内に入りました。
〇pipのアップデート
最初にこれをやったのではありませんが、途中で進まなくなる為、
これを最初に行う必要がありました。
ターミナル上で次を実行。
pip install --upgrade pip
これで仮想環境上でのpipが最新?バージョンになります・・・。
と思っていたのですが、エラーが出ます。
エラーメッセージに従い、フルパスでの実行で最新状態になるはずです。
〇pycatiaのインストール
公式ドキュメントのpypiの方法で行いました。
ターミナル上で
pip install pycatia
を実行しインストール完了です。
最新にupdateする為、こちらも実行です。
pip install pycatia --upgrade
ここまでは、CATIAをインストールしていないPCでも出来るはずです。
・・・無意味ですが。
〇pythonのファイルを作成する
続いてvscodeで、最初の任意のフォルダを開きます。
面倒なのでvscode上で"hello.py"を作成します。
この様な状態です。
ファイル名からして、何を行うかはご察しの通りです。
続いてサンプルを元に"hello.py"をこの様にしました。
# pycatia test import os import sys sys.path.insert(0, os.path.abspath("..\\pycatia")) from pycatia import catia caa = catia() caa.message_box("Hello PyCatia")
〇実行する
CATIA V5を起動し、vscodeのこちらを押します。
で、結果は・・・
エラー出まくりです。
確かに、仮想環境に入った状態では無い為に出てくるエラーのような
気もします。
そこで、vscodeのターミナル上でこちらを実行します。
.venv\Scripts\activate.bat
これで仮想環境に入ったはず。
再度実行したところ、何とか表示されました。
表示されたものの、CATIAの裏側で表示されていました。
何かが違う・・・でも動きました。
公式のサンプルをちょっと試した際の画像なのですが、
ブレークポイントで停止させた際、変数の中も見れていますし、
型も表示されています。
又、インテリセンスも表示されました。
但し、スネークケースで表示されていることを考えると、
COMオブジェクトを直接見ているのではなく、pycatiaで定義
されているメソッド等の名前が表示されているようです。
(=ラッパー)
と、ここまでの感じではデバッグを含めて開発が十分出来そうな
感触は持ちました。
が、解決しないのはここからです。
一旦vscodeを閉じ、再度vscodeで開いてもエラーとなり、全く
実行出来なくなりました。
そもそもエディタ上でpycatiaが認識出来ていない事が、静的解析でも
表示されています。
pycatia的な事ではなく、仮想環境の理解が出来ていないのだろうとは
思いますが・・・。