C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

pycatiaを味わう6

こちらの続きです。
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から追加する必要もある為、余計に面倒ですね。