みなさん こんばんは
大規模アセンブリ(パーツ数1000以上)で、モーションリンクやモーションスタディを
使って、一部の子assyを動かし、全体の動きの確認や干渉チェックを行えるようにするには
どうしたら良いのか考えてみました。
(他の手段でも出来る方法はあると思いますが、一つの方法として)
通常に組み上げたパーツ数の多い装置を動かそうと思うと、動作が重くなり殆ど動かなく
なります。(PCスペックを最高のレベルに上げれば判りませんが)
考え方としては、通常に組み上げた装置とは別に動作確認・干渉チェックのためのモデルを別に作ります。
*予め、Assy_motion(仮名)等の別フォルダを作っておくと便利です。
*このフォルダに関係するファイルを順次入れておきます。
大規模アセンブリを作っている場合、幾つかの子assyを親assyにリンク付けで配置していると
仮定しています。 リンク付けで無くても大丈夫です。こちらの方が一手間省けます。
Inventorのシュリンクランプの様な感じです。←あくまでも感じです!
装置の中で、動きの有る部分(エアーシリンダーやスライドレールや回転等)と
動きの無い部分をassyの中で確認します。動きの無い部分は、下記の要領でボディ数を減らして
再度、親assyに子assyとしてリンク付けで配置します。
① 動きの無い子assyを結合コマンドを使って、一つのボディを作ります。
a: リンク付けで配置している場合、リンクの解除が必要です。
b: その為、必要に応じて元のアッセンブリファイルを違う名前等で別に作ります。
(例:布チャックユニット_type-C → motion_布チャックユニット_type-C)
c: リンクの解除時には、”サブコンポーネントを含める”を指示します。
リンクしているコンポーネント数が多い時は、10-20コンポーネント位づつ解除した方が
良さそうです。
d; 結合コマンドを使う時の注意は、新規コンポーネントとツールを維持にチェックします。
e: ツールボディの選択で、未選択の部分がある場合、動きや干渉に関係ある場合は、
マウスを使って、追加していきます。
② 出来た新規コンポーネント251を見ると、ボディ数1個になりました。
元のボディは174個です。
a: この新規コンポーネント251をアクティブにして右クリックでエクスポート(f3d)します。
今回の場合でf3dのファイル容量は3.2MB位ですが、stepだとファイル容量が12.7MB位になります。
③ この様にして、結合したボディを作って行きます。
a: エアーシリンダーやスライドレール等の動きがある部品は、そのまま使います。
④ 親assyに、結合したボディをリンク付けで配置していきます。
添付写真の説明です。
写真1 ボディ数が174ある子assy(リンク付けで配置)を例に
写真2・3 元のアッセンブリファイルを”名前を付けて保存”で別ファイルを作ります。
次に、”サブコンポーネントを含める”でリンクを解除します。
写真4・5 結合コマンドを使って、ボディを選択します。
”新規コンポーネント”及び”ツールを維持”にチェックします。
未選択の部分で干渉等に必要な部分があればマウスで選択します。
写真6・7 新しいコンポーネント251が作られます。この場合のボディは1個ですね。
新しく作られたコンポーネント251をアクティブにして、右クリックで
”エクスポート”をします。 ファイルタイプはf3dにします。
この時のダイアログで通常はローカルコンピュータにチェックが入っていますが
クラウド内のプロジェクトに保存で、先に作ったファルダを指定すると、
少しは手間が省けます!
写真8 チャックの子assyですが、これだけでも72ボディあります。
写真9 写真8の子assyを結合コマンドを使うと、ボディ数が7~8になります。
このチャックは、2つのシリンダーで3つの動きをするのですが、個々の状態で
結合コマンドを使って3種類の形状を作っています。
写真10 本体フレームの子assyですが、357ボディあります。
写真11 写真10の子assyを結合コマンドを使うと、ボディ数が2になります。
写真12 装置全体ですが、stepファイルでインポートした状態です。
左側のユニットはアイマークで消しています。見えているボディ数が3207あります。
写真13 写真12の装置と同じ状態に結合コマンドを使ったパーツをリンク付けで配置しています。
ボディ数は、184です。 これ位なら、モーションリンクやモーションスタディを使って
動かす事が可能です。
かなり、手間が掛かりますが、Fusion360で大規模アセンブリを動かす方法の一つとして提案してみました。
参考になる方は少ないかな?
写真 1
写真 2
写真 3
写真 4
写真 5
写真 6
写真 7
写真 8
写真 9
写真 10
写真 11
写真 12
写真 13
ビデオのURLと下記2点のファイルを添付致します。
Assy-motion_布チャックユニット_type-C (3MB)
Test_motion-link_2021-02-16 (23MB)
Assy_motion-study
Hidetoshi Wada
Mechanical designer
解決済! 解決策の投稿を見る。
回答者: kandennti. 解決策の投稿を見る。
回答者: kandennti. 解決策の投稿を見る。
このボリュームを動かそうとする事自体に唖然としました。
APIでリンク解除は出来るんですよね・・・。
https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-22CA486A-C108-4191-8F7D-2AA14571E490
エクスポートも出来るんですよ・・・。
@kandenntiさんへ おはようございます。
>APIでリンク解除は出来るんですよね・・・。
>https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-22CA486A-C108-4191-8F7D-2AA14571E490
>エクスポートも出来るんですよ・・・。
もう少し詳しく教えてください。
リンク解除とエクスポートがもっと簡単に出来るのでしょうか?
よろしくお願いいたします。
Hidetoshi Wada
Mechanical designer
結合コマンドを使う前に、選択→選択ツール→サイズで選択→を使う方法も追加します。
① 動きの無い子assyを結合コマンドを使って、一つのボディを作ります。
a: リンク付けで配置している場合、リンクの解除が必要です。
b: その為、必要に応じて元のアッセンブリファイルを違う名前等で別に作ります。
(例:布チャックユニット_type-C → motion_布チャックユニット_type-C)
c: リンクの解除時には、”サブコンポーネントを含める”を指示します。
リンクしているコンポーネント数が多い時は、10-20コンポーネント位づつ解除した方が
良さそうです。
d; 結合コマンドを使う時の注意は、新規コンポーネントとツールを維持にチェックします。
e: ツールボディの選択で、未選択の部分がある場合、動きや干渉に関係ある場合は、
マウスを使って、追加していきます。
f: 結合コマンドを使う時ですが、先に右上にある選択→選択ツール→サイズで選択を使い
選択した後に、結合コマンドをクリックします。
このサンプルのファイルで結合するまでの時間は約3分位掛かります。
200ボディ位で3分位の感じです。
Hidetoshi Wada
Mechanical designer
@hide-wada さん
実用的ではないのですが、リンクを解除して "C:\Temp\test.f3d" としてエクスポートする
サンプルスクリプトです。(念のため保存してから実行してみてください)
#Fusion360API Python script
import adsk.core, adsk.fusion, traceback
_app = adsk.core.Application.cast(None)
_ui = adsk.core.UserInterface.cast(None)
def run(context):
try:
global _app, _ui
_app = adsk.core.Application.get()
_ui = _app.userInterface
des :adsk.fusion.Design = _app.activeProduct
root :adsk.fusion.Component = des.rootComponent
# occ :adsk.fusion.Occurrence
# occs = [occ for occ in root.allOccurrences if occ.isLightBulbOn]
# リンク解除
for occ in root.allOccurrences:
if occ.isReferencedComponent:
occ.breakLink()
# f3dエクスポート
path = r'C:\Temp' # エクスポートフォルダ
expMgr :adsk.fusion.ExportManager = des.exportManager
f3dOpt = expMgr.createFusionArchiveExportOptions(path + r'\test.f3d')
expMgr.execute(f3dOpt)
except:
if _ui:
_ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
本来であれば、"表示しているもののみ" 等に条件が必要かと思いますし、
リンクを解除しっぱなしです。
試していないのですが、ひょっとしたらリンクを解除せずに新たなドキュメントを
作成し、Bodyをドンドンコピペしてエクスポート出来るかもしれないです。
時間が出来たら、ちょっと試してみます。
本来であれば、多少時間がかかってもジョイントの関係を自動的に判断して
それぞれエクスポート出来ると便利そうなのですが、そこまで考えられるかな・・・。
@kandenntiさんへ こんにちは
色々と考えて頂き、ありがとうございます。
私、pythonの事何も判らないので、書かれているサンプルスクリプトをどうしたら良いのか判りません。
お手すきの時で構いませんので、教えてください。
よろしくお願いいたします。
Hidetoshi Wada
Mechanical designer
@hide-wada さん
もう少し使い道の有りそうなスクリプトにしたので、ファイルを添付しておきます。
スクリプトの登録方法はこちらをご覧ください。
https://kantoku.hatenablog.com/entry/2021/02/15/161734
添付しているファイルは "zip等のファイルで既にフォルダ構成が出来ているもの" で
説明している状態ですが、ファイルの展開時に "スクリプト/アドインのファイル構成ルール"
の状態になっている事を確認してください。
”リンク解除” は、下手をすると元のデータに取り返しのつかないダメージを与えかねない為、
新たなドキュメントにボディをコピペする方法にしました。
スクリプトを実行してもらうと、ファイルを保存するためのダイアログが表示されます。
任意のフォルダ・ファイル名を入力してもらうと、表示されているボディのみを
エクスポートします。
(新たなドキュメントにボディをコピペしドキュメントは破棄してます)
動作についてどの様にするのが良いものか?迷った為、処理を切り替えられるようにしています。
"CloneBrepBody.py" の16行目が
_mode = True
となっています。 この状態では、上記で説明したようにエクスポートまで行います。
この部分を
_mode = False
に変更すると、新たなドキュメントにボディをコピペし、エクスポートは行いません。
ちょっと敷居が高いのですが、試して頂いてどちらが良いのか教えて頂けると助かります。
又、"結合コマンド" については行っていません。但し、対応出来る可能性が高いです。
(時間が無く、この部分がやりかかった状態のファイルになっています)
正直な所、スクリプトは使い勝手が悪く、頻繁に使用するのであればアドイン化して
通常のコマンドの様にツールバー上に表示させるようにします。
@kandenntiさんへ おはようございます。
メッセージ7で書かれているスクリプトの確認ですが、下記の③の部分を行うと考えて宜しいでしょうか?
新規コンポーネントをアクティブにした状態で、スクリプトを実行すれば良いと言う事ですね。
順序として
① リンク付けで配置したassyの場合、全てのコンポーネントのリンク解除を行う。
② 結合コマンドを使って出来た新規コンポーネントを作る。
③ 新規コンポーネントだけをアクティブにして、右クリック・エクスポートを使い、
新たに名前を付けて(元assyと判別の為)モーション用のフォルダに入れる。
>スクリプトを実行してもらうと、ファイルを保存するためのダイアログが表示されます。
>任意のフォルダ・ファイル名を入力してもらうと、表示されているボディのみを
>エクスポートします。
>(新たなドキュメントにボディをコピペしドキュメントは破棄してます)
_mode = True ←この場合は、判るのですが。
_mode = False :新たなドキュメントにボディをコピペし、エクスポートは行いません。
Trueの時は、新しいファイル名のファイルをエクスポートして、元からは削除すると言う事でしょうか?
_mode = False :このコピペし、エクスポートを行わないと言うのがどういう状態なのか良く判りません。
新規コンポーネントを残して、エクスポートは行わないと言う事は、新しいファイル名のファイルが
一つ増えると言う事かな。
よろしくお願いいたします。
Hidetoshi Wada
Mechanical designer
@hide-wada さん
Trueの場合は、
新たなドキュメントを作成し表示されているボディのみをコピペ。
そのファイルをダイアログで指定した先にエクスポート。
その後開いている新たなドキュメントは閉じます。
Falseの場合は、
新たなドキュメントを作成し表示されているボディのみをコピペだけです。
新たなドキュメントはそのまま開きっぱなしで、エクスポートしていません。
(その為、ファイルを保存するダイアログが出ません)
その辺りの操作を行った動画を添付しておきます。
@kandenntiさんへ こんにちは
確認して良かった、違う部分のスクリプトだと思っていましたので! ビデオ添付ありがとうございました。
下記の①の部分を行ってくれるのですね。
現状、リンク解除後に新しい名前を付けてファイルを保存しますので、
これがワンアクションで出来ると助かります。
それに、ファイル数が多いとリンク解除に結構時間が掛かるので、こちらの方が早いかもしれません。
では、これから試してみます。
>順序として
>① リンク付けで配置したassyの場合、全てのコンポーネントのリンク解除を行う。
>② 結合コマンドを使って出来た新規コンポーネントを作る。
>③ 新規コンポーネントだけをアクティブにして、右クリック・エクスポートを使い、
> 新たに名前を付けて(元assyと判別の為)モーション用のフォルダに入れる。
Hidetoshi Wada
Mechanical designer
@kandenntiさんへ こんにちは
早速、スクリプト実行してみました! 凄い! リンク解除よりも数十倍早い! 数秒でした。
スクリプト実行する前は、Falseはどうかな?と言う印象でしたが、逆でした。
最初に、Trueでダイアログで指定した先にエクスポート(c:~download)しました。
この方法は、再度Fusion360へアップロードが必要になります。
それと、こちらはPCのフォルダにエクスポートするので、PC側で保存が可能。
次にFalseに切り替えて、実行! (こちらの方が良いと思います。)
無題と言う未保存の状態で、ボディだけがコピーされています。
未保存の状態のまま、選択ツールのサイズで選択を使い、必要なサイズのボディを選択(画像は全て)
次に結合コマンドを使って、結合します。 (ボディ数321個で、約20-30秒掛かります。)
出来たコンポーネント1を右クリックで名前を付けてエクスポートします。
(エクスポートにも20-30秒掛かります。)
これで、無題の未保存のファイルは破棄しても大丈夫。
本当は、最初に名前を付けて保存しておいた方が良いと思うけど!
Falseでの写真を順次添付します。
① ボディ数321個のリンク付きのassyを使います。
② @kandennti さんが作ってくれた、CloneBrepBodyを実行します。
③ 新たなドキュメントにコピペするか確認画面
④ 無題と言うドキュメントにボディがコピーされます。
⑤ 選択ツール→サイズで選択を使い(今回は全て)、ボディを選択
⑥ 結合コマンドを使って(新規コンポーネントにチェック)OKします。
⑦ 無題のドキュメント内にコンポーネント1(ボディ数17個)が作成されます。
⑧ コンポーネント1をアクティブにして右クリック→エクスポート
このダイアログで、ファイル名と保存先を指定します。
⑨ 保存したコンポーネント1を開きます。
これなら、大規模アセンブリで全てのモーションを作っても、今までよりもかなり手間が省けそうです。
@kandenntiさん 本当にありがとうございました。
それと、今回の操作方法のヒントを頂けた@adachitech7 さんにお礼を申し上げます。
Hidetoshi Wada
Mechanical designer
もうちょっとこれを育てたいと考えています。
データは、この様な状態として説明します。(英語表記ですいません)
通常ファイル名となるTreeのトップ部分を "ルートコンポーネント" と
表現させてください。
1)ルートコンポーネントに直接ぶら下がっているコンポーネント内の
コンポーネントは一体のAssy部品と考えています。
↓
上記画像の ”Component1:1" "Component3:1" の事です。
2)コンポーネント毎に新たなドキュメントを作成し、ボディをコピペ。
↓
上記画像の ”Component1:1" には "Component2:1" のボディを含める。
3)新たなドキュメント内のボディ全てを結合化。
↓
結合の際、エラーになる場合があるので、どうしよう・・・。
4)「2)」のドキュメントを、元のドキュメントと同一のプロジェクト内で
保存する。
↓
元のドキュメント名 + コンポーネント名 のような名称かな?
可能なら(調べてないです)プロジェクト内にフォルダを作成しそこに保存。
5)呼び出しが面倒な為、アドイン化してボタンを作る。
のような事を想定しています。
忘れていましたが、「2)」のドキュメントの原点はルートコンポーネントと
同一位置になります。(元のコンポーネントと原点位置が同じにならない可能性があります)
そのような状態でよろしいのでしょうか?
完成までには、そこそこ時間が必要になりそうです。
@kandenntiさんへ おはようございます。
お手数をお掛け致します! でも、これが出来ると本当に嬉しいです。
2)までは、今までのスクリプトですね。
これに結合コマンド+エクスポートを追加する感じでしょうか。
色々(と言っても10Assy程度)試した結果ですが、私のPCスペックでは、結合コマンドを使って結合するボディ数を
500パーツ以下にした方が良さそうです。 500パーツ以上になると、エラー(フリーズ等)を起こす可能性が
高くなります。 500パーツ以下だと今の処大丈夫です。
結合時・エクスポート時も結構時間(minで30秒・maxで2-3分)が掛かるので、フリーズしているのかな?と
思う事もありました。 パーツ数だけではなく、形状も関係しているようですね。
>4)「2)」のドキュメントを、元のドキュメントと同一のプロジェクト内で保存する。
> 可能なら(調べてないです)プロジェクト内にフォルダを作成しそこに保存。
出来るならプロジェクト内のフォルダに保存出来ると良いですね。
5)は是非欲しいですね!(笑)
>(元のコンポーネントと原点位置が同じにならない可能性があります)
今回の場合のコンポーネントは、結合されたモデル自体を変更・修正する事は無いので、問題にはならないと思います。
この流れだと、結合する時にボディのサイズ選択等は出来ないので、先にアイマークで表示を消しておけば良いのかな。
時間は、気にしないので大丈夫です。
それと、私の方で何かお手伝い出来る事がありましたら、教えてください。
よろしくお願いいたします。
Hidetoshi Wada
Mechanical designer
@hide-wada さん
"BUNKURO" と言う名称のアドインを公開しました。
https://github.com/kantoku-code/Fusion360_BUNKURO
こちらでは小さなデータでしかテストしていません。
保存・結合のチェックボックスを付けているので試してみてください。
@kandenntiさんへ こんばんは
早速、アドインを作って頂きありがとうございます。
すみませんが、3月11日まで家に戻れないので、戻りましたら早速試して見たいと思います。
よろしくお願いします。
Hidetoshi Wada
Mechanical designer
@kandenntiさんへ こんばんは
早速、インストールして試してみました。
サンプルは、リンク付け配置のモデルでボディ数69個です。
取り敢えず、全部選択(全アイマーク点燈)で行ったところ、2つの部品だけがコピーされ、
その内の一つがBUNKUROフォルダに保存されました。(ビデオ内ではこのファイルは削除しています。)
次に、ボディを減らして(アイマークを消して)37個で行ったら、
消した方のボディ2つがコピーされ、その内の一つがBUNKUROフォルダに保存されました。
このビデオを添付します。
このテストしたリンク付けファイル(ボディ数69個)を添付しますので、
@kandenntiさんの方で試してみてください。
リンク付け以外のモデルは、まだテストしていません。
時間は大丈夫ですので、手が空いた時で構いません。
よろしくお願いいたします。
Hidetoshi Wada
Mechanical designer
@hide-wada さん
サンプルデータありがとうございます。
”良く出来ました って言えたな” と言えるほど、誤った処理してますね。
申し訳ないです。
何となく原因がわかりましたので、明日には直せるかと思います。
@hide-wada さん
こちらで確認する限り、正しく動作するように修正しました。
https://github.com/kantoku-code/Fusion360_BUNKURO
又、最後のダイアログに処理時間を表示させるようにしました。
”説明" 部分が文字化けしている事に今気が付きました・・。
バージョン0.0.2で表示されれば大丈夫です。
@kandenntiさんへ おはようございます。
突貫工事ありがとうございます。 でも無理しないでくださいね。 昔の自分を見ているようで!
本日午後からテストしてみます。
BUNKURO・・・名前の由来で笑いました!
結合コマンドを使って、ボディ数を減らして、ジョイントを付けて配置するのですが、大規模アセンブリを動かすには
ジョイントの付け方によっても影響があるようです。 今、あれこれやってます!
モーションスタディを使う場合、選択するジョイントは、TOP下に配置したジョイントを使わないと、動きが遅く
なるみたいです。 特にエアーシリンダーの場合、普通はエアーシリンダーassyとしてシリンダーボディとロッドを
最初にジョイント(スライダーや円柱状)を付けますが、大規模アセンブリを動かす時は、シリンダーボディとロッドを
TOP下にそのまま配置して、TOP下でジョイントし、このジョイントを使います。
手間ですが、この方がスムーズに動くようです。
手間が掛かるのは元から承知なので! 時間は掛かりそうですが、これから色々と検証してみたいと思います。
何時もありがとうございます!
ps:2021年 3月公開 (R2.0.9849) のアップデートの中の一つで、
>この[位置をキャプチャ]ダイアログは多くのユーザに混乱を招き、多くの場合は不要でした。
>ジョイントまたは位置固定ジョイントを作成する際に、このダイアログは表示されなくなりました。
これは、大規模アセンブリをリンク付けで配置する場合に、助かりますね。
Hidetoshi Wada
Mechanical designer
お探しの情報が見つからないときは、コミュニティで質問しましょう。困っている人がいたら、情報を教えてあげましょう。