干渉解析関連のマクロ

287 views
Skip to first unread message

O

unread,
Dec 6, 2014, 7:07:38 AM12/6/14
to inventor-u...@googlegroups.com
干渉解析まわりでマクロを使っている方はどんなことをしていますか?
またはどんな例を知っていますか?

ちなみに私がこれからやりたいのは、
トップアセンブリ(今開いてるアセンブリ)にある全コンポーネント間のみの干渉解析を行うマクロです。
通常機能では2コンポーネント間ずつになるか(→すごい手間)、
下の階層まで全て含んだ総当たり(→すごい計算時間)
になってしまうので。
これ他CADではできたりします。
すでにやってるひといます!?


他にも良いアイデアあれば教えてください。

やまら

unread,
Dec 7, 2014, 1:01:07 AM12/7/14
to inventor-u...@googlegroups.com
こんにちわ。

調べずに、想像で書くので嘘があるかもしれません。

たぶん、Inventorにアセンブリ同士の干渉をチェックする機能はありません。
(内部APIとして存在していないと思われる)

標準の「検査→干渉解析」コマンドを実行すると、プログレスバーが表示されますが、その数字(△△△△/○○○○)は、オカレンス数より大幅に大きいです。
面ごとに総当たりで干渉チェックしているのではないかと思います。

3Dグラフィックスおける早期カリング処理のように、明らかに干渉していないものはオブジェクトまるごと排除すれば、大幅に早くなると思います。

時間が取れれば実験したいところですが、金曜日遊んだ分を取り返さないと(汗

O

unread,
Dec 8, 2014, 10:41:56 AM12/8/14
to inventor-u...@googlegroups.com
やまらさん
コメントありがとうございます。

いろいろと調べながら業務の合間に少しずつ進めていく予定です。
難しいことはできないのでうまくいくかどうかわかりませんが、
完成したら報告させていただきます。

なにか情報がありましたらまたお願いします。

やまら

unread,
Jul 16, 2015, 9:57:36 PM7/16/15
to inventor-u...@googlegroups.com
今更ですが、干渉解析の関数があるのを発見しました。

AssemblyComponentDefinition.AnalyzeInterference

です。

やまら

unread,
Aug 13, 2015, 6:35:23 AM8/13/15
to Autodesk Inventorユーザ会
こんにちわ。

夏休みの研究ということで、VBAで干渉解析のマクロを組んでみました。

とりあえず総当たりしたのですが、標準の機能より致命的に遅いですね。
解析自体ではなく、VBAのループが遅いようです。
毎回、オブジェクトを参照しないように、RangeBoxの値を先に配列にコピーしておけば速くなると思いますが、それどころじゃない遅さです。

早期カリングしたら速くなるじゃないか? ということで、そのコードが入っていますが、今やってみると、カリング処理をせず全検査したほうが有意に速いですね。
(当然、これぐらいのことは標準ライブラリでもやっているのかなぁ)

んで、当初の質問にあった、アセンブリの要素同士の解析ということであれば、AddOccurrencesを再起呼び出ししているのを止めれば、達成できると思います。
添付のコードをいじってみてください。
デバッグ中なので、コードが汚いですが、飽きちゃったのでそのまま公開します。

ではでは。

modInterference.bas

やまら

unread,
Aug 13, 2015, 7:01:17 AM8/13/15
to Autodesk Inventorユーザ会
せっかくなので、トップアセンブリの要素同士だけを総当たりするように直しました。

結果の表示は、ダイアログでも作ってリスト表示するようにしてみてください。
どれとどれか、ということさえわかれば、あとは標準の干渉解析で追い込めば良いと思います。

オカレンス数 : 682
トップアセンブリの要素数 : 40
これで、6秒ぐらいです。
解析は、40 x 40 / 2 = 800回やってます。

以上、ご参考まで。
modInterference2.bas

O

unread,
Aug 16, 2015, 12:57:13 PM8/16/15
to Autodesk Inventorユーザ会
公開ありがとうございます。

ShowErrorDialogをmsgboxに修正することでわたしの環境(やり方?)でもすぐ動きました。
2016で問題なく動きましたし、スピードも全く問題ないと思います。

中身はこれから私も研究してアレンジしていこうと思います。

装置設計等で大規模アセンブリを扱う方には必要不可欠なツールになると思います。

とても有意義な研究テーマだと思います。

O

unread,
Aug 16, 2015, 1:40:58 PM8/16/15
to Autodesk Inventorユーザ会
掲示板をご覧の大規模アセンブリでお悩みの方に
トップアセンブリのコンポーネント同士のみの総当たりがなぜ必要なのかを解説しておきます。

Inventorの干渉解析の問題点は大きく2つあります。
①おねじとめねじの干渉
②大規模アセンブリ対応

今回は②の問題への対応です。

添付のような2万部品からなるモデルに干渉がないことを確認したい場合、
トップアセンブリからセット1でトップアセンブリ上のすべてのコンポーネントを選ぶと、末端の全パーツの総当たりとなり、2億通り近い計算数になり、数十時間を要するため現実的ではありません。
※干渉を総当たりでチェックする組み合わせ数はパーツ数に対して指数関数的に増える。

一方、トップアセンブリにサブアセンブリが10個あれば、その下の2000パーツ程度は上記のセット1の方法でも数分で確認できます。これならば設計の課程や担当者ごとに日々できるレベルです。
これを各サブアセンブリでやっておけば、サブサブアセンブリ内には干渉がないことを確認できます。
ただし、その後、トップアセンブリにある10個がそれぞれ干渉していないことを調べようと思うと、それに該当する機能がInventorにはありません。

これを解決するのが、
トップアセンブリのコンポーネントのみ総当たりするマクロというわけです。
これで大規模アセンブリの干渉解析が可能になります。
干渉解析要望.pdf

やまら

unread,
Aug 19, 2015, 1:23:43 AM8/19/15
to Autodesk Inventorユーザ会
こんにちわ。

お役にたてたようで何よりです。
C#など.NETで組めば、もっと速くなると思うんですがね。
干渉解析自体はInventorの内部APIでやるので速い(というか、変わらない)と思うのですが、VBAだとループを回すだけでも相当の遅さだと、このたび実感しました。
ループというより、内部プロパティーへのアクセスコストかもしれませんが。
また時間ができたら、何か作ってみたいですね。
Reply all
Reply to author
Forward
0 new messages