C#ATIA

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

Fusion360 with PowerMill

全然気が付きませんでした。
Solved: Fusion 360 with PowerMill Ultimate - Autodesk Community
昨年の8月じゃない・・・。うちがPowerMillの保守を切ってしまった上、
フォーラムも見ていなかった為、気が付きませんでした。

前々から噂があったり、ライセンス絡みでそれらしき雰囲気はありました。
今の所、製品名だけが変更されたのみっぽいのですが・・・。

PowerMillユーザーが一緒になる事を拒否する一番の理由は、あまりに機能に
差があるからだろうと思います。(僕も一緒になって欲しくない と思ってます)

知名度の低いPowerXXX製品に、"Fusion360" の冠を付けた方が知名度
上がる と言う狙いもあるのかな?

electron

以前何処かに記載したような記憶なのですが、時間があるため業務で使用する為の
アプリを作ろうかと考えてます。・・・出来るかな?

悩みまくったけれどelectronにしようかと考えてます。
Javascript+html+CSSでデスクトップアプリが作成可能なのですが、
何れも持ち合わせていない技術です。ゴールまで辿り着けるのだろうか?

技術的な情報は、Fusion360APIとは比較にならないぐらいあるのですが、
サンプルを探し回ったこれが良いのかな?
GitHub - LeeDDHH/electron-api-demos-ja: Electron APIに触れてみる

本も購入し(UI絡みの記述が多く、心が折れる)、ここに記載したから
もう逃げられないな。(イザと言う時は逃げるけど)

AUTODESK デベロッパー ネットワーク2

こちらの続きです。
AUTODESK デベロッパー ネットワーク - C#ATIA
忘れていましたよ、ADNについて書いていたことを。

こちらにちょっと気になるトピが。
Solved: Legal & License questions about plugin development - Autodesk Community

”個人ライセンスで開発したアドインを販売しても良いのか?”
と言う事らしいです。
"Autodeskはオープンな会社だから構わないよ!"
 ↓
"アドインだけで年間1000ドル以上を稼いじゃっても良いの?"
 ↓
"今のところ大丈夫だけど、将来どうなるか分からないからお勧めしないよ"
と解釈しました。

チラッと探しただけなので一番お高いものはUSD140ぐらいだけど、
年間8本も売れるのかな?

個人ライセンスで制限されているフォーマットをアドインで対応させても
構わないらしいけど、個人で開発出来るとは思えませんね。
但し、RhinocerosだとSDKを公開していたような記憶があるし、
IgesもOpen CASCADEを利用すれば、そんなにハードル高くないのかな?
(僕には無理)

拘束不足を強調表示

フォーラムのこちらのものをgithubにupしました。
Re: 未拘束のジオメトリを探してハイライトするコマンドはありますか? - Autodesk Community

後出しなんですけど。毎回ドキュメントを書くのがしんどいので
スケッチ関連はこちらに追加する形にしたいです。
GitHub - kantoku-code/Fusion360_SketchToolPlus: 主にスケッチ作業用のささやかなコマンドを提供します。

指摘されたバグはいつもの行列演算部分が抜けていました。
スケッチに入ってのコマンドだから不要かと思い込んでいたのですが、
CustomGraphicsは本気のワールド座標でした。いつも忘れちゃう。

不便と言うより面倒だな、この辺の処理・・・。

Fusion360のスクリプト/アドインの登録

気が付くと、比較的最近のバージョンでのスクリプト/アドインの設定やら何やらが、
しっかりと説明されているサイトが無い様な気がしています。(自分も書く事を避けていました)
自分のわかっている範囲で書き残したいと思っていますが、将来的には変更されるかも
知れません。念の為、記載内容の条件は
Fusion360 Ver2.0.9719
python
・OSはWin10
としています。




〇言葉の整合性

