表記とシンタックス

MotionSolveの入力フォーマットは、拡張マークアップ言語(XML)に基づいています。この入力フォーマットはMotionSolve XMLと呼ばれています。このセクションでは、MotionSolve XMLの表記とシンタックスについて説明します。また、MotionSolve XMLファイルの生成方法についても説明します。

MotionSolve XMLファイルはいくつかの要素に分かれます。各要素は、特定のMotionSolveモデリングまたはコマンド要素を定義します。要素は標準のXMLスタイルで区切られます:

<Element_Name
</Element_Name>
または次のように短縮されます:
<Element_Name
/>
または次のように1行に短縮されます。
<Element_Name />

省略記号(...)は、複雑なシンタックスを短くするために、ステートメントのセクションを省略したことを意味します。モデリングまたはコマンド要素に入れ子の要素が含まれている場合は、外側の要素を短縮形で記述することはできません。

MotionSolve XML要素には、定義するモデリングまたはコマンド要素に固有の属性のセットが含まれています。マニュアルでは、要素、属性、およびそれらの値は、必ず青色で表示されます。

MotionSolve XML属性は大文字と小文字が区別されません。ソルバーでは、以下はすべて等価です。

SENSOR_EVENT, Sensor_Event, sensor_event
一般にMotionSolveで従っている規則は次のとおりです:
  • 要素名は、先頭の文字を大文字にして、単語間をアンダースコアで区切ります。以下に例を挙げます:
    Sensor_Event, Body_Rigid, Param_Transient, Reference_Marker
  • 属性名は小文字で表記されます。以下に例を挙げます:
    stability, mass_unit, integrator_type, inertia_xy

属性には、1つの以上の値を関連付けることができます。ジェネリック値は、通常、次のように斜体で示されます:

<Sensor_Event
       ID = "integer"
       …  >
</Sensor_Event>
場合によっては、属性が値のリストを持つことがあります。値は1つ以上の空白で区切られます。以下に例を挙げます:
<Contact
       ...
       i_graphics_id = "123 456 789 321 654 987"
       ...

/>
キーワード間の空白は、XMLパーサーによって区切り文字として扱われます。わかりやすくするために、このマニュアルでは、必ず、キーワードごとに行を分けていますが、以下は等価です:
  • <Reference_Variable
           id   = "1"
           type = "EXPRESSION"
           expr = "VX(301)"
    />
  • <Reference_Variable id="1" type="EXPRESSION" expr="VX(301)" />
キーワードとその値の間の空白はXMLファイルパーサーでは無視されます。以下は等価です。
...          ...          ...
id = 1234    id=1234      id   =   1234
...          ...          ...

角括弧(“[”と“]”)はオプション属性を示します。“[”と“]”は要素の一部ではなく、属性とその値が省略可能であることを表すためだけに存在します。例えば、以下のステートメントでは、属性labelが省略可能です。これは、構文的に次のように表されます:

<Sensor_Event
       id  = "integer"
      [label = "This is a label"]
       ...
/>

選択肢のセットの中から1つのメンバーを選択する必要がある場合は、選択肢全体を中括弧(“{”と“}”)で囲み、それぞれの値を“|”で区切ります。下の例では、EXPRESSIONUSERSUBのどちらかを選択する必要があります。

<Sensor_Event
       id   = "integer"
       type = {"EXPRESSION" | "USERSUB"}
       …

/>

属性値

属性には、複数種類の値を含めることができます。必須の値タイプは、必ず、モデリングおよびコマンド要素のフォーマット指定で示されます。

  • stringは、キーワードの値を任意の文字列にできることを意味します。
  • integerは、値を整数にする必要があることを意味します。整数が必要な状況で実数値データが提供された場合、データは格納される前に整数フォーマットにキャストされます。
  • realは、値を実数にする必要があることを意味します。科学的記数法を使用して実数値データを表すこともできます。実数値が必要な状況で整数値データが提供された場合、データは格納される前に実数に変換されます。
  • motionsolve_expressionは、値をMotionSolveが理解できる適切な表現にする必要があることを意味します。
  • valid_path_nameは、値が特定のファイルの完全なパス名であることを示します。この規則は、オペレーティングシステムによって異なります。
  • ブール値は、"TRUE"または"FALSE"で示されます。これらが斜体で表記されることはありません。
  • 値が特定の文字列の場合や“二重引用符”で囲まれている場合、値自体は斜体で表記されません。
キーワード値は、空白を含めたり、複数の行に分割したりすることはできません。キーワード値の正しくない定義を以下に示します:
...         ...
ID.=.1.234  HALT="T.RUE"
...

ユーザーサブルーチンパラメータ

usrsub_param_string = "USER(par_1, ..., par_n)" 

SENSOR_EVENTモデリング要素の完全なフォーマット指定の例を以下に示します。ドキュメントを見やすくするために空白行が追加されています。それらは必須ではありません。
  <Sensor_Event 
      ​label                 = "string" 
      ​id                    = "integer" 
      ​value                 = "real"{type                  = "EXPRESSION" 
      ​expr                  = "motionsolve_expression"| 
      ​type                  = "USERSUB"  
      usrsub_dll_name       = "valid_path_name" 
      ​usrsub_param_string   = "USER(par_1, ..., par_n)"| 
      ​type                  = "USERSUB"  
      script_name           = "valid_path_name" 
      interpreter           = {"PYTHON" | "MATLAB"} 
      ​usrsub_param_string   = "USER(par_1, ..., par_n)"}[compare               = { "GE" | "LT" | "EQ" } ][evaluate_id           = "integer"][error_tol             = "real"][return                = {"TRUE" | "FALSE"}]/>