CADから算出された重心ポイントを取得するスクリプト
Overview
Altairの機構解析・マルチボディソリューションのMotionViewはPython APIを提供しており、様々な自動化が可能です。
本記事では、CADから算出された重心位置にジョイントを配置するスクリプトを紹介します。
サンプルスクリプト下記です。
from hw import mview m=mview.getModel() p=m.b_Base.geomprops.cg mview.Joint(b1='b_Base',b2='B_Ground',origin=p,type='FixedJoint')
Pre-Requisite
MotionView / MotionSolveのインストールが必要です。ダウンロード、インストール方法はこちら。
本記事のスクリプトを実行するには、添付のCADをダウンロードしてください。
Usage/Installation Instructions
スクリプトの実行
添付のCADファイル4bar.x_tをMotionViewにドラッグアンドドロップすると、CADが読み込まれ、ボディとグラフィックが自動生成されます。
ビューでPython ウィンドウを有効にします。デフォルトでは画面下にPythonウィンドウが表示されます。
下記Pythonコマンドをコピーします。
from hw import mview m=mview.getModel() p=m.b_Base.geomprops.cg mview.Joint(b1='b_Base',b2='B_Ground',origin=p,type='FixedJoint')
MotionViewのPythonウィンドウに貼り付けて実行すると、b_Baseの重心位置にFixed Jointが作成されます。
解説
from hw import mview m=mview.getModel()
MotionViewのpythonライブラリであるmviewのインポートと、現在MotionViewで開いているモデルを取得し、変数mに格納するコマンドです。
p=m.b_Base.geomprops.cg
ボディb_BaseのCADから算出された重心ポイントを変数pに格納するコマンドです。
pythonコマンドで参照可能なものは基本的に、MotionView内のExpression Builderで参照できるものと対応しています。
たとえば、適当にポイントを作成し、ポイント座標xからExpression Builderを起動します。
Propertiesのツリーを展開すると、ボディb_Body下にInertia PropsというCADから算出された情報が格納されており、その中に重心ポイントcgがあります。
これを選択すると、b_Body.geomprops.cgというコマンドが表示されます。
pythonで使用する場合は、モデル変数mに.繋げることで、このポイントを参照できます。
mview.Joint(b1='b_Base',b2='B_Ground',origin=p,type='FixedJoint')
ジョイントを作成するコマンドです。引数の詳細はヘルプJoint (altair.com)をご確認ください。
originとして先に格納したpを参照すれば、CADで算出した重心位置にジョイントが作成されます。
Post-Requisite
使用製品:Altair MotionSolve/MotionView
MotionView PythonAPIヘルプ:MotionView Python Reference Guide (altair.com)
よくあるエンジニアからの質問はこちら