今回の説明をする際は、以下のような表現とします。
f:id:kandennti:20210215154601p:plain
スクリプト/アドインを利用する為には、"ツール"タブ - "スクリプトとアドイン"コマンド を
押した際に表示されるダイアログの "マイ スプリクト" 又は "マイ アドイン" に表示される
状態にする必要があります。 これを行う作業を便利上 "登録" すると表現します。
又、これらの項目を選択し "実行" ボタンを押す、項目自体をダブルクリックする事を
"実行" すると表現する事にします。

スクリプト/アドインのファイル構成ルール

基本的にフォルダ単位で管理されています。
登録する為には、”フォルダ名" "manifestファイル名" "pyファイル名" が一致した状態になっている
必要があります。 ・・・言葉だけではわかりにくいですよね?
仮に "hoge" と言うスクリプトの場合

"hoge" フォルダー
  ┗ "hoge.manifest"
  ┗ "hoge.py"

の状態になっている必要があります。"manifestファイル" "pyファイル" はフォルダの直下に
置いていなければなりません。

スクリプト/アドインの登録方法

インストーラ

こちらの "Fusion 360 App Store" にあるものの多くはこの様なタイプです。
Fusion 360 Store: Plugins, Add-ons and Extensions for Fusion 360 | Autodesk App Store
基本的にファイルをDLし、実行することで登録が完了するはずです。

・zip等のファイルで既にフォルダ構成が出来ているもの

githubで公開されているものの多くはこれが該当します。
f:id:kandennti:20210215155104p:plain
サイト内の緑の "Code" をクリックするとプルダウンメニューが表示されるので、
”Download ZIP” を選択するとリポジトリ全体がダウンロードされます。
このZIPファイルを展開すると "xxx-master" の様な名前となるはずです。
この場合、フォルダ名のみ "-master" が追加された状態となる為、ファイルの構成ルール
から外れてしまします。その為、フォルダ名の "-master" を削除した名前に変更する
必要があります。
これは展開する際の設定やアドイン開発者のgithub利用方法にも依存しており、
一概には "この様にすればOK" とは言い切れません。
ファイルの構成ルールに基づいた状態になっている事を必ず確認してください。

ファイルの構成ルールに基づいた状態を作ったのちに登録します。
スクリプト/アドイン共に "+" をクリックすると "新しいスクリプトを追加" ダイアログが
表示されます。
f:id:kandennti:20210215155244p:plain
基本的に表示されたダイアログは、以下のパスで開かれるはずです。

スクリプトの場合
C:\Users\<USER NAME>\AppData\Roaming\Autodesk\Autodesk Fusion 360\API\Scripts

アドインの場合
C:\Users\<USER NAME>\AppData\Roaming\Autodesk\Autodesk Fusion 360\API\AddIns

この位置にファイルの構成ルールを満たしたフォルダを置いておくと、自動的に登録されます。

