Joint

Model ElementJointを使用して、2つのボディ間の理想化されたコネクターを作成します。

クラス名

Joint

説明

Jointは、低次対偶拘束のセットを定義します。物理的に、このジョイントは、特定の方向のみの相対的並進および / または回転運動が可能な2つのあわせ面から成ります。これらの面は取り去られ、その関係性は常に2つのボディ上のポイントと方向間の代数拘束方程式のセットとして表されます。

属性の概要

名前 プロパティ コマンドで変更可能か 設計可能か
id Int ()    
label Str ()  
i Reference (Marker)
j Reference (Marker)
type Enum (Type, default= "SPHERICAL", required=True)    
pd Double () FDのみ
pitch Double () FDのみ
ic Double (None, count=2)   FDのみ
ictran Double (None, count=2)   FDのみ
icrot Double (None, count=2)   FDのみ
active Bool ()  
virtual Bool ()  

* Type=("CONVEL"、"CYLINDRICAL"、"FIXED"、"HOOKE"、"PLANAR"、"RACKPIN"、"REVOLUTE"、"SCREW"、"SPHERICAL"、"TRANSLATIONAL"、"UNIVERSAL")

使用法

Joint (i=objmarker, j=objmarker, type=string_joint_type, optional_attributes)

属性

i
既存のマーカーへの参照。
1つ目のボディ上の結合を定義するマーカーを指定します。ボディは、剛体、弾性体、または質点体のいずれかです。
必須です。
j
既存のマーカーへの参照。
2つ目のボディ上の結合を定義するマーカーを指定します。ボディは、剛体、弾性体、またはポイントボディのいずれかです。
必須です。
type
("CONVEL"、"CYLINDRICAL"、"FIXED"、"HOOKE"、"PLANAR"、"RACKPIN"、"REVOLUTE"、"SCREW"、"SPHERICAL"、"TRANSLATIONAL"、"UNIVERSAL")のいずれかの文字列。
iマーカーとjマーカー間の拘束結合のタイプを指定します。
必須です。
id
整数
要素識別番号を指定します。この番号は、モデル内のすべてのJointオブジェクトの中で一意にする必要があります。
省略可能です。MotionSolveは、IDが指定されていない場合、自動的にこれを作成します。
値の範囲:id > 0
label
文字列
Jointオブジェクトの名前を指定します。
省略可能です。MotionSolveが代わりにラベルを作成します。
pitch
倍精度
スクリュージョイントのピッチを定義します。このピッチによって、このスクリュージョイント内の並進運動と回転運動の比が決まります。
type="SCREW"の場合は必須です。そうでない場合は、指定しないでください。
値の有効範囲:pitch > 0
pd
倍精度
ラックアンドピニオンギアジョイントのピニオンギアのピッチ円直径を定義します。
type="RACKPIN"の場合は必須です。そうでない場合は、指定しないでください。
値の有効範囲:pd > 0
ic
2つの倍精度値のリスト
並進ジョイントと回転ジョイントのどちらかの初期速度と初期変位を指定します。
この属性は、type="REVOLUTE"またはtype="TRANSLATIONAL"の場合にのみオプションで指定できます。
icには、2つの数値が必要です。
ictran
2つの倍精度値のリスト
円筒ジョイントの初期並進速度と初期並進変位を指定します。
この属性は、type="CYLINDRICAL"の場合にのみオプションで指定できます。
ictranには、2つの数値が必要です。
icrot
2つの倍精度値のリスト
円筒ジョイントの初期回転速度と初期回転変位を指定します。
この属性は、type="CYLINDRICAL"の場合にのみオプションで指定できます。
icrotには、2つの数値が必要です。
active
ブーリアン
"TRUE"または"FALSE"のどちらかを選択します。
  • "TRUE"は、要素がモデル内でアクティブであり、システムの動作に影響を与えていることを示します。
  • "FALSE"は、要素がモデル内で非アクティブであり、システムの動作に影響を与えていないことを示します。エンティティがモデルから削除される場合とほとんど同じですが、必要に応じて“ON”にできる点が異なります。
