自動化されたID管理

MotionSolve Pythonインターフェースは、ユーザーの代わりにIDを管理できます。ユーザーはモデリング時にIDを指定する必要はありません。ただし、必要に応じてID付きのエンティティを作成できます。次に例を示します。
# Create a RIGID BODY WITHOUT an ID
blk2 = Part (label="Block-2", mass=2, ip=[9.8e-4,9.8e-4,9.8e-4])

# Create a RIGID BODY WITH an ID
blk3 = Part (id=30101011, label="Block-3", mass=2, ip=[9.8e-4,9.8e-4,9.8e-4])
(IDを持つことができる)任意のオブジェクトのIDを、そのオブジェクトのid属性を使用して取得できます。以下に2つの例を示します:
>>> blk2.id 
1
>>> blk3.id
30101011

IDは、MotionSolve Pythonインターフェース内の1か所のみで、実行時にMotionSolveによって評価される関数式を作成するために使用されます。標準のPythonプログラミングを使用して関数式を作成できます。次の例では、この方法を示します。

次に示すように並進ジョイント上にブロックを作成したとします。
p0 = Point (10,0,0) 
ux = Vector (0,0,1)
ux = Vector (1,0,0)
blk = Part (mass=1, ip=[4.9e-4,4.9e-4,4.9e-4], label="Block")
blk.cm = Marker (body=blk, qp=p0, zp=p0+uz, xp=p0+ux, label="Block CM")

im = Marker (body=blk, qp=p0, zp=p0+ux, xp=p0+uz, label="Joint Marker on Block")
jm = Marker (body=grnd, qp=p0, zp=p0+ux, xp=p0+uz, label="Joint Marker on Ground")
jnt = Joint (type="TRANSLATIONAL", i = im, j = jm, label="Trans Joint")
ここで、このブロックの運動エネルギーを計算できるリクエストを作成します。以下に、その方法を示します。
KE = "0.5 * {m} * (VM({blkcm})**2)".format(m=blk.mass, blkcm=blk.cm.id) 
r1 = Request (type="EXPRESSION", f2=KE, comment="Kinetic Energy of Block")