但し、現在はスクリプト/アドインのフォルダをローカルの任意の場所に置いておいても
登録出来るように仕様に変更されています。
その為、先程のフォルダを指定すればOKです。
自分の場合はMicrosoft社のサービスOneDriveを利用しており、この位置にフォルダを
置いておくことで、勤務先・自宅で同一のスクリプト/アドインを利用出来る状態を
保っています。("Dropbox" ""Google Drive" 等のサービスでも大丈夫なはずです)
※この方法の場合 "キャッシュをクリア" を行った場合、登録が消えてしまいます。


念のため、自分が公開しているアドインの場合ですが、こちらで説明します。
GitHub - kantoku-code/Fusion360_Two-turn_Mobius_strip: Create a two-turn Möbius strip.
上記のフォルダ名の変更を避けるため、ダウンロード/展開後のフォルダ内に
アドイン名となるフォルダを作成し、この中にアドインファイル等を入れています。
f:id:kandennti:20210215155927p:plain
こちらのフォルダを登録すれば利用出来るようになります。

・素のコード

フォーラムに投稿されたものやHelpのサンプルコードがこの場合に該当します。
この様な場合、実質新規で作る事と同じ手順となります。
f:id:kandennti:20210215160123p:plain
"スクリプトとアドイン" ダイアログを表示させ、"作成" ボタンをクリックします。
"スクリプトまたはアドインを新規作成" ダイアログが表示されますが、
"スクリプト名またはアドイン名" 部分のみが入力されている状態と
なっていればOKです。
"作成" を押します。(この時点で登録は完了しています)
元のダイアログ上では、ファイル名が変更出来る状態となっていますが、変更せずにEnterを押します。
新たに作成した項目を選択した状態にし、"編集" をクリックすればエディタが
起動します。(インストールされていればですが・・・)
起動されたエディタの "xxx.py" の方のファイルには "Hello script(addin)" の
サンプルが記載されていますが、全て削除し、目的のコードをコピペする事で
目的のスクリプト/アドインが登録できた状態となります。

スクリプト/アドインを見分ける

スクリプトスクリプトとして、アドインはアドインとして登録しなければ
実行する事が出来ません。どちらかを記載していれば良いのですが、Helpのサンプルコード
ですら記載されていないのが実情です。その為、見分ける必要があります。

・manifestファイルを見る

manifestファイルを開くと以下の様になっています。
f:id:kandennti:20210215160430p:plain
"type" の横を見ると "script" "addin" の記載がある為、見分けることが出来ます。

・コードを見る

コードだけが存在している場合はmanifestファイルが無い為、上記の確認方法が出来ません。
最終的には直接コードを見て判断する事になりそうです。
f:id:kandennti:20210215160527p:plain
"def stop(context)" がある場合は、アドインです。
これだけで判断する事が可能です。

スクリプト/アドインのフォルダパスを知る

登録されたスクリプト/アドインのフォルダ位置を知る為には、"スクリプトとアドイン"
ダイアログの "詳細" を開くことで見る事が出来ます。
f:id:kandennti:20210215160954p:plain
直接フォルダを開きたい場合は、該当する項目上を右クリックする事で "ファイルの場所を開く"
が表示されるので、こちらの方が速いです。・・・開発者向けですが。

スクリプト/アドインの登録を解除する

以前は、上記の右クリックで表示される項目の中に "削除" が有ったのですが、紛らわしい
(実際にファイル類を削除するわけでは無く、登録を解除していた)と言う理由で
機能自体が廃止されました。
Mod the Machine: Un-remove Fusion 360 add-in
(個人的には復活してほしいです)

この方法が無くなったため、登録解除の方法は1つです。それはファイル構成ルールに
違反する事で勝手に解除されます。簡単な方法としては、
・登録時とは異なる位置にフォルダを移動する
・フォルダ名、又はファイル名を変更する
・フォルダ、又はファイルを削除する
等です。



想像していた以上に長くなりました。(逆にわかりにくいかも)

apperを食す4

こちらの続きです。
apperを食す3 - C#ATIA


やっと完成したのでgithubにupしました。
GitHub - kantoku-code/Fusion360_Two-turn_Mobius_strip: Create a two-turn Möbius strip.

・結果的にCustom Feature化することを断念
・本当は指定したスケッチと同じコンポーネントに作成したかったが
 位置が合わない為、断念。

apperに触れる為の練習と思えば、それ程悪くもなかったかな?
と思う事にしています。

apperを食す3

こちらの続きですが、apperは関係ありません。
apperを食す2 - C#ATIA

ある程度整って、日本語表示も出来るようになったので公開しようと
思ったのですが、またコンポーネントが上手く対応できていない・・・。

f:id:kandennti:20210210185118p:plain
左はプレビュー状態で、目的の所(緑印)に表示されていますが
右の出来上がる位置が違ってます。
複数あるのは、色々と計算を変更した末の傷跡・・・正しい位置に行かない。

これだけガッツリ書いたのに。
NativeObjectとProxyの理解とモロモロ1 - C#ATIA