C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)※記載されている内容は個人の意見であり、所属する団体等を代表する意見では御座いません・・・・よ!

Fusionの3D注記

Fusionの4月のUpdateからAPIで3D注記を扱えるようになっていました。
Help
これ多分需要ある機能だと思っています。

数年前に3D注記のインポートだけは追加されていたのですが、確かStepとinventor製の物だけで
CAM(製造)ワークスペースでのみ表示されていた様な記憶でしたが、作成する事が出来なかったです。

例のごとく、サンプルコードが無かったため手探りで挑戦です。
3D注記も単に文字だけではないようです。

GraphicalsとかSurfaceTexturesとかって何でしょうね・・・

頼れるものがHelpしかないのですが、経験上createInputを利用する事は予想できるので
それらを探したところ、holeThreadNotesとleaderLineNotesだけが持っていました。
穴情報と引き出し線注記と言ったところでしょう。

で、少し格闘しながら作成したサンプルがこちらです。

# Fusion360API Python script

import traceback

import adsk.core as core
import adsk.fusion as fusion


def run(context):
    ui: core.UserInterface = None
    try:
        app: core.Application = core.Application.get()
        ui = app.userInterface
        des: fusion.Design = app.activeProduct
        root: fusion.Component = des.rootComponent

        annos: fusion.PMIAnnotations = root.pmiAnnotations
        notes: fusion.PMILeaderLineNotes = annos.leaderLineNotes

        for face in root.bRepBodies[0].faces:
            # Input取得
            annoIpt: fusion.PMILeaderLineNoteInput = notes.createInput(face)

            # アノテーションの文字書き換え
            annoIpt.segments[0].text = f"{face.area:.2f}"

            # アノテーション追加
            notes.add(annoIpt)

    except Exception:
        if ui:
            ui.messageBox("Failed:\n{}".format(traceback.format_exc()))

ルートコンポーネントにボディを作ってから、スクリプトを実行すると


各面毎に表面積の3D注記を付けました。文字の向きとか見える方向とかも制御出来るはずです。
3D注記を作る事態は直ぐに出来たのですが、文字の書き換えが中々分からず苦労しました。
・・・3D注記は手動ではどうやって作るのだろうか?(今度フォーラムで聞こう)

時短が出来たらもう少し挑戦しよう。

Stepファイル3

こちらの続きです。
Stepファイル2 - C#ATIA

中々CATIAで読み込めなかったStepですが、やっと読み込めるようになりました。

ゴールではなく、スタートラインに立った状態です。
いや~長かった。単に変換失敗時のログを渡せばよかっただけだったのですが・・・

ModuleManager

ここ2年ぐらい使いつつ改良を重ねてきたマクロを公開しました。
GitHub - kantoku-code/CATIA_V5-ModuleManager: CATIA V5 のVBAプロジェクトを、Gitで管理を行うことを目的としたマクロです · GitHub

CATIA V5 VBAをGitで管理したい人向けのものです。(僕です)
Excel等Officeは・・・恐らく探せばもっと良いものが有るはずです。

単に "バックアップしたい" と言う人には想定外な動きかもしれませんが
あくまでGitで管理するための動作です。

VBAのプロジェクトを使いまわしたい場合は、一旦エクスポートし
不要なファイルをバサッと削除して再度インポートする事でまとめて
モジュールの削除が出来るので、そんな使い方も有りだと思っています。
(記録したマクロをガサッと削除とか)

使い方はお任せで。(責任もお任せで)

Stepファイル2

こちらの続きです。
Stepファイル - C#ATIA

色々と試したけれどもどうしてもクリアできず・・・
とりあえず何とかしてFusionで読み込み状態を確認したいために、STL出力を追加し確認。

・・・詳細は記載しませんが、幾つか問題を把握。イヤイヤ、一個は再三薄っぺらい
データ出来る可能性があるから、何とか厚みを付けて欲しいような話を伝えていたにも
関わらず、対処出来てないじゃないのさ。

何度も何度もやり取りした末、何とか形になりました。

やればできるじゃない、Step出力はCADカーネルなしのスクラッチですよ。

元の状態はこんな感じです。

で、肝心のCATIAにはStepのインポートが拒否される・・・

Stepファイル

ぼちぼち進めているものですが、アプリ上ではきれいに出来ているんですよ。

但し、これはメッシュです。

でも、Stepに書き出して、Fusionに読み込ませると・・・

全然形になってない!
スクラッチでStepファイル出力は無理かな?
曲面無しだから何とかなりそうなんだけどなぁ

Gemini

最近、Antigravityを利用する目的で契約していたGoogle AI Proを解約しちゃいました。
元々、性能的にはClaudeにはちょっと劣る(geminiが)とは感じてはいたのですが、
割安感はあったので少し使っていたのですが、少し前からあからさまにトークンの
回復が悪くなったので耐え切れず解約・・・

素のVSCodeに比べAntigravityの方がちょっとだけ操作性は良いとは思っていたの
ですが、こちらの問題もあり使わなくなっちゃいました。
antigravityで開く が出ない - C#ATIA

と言っても、Claude一本も不安なんですよね。ちょっと前にClaudeのサーバー障害
で2日ぐらい使えない日があったので。(Antigravityに助けてもらいました)

ChatGPTかな?Codexも評判良さそうだし。

CATIA V5 VBAマクロ開発向け VSCode拡張3

こちらの続きです
CATIA V5 VBAマクロ開発向け VSCode拡張2 - C#ATIA

まだまだ改修中。

簡易Lint

以下のチェックを行い、警告やエラーとして表示します。

  • Option Explicit が宣言されていない 警告
  • On Error Resume Next の使用 警告
  • GoTo の使用(On Error GoTo は除外) 警告
  • 最大行長超過(デフォルト: 200文字) 警告
  • Dim 宣言後に一度も使用されない変数 警告
  • ネスト深さが閾値を超過(デフォルト: 5) 警告
  • Sub/Function の行数が閾値を超過(デフォルト: 100行) 警告
  • 括弧の不一致 エラー
  • End If / End Sub / End Function 等の End 忘れ エラー

これは標準的な設定の為、任意に変更可能です。
その為にはF1キーを押して”Cat5Dev: Initialize Project (cat5dev.toml)”を実行すると、
作業フォルダ内に"cat5dev.toml"が作成されます。
このファイルがLintの設定ファイルとなっているので、ご自由に切り替えてください。
(自分で作りましたがウザいので、on_error_resume_nextとmax_nesting_depthはFalse)

フォーマッタ変更

  • 先頭文字がシングルクォーテーションの場合は、次の文字にはスペースを入れないに変更

バックグラウンドをローカルサーバー化

  • Go製のバックグラウンドを単発実行のExeではなくローカルサーバー起動

これにより、フォーマッタとLintのレスポンスを確保

ダウンロード

Release v0.3.0 · kantoku-code/Cat5Dev · GitHub

ごめん、Releasesからvxisファイルをダウンロードして
”VSIXからインストール…”からインストールです って伝えるのを忘れてる。