複合ジオメトリ作成の最適解はFourBarサンプル
公式ヘルプの「複合ジオメトリの作成」よりも、公式のFourBarサンプルの実装が、ベストプラクティスに見えるのですが、解説が無いため初心者には厳しかった。(泣き)
ここにメモを残します。
数日前に作成した記事よりも、本記事の方が効率よく記述できます。
なぜ「FourBarサンプル」の方がよいのか?
比較表を作ってみました。
コードを書く場所 | 初期化タイミング | パラメータを書く場所 | |
---|---|---|---|
「複合ジオメトリの作成」 | MATLABコードまたは、MATLABファイル | 「ソースから再初期化」ボタン | MATLABコードまたは、MATLABファイルの中 |
「FourBarサンプル」 | マスクエディタの「コード」タブ | 初期化時に自動実行 | マスクエディタの「パラメータとダイアログ」タブ |
- MATLABコードに直に書く場合、コピペできない
- MATLABファイルの場合、ファイルを別で用意したり、編集後に「ソースから再初期化」ボタンを押す必要がある
- MATLABコードの中にパラメータを記述する場合、パラメータの微調整のたびにコードを書き換えることになる
- パラメータをマスクから引っ張る場合、Mコードとサブシステムとのアクセス関数を記述する必要があり面倒
- アクセス関数を記述する場合、サブシステムやslxのファイル名が変更されるたびに、Mファイルを編集する必要あり
など、面倒ごとが多かったです。
FourBarサンプルに沿った記述の方が、ジオメトリ情報をきれいな形で記述することができます。
複合ジオメトリの編集
サブシステムの中にExtruded Solidを用意して複合ジオメトリをセットする準備をする
直方体のBrick Solid(レンガソリッド)ではなく、Extruded Solid(押出しソリッド)を使ってBodyを作ります。
Extruded Solidを使うことで、Fusion360のスケッチの押出しのようなイメージで、部品を作ることができます。
公式のFourBarサンプルが大変参考になりますが、Initialization()にコールバックで形状データの生成処理を記述する
マスク編集のコードで複合ジオメトリを記述する
FourBarのCrank Linkの「マスク編集」を開いてみる。
パラメータとしてリンクの長さや幅などを設定している。
「コード」タブを選択すると、初期化とコールバックのところにコードが書けます。
パラメータにもアクセスできるので、バラメータを変更すると初期化コードが呼び出されて形状データが生成されます。
コードの中のleft_end_x_section 変数に形状データを入れているので、サブシステムの中の「Cross-section」= left_end_x_sectionとしておけば形状が反映されます。
アイコンを変更する
マスクの編集の「アイコン」タブで、アイコンも追加・編集ができます。
実行したときに表示されるリンクのスクリーンショットを貼り付けたpngファイルを作って、適当なディレクトリに保存しました。
プロジェクトの下のslxファイルを置いているディレクトリ : '05_LinkForm'
アイコンイメージを保存しているディレクトリ : 'images'
アイコンファイル : 'link01.png'
ソルバーの設定
デフォルト設定のままだと、動かしたときにあまりにもガタガタなので、以下の様に調整する。
ode45を選択し、最大ステップサイズと許容誤差を1e-6に調整。
まとめ
複合ジオメトリを使ってリンク部品を作るとき、以前はMファイルなどを複数作って手動実行して初期化していましたが、この方法を使うとサブシステムのマスク編集の中で完結させることができます。
大変便利なのですが、ヘルプからこのやり方にたどり着くのは初心者には至難の業なので、自分用に記録しました。