Marker
Model ElementMarkerは、MotionSolve内の直交右手座標系と参照フレームを定義します。Markerはパートに属している必要があります。ボディは、任意のタイプ(剛体、弾性体、またはポイント)にできます。
クラス名
Marker
説明
ニュートン参照フレーム(地面)は、剛体PARTの特殊なケースと見なされます。
属性の概要
名前 | プロパティ | コマンドで変更可能か | 設計可能か |
---|---|---|---|
id | Int () | ||
label | Str () | ||
part | Reference (Part) | ○ | |
point_mass | Reference (PointMass) | ○ | |
flex_body | Reference (FlexBody) | ○ | |
body | Reference (Body) # Alias | ○ | ○ |
qp | Location (Point(), required=True) | ○ | ○ |
zp | Location () | ○ | ○ |
xp | Location () | ○ | ○ |
xv | Location() | ○ | |
zv | Location() | ○ | |
reuler | Angles () | ○ | ○ |
floating | Bool () | ||
rm | Reference ("Marker") | ||
node | Int () | ||
usexp | Bool () | ||
usexv | Bool () | ||
function | Function ("MARKER_READ()") | ||
routine | Routine () |
使用法
#1: Defined completely in the input file
Marker (body=objBody, optional_attributes)
#2: Defined in a compiled user-written subroutine
Marker (body=objBody, function=userString, routine=string, optional_attributes)
#3: Defined in a Python script
Marker (body=objBody, function=userString, routine=functionPointer, optional_attributes)
属性
- body
- 既存のPart、PointMass、またはFlexBodyオブジェクトへの参照
- qp
- Locationオブジェクトまたは3つの倍精度値のリスト
- zp
- Locationオブジェクトまたは3つの倍精度値のリスト
- xp
- Locationオブジェクトまたは3つの倍精度値のリスト。
- usexp
- ブール
- zv
- Locationオブジェクトまたは3つの倍精度値のリスト。
- xv
- Locationオブジェクトまたは3つの倍精度値のリスト。
- usexv
- ブール
- reuler
- 3つの倍精度値のリスト
- body
- 既存のPart、PointMass、またはFlexBodyオブジェクトへの参照
- function
- 文字列
- routine
- 文字列
- body
- 既存のPart、PointMass、またはFlexBodyオブジェクトへの参照
- function
- 文字列
- routine
- Python内の呼び出し可能な関数へのポインタ
- id
- 整数
- label
- 文字列
- rm
- 既存のマーカーへの参照
- floating
- ブール
- node
- 整数
例
m1012 = Marker (id=1012, label="marker 1012", body=p1000, qp=[1.414,3.142,1.618],
zp=[101.327,3.142,-2.545], xp=[1.414, 3.142, 101.618])
m30303 = Marker (label="joint 3-marker-i", body=p30303)
m30102040 = Marker (id=30102040, label="Marker 2", body=p30102, function="user(1, -0.5, 0.3, 0., 1.57079633, 1.57079633, -1.57079633)",
routine=marker_read)
def marker_read (id, par, npar):
eflg = 0
errflg = 0
r = 3*[0.0]
angle = 6*[0.0]
angle_type = int(par[0])
r[0] = par[1]
r[1] = par[2]
r[2] = par[3]
if angle_type==0: # DCMTX
angle[0] = par[4]
angle[1] = par[5]
angle[2] = par[6]
angle[3] = par[7]
angle[4] = par[8]
angle[5] = par[9]
elif (angle_type == 1) | (angle_type == 2): # Euler angles (313 or YPR)
angle[0] = par[4]
angle[1] = par[5]
angle[2] = par[6]
elif angle_type == 3: # Euler parameters
angle[0] = par[4]
angle[1] = par[5]
angle[2] = par[6]
angle[3] = par[7]
else:
errflg = 1;
return errflg
eflg = py_put_marker(id, r, angle_type, angle)
return errflg
# DVs_
qpx = Dv (label="X coordinate of Point B", b=40)
qpy = Dv (label="Y coordinate of Point B", b=200)
qpz = Dv (label="Z coordinate of Point B", b=350)
# QP
qp = [qpx, qpy, qpz]
# ZP is along x-axis
zp = [qpx+10, qpy, qpz]
# XP is along z-axis
xp = [qpx, qpy, qpz+10]
# Now define the Marker and hold it in the Python variable markerB
markerB = Marker (body=p1, qp=qp, zp=zp, xp=xp, label="markerB")
m2 = Marker (body=p2, qp=m1.qp, zp=m1.zp, xp=m1.xp, label="m2")
図 1.
コメント
- プロパティの概要、使用理由、および拡張方法については、プロパティをご参照ください。
- Markerの詳細については、Reference: Markerをご参照ください。