省略可能です。指定しない場合、activeはデフォルトで"TRUE"になります。
virtual
ブール
仮想拘束なのか通常の拘束なのかを定義します。"TRUE"、または"FALSE"を選択します。
  • "TRUE"は、拘束が仮想拘束として実装されることを示します。
  • "FALSE"は、拘束が通常の代数拘束として実装されることを示します。

省略可能です。指定しない場合、virtualはデフォルトで"FALSE"になります。virtualの詳細については、Constraint: Jointをご参照ください。

例1

ボディp3とp4間の円筒ジョイントを作成します。

既存のポイントpcで指定された位置

全体座標系x軸に沿ったZ軸
zpval = pc + Vector(1,0,0)
p3.C  = Marker (body=p3, qp=pc, zp=zpval, label="p3.C")
p4.C  = Marker (body=p4, qp=pc, zp=zpval, label="p4.C")
jcyl  = Joint  (i=p4.C, j=p3.C, type="CYLINDRICAL", label="Joint #1")

例2

初期並進速度および変位を既存の円筒ジョイントjcylに追加します。
jcyl.ictran = (3.142, 2.71828)

例3

円筒ジョイントを作成して使用するための独自の単純な関数を作成します。
#Define the function first
def CylindricalJoint (ibody, jbody, location, axis, label, **kwds):
  """
    ibody    - A rigid body, point mass or flex-body
    jbody    - A rigid body, point mass or flex-body
    location - A Point
    axis     - A Vector
    label    - A name for the joint
  """

  #Coordinates of a point along the axis of rotation 
  zpval = location + axis

  i = Marker (body=ibody, qp=location, zp=zpval)
  j = Marker (body=jbody, qp=location, zp=zpval)

  jcyl = Joint (type="REVOLUTE", i=i, j=j, label=label, **kwds)
  
  i.label = label + " I Marker"
  j.label = label + " J Marker"

  return jcyl

#Create a cylindrical joint using the convenience function described above
pc    = Point (23.1, -46.2, 69.3*math.sin(0.436332))
zaxis = Vector(1,0,0)
label = "Joint #1"
jcyl  = CylindricalJoint (p3, p4, pc, zaxis, label, ictran=(3.142, 2.71828))

例4

ジョイントを作成してから、そのIマーカーとJマーカー間の変位要求を定義します。
#Define the joint
pc    = Point (23.1, -46.2, 69.3*math.sin(0.436332))
zaxis = Vector(1,0,0)
label ="Joint #1"
jcyl  = CylindricalJoint (p3, p4, pc, zaxis, label, ictran=(3.142, 2.71828))

#Now define the request
comment = jcyl.label + " Displacement"
r1    = Request  (type="DISPLACEMENT", i=jcyl.i, j=jcyl.j, comment=comment)

例5

“dot”演算子を使用したジョイントの属性の“取得”。

1つ目の例を使用してジョイントオブジェクトが作成されているものとします。
jcyl  = Joint  (i=p4.C, j=p3.C, type="CYLINDRICAL", label="Joint #1")
dot演算子は、次のように、ジョイントの属性を取得するために使用できます:
iMarker = jcyl.i         # The I marker for the joint jcyl
jtype   = jcyl.type      # The type of the joint jcyl
iBody   = iMarker.body   # The body to which iMarker belongs
iMass   = iBody.mass     # The mass of the body to which the iMarker belongs

コメント

  1. プロパティの概要、使用理由、および拡張方法については、プロパティをご参照ください。
  2. Jprim (...)メソッドを使用して、このAPIでジョイントプリミティブモデリング要素を定義します。XMLシンタックス内の次のジョイントタイプがジョイントプリミティブと見なされます:
    • "INLINE"、"INPLANE"、"ORIENTATION"、"PARALLEL_AXES"、"PERPENDICULAR"、"PLANAR"
  3. Jointの詳細については、Constraint: Jointをご参照ください。
  4. virtualの詳細については、Constraint: Jointをご参照ください。