こちらの続きです。
pycatiaを味わう5 - C#ATIA
時間が無く書けなかったので、思い出しつつ書くので
間違っている可能性が有ります。
can_execute関数では、アクティブなドキュメントのタイプで
実行出来ない場合をはじき出す為の関数なのですが、生憎
pycatiaではCOMオブジェクトの型を検出する方法が分かりません。
その為、アクティブなドキュメントのパスを取得する方法にしました。
未保存のドキュメントでもCATIAの場合は、パスを持っているのですね。
(フォルダまでのパスが無く、拡張子付きのファイル名が取得出来ます)
その拡張子でドキュメントのタイプを判断する事にしました。
本来であればCATProcessファイルも含めるべきですが、ライセンスが
無く確認できないので除外しました。
自作ライブラリのKCLのこちらと同じ働きです。
KCL/KCL.bas at master · kantoku-code/KCL · GitHub
よく見たら、ドキュメントを1個も開いていない際のエラーを
忘れてますね・・・しかも、caa取得する前にこの関数呼び出して
いるので、色々と駄目ですね。
あぁそういえば、pycatiaの貢献者の方の中にKCLをフォークしている方が
一人おり、驚きました。日本語の説明しかしていないのに、
まさか海外の方にフォークされるとは・・・。
DrawingViewsを取得する部分ですが、この様に記載しています。
views: DrawingViews = DrawingViews( drawDoc.sheets.active_sheet.views.com_object )
これを真面目にDrawingSheets,DrawingSheetも変数に代入すると・・・
(実行環境が無いため記憶で書いてます。間違っている可能性あり)
・・・ from pycatia.drafting_interfaces.drawing_sheets import DrawingSheets from pycatia.drafting_interfaces.drawing_sheet import DrawingSheet ・・・ sheets: DrawingSheets = DrawingSheets( drawDoc.sheets.com_object ) sheet: DrawingSheet = DrawingSheet( sheets.active_sheet.com_object ) views: DrawingViews = DrawingViews( sheet.views.com_object ) ・・・
こんな書き方になります。と言いますか、最初はそのように書きました。
importから追加する必要もある為、余計に面倒ですね。