Expression Builderの使用

Expression Builderでは、長い式を手作業で入力する必要や式を覚える必要もなく、数式をテキストボックスに入力できます。Expression Builderは、モデルパラメータの関数である数式の構築に使用できます。

MotionViewでは、次の2種類の式を作成できます。

  • パラメトリックな式
  • ソルバー関数

MotionViewでは、HyperWorksのデスクトップで動作するテキストと数値のパーサーであるTemplexを使用して、パラメトリックな式とソルバー関数の両方を評価します。

パラメトリックな式

この式は、モデリングエンティティの値のいずれかをモデル内の別のエンティティに関連付けるために作成されます。パラメトリックな式から返される値のデータタイプは、パラメトリックな式で定義されるエンティティの欄内のデータタイプと一致する必要があります。例えば、パラメトリックな式でMotionViewのポイントの位置を定義している場合、そのパラメトリックな式から実数が返される必要があります。パラメトリックな式から返されたデータタイプが正しくない場合は、“Error Evaluating”のメッセージがデータ入力欄に表示されます。この入力欄は、ポイント、ボディ、ブッシュ、スプリングダンパ、フォースなど、MotionViewのモデリングエンティティのエンティティパネルにあります。

また、パラメトリックな式では、Templexのテキストと数値の言語に用意されている数学演算子と数学関数も使用できます。

例1

モデルの中で変数名として“p_1”と“p_2”を持つ2つのポイントについて考えます。“p_1”のX位置から+10単位離して“p_2”のX位置をパラメトリックに配置するには、Templexのパラメトリックな式を使用できます。“p_1”の“x”座標のパラメトリック値は、データメンバー“x”であり、式“p_1.x”で指定します。したがって、ポイント1のX位置から+10単位離してポイント“p_2”を配置するには、下の図に示すように、式“p_1.x + 10”を“p_2”のX座標欄に入力します。



図 1.
例2

以下の例では、ボディのX軸を中心とした慣性モーメントをパラメータ化するためにExpression Builderを使用します。このパラメトリックな式では、変数名が“b_body”であるボディの重量を、旋回半径を表すデータセット変数“k”の2乗で乗算します。重量と旋回半径の実際の値を指定するには、変数名に続けて“.”とデータメンバー名を記述する必要があります。下の例では、ステートメントの“b_body.mass”と“ds.k.value”を指定してボディの重量と旋回半径の値を使用しています。



図 2.

ソルバー関数

このタイプの式では、未評価の文字列と評価済みのパラメトリックな式の組み合わせを使用します。ソルバー式を使用して、MotionViewでモデルをエクスポートするときにソルバー入力デックで作成される関数を構築します。この式は、ブッシュ、スプリングダンパ、フォースベクトル、モーションなどのMBDエンティティの値を定義します。ソルバー関数は、MotionViewのEntities Propertyタブのいずれかの欄でそのタイプをExpressionに設定している場合の入力タイプです。エンティティがソルバー関数でどのように評価されるかを以下に示します。
  • ソルバー関数は、その全体をバッククォーテーション(``)で囲んで記述します。
  • ソルバー関数内部のパラメトリックな式は中括弧({})で囲まれます。バッククォーテーションで囲まれたソルバー関数がMotionViewによって検出されると、ソルバー入力ファイル(MotionSolve.xmlファイル)にモデルがエクスポートされる際に、中括弧で囲まれたすべてのパラメトリックな式がTemplexパーサーによって評価されます。つまり、中括弧で囲まれたTemplex演算子、関数、および変数名ではなく、評価されたパラメトリックな式がソルバー入力ファイルに書き込まれます。
  • 式の中括弧で囲まれていない部分は、評価されずにソルバー入力ファイルに直接書き込まれます。
  • ソルバー関数がバッククォーテーションで囲まれていない場合、Templexパーサーを使用してMotionViewによって式全体が評価されますが、多くの場合はエラーが発生します。

MotionSolve STEP関数を使用して、MotionViewで次の式が作成されます。

`STEP(TIME,1,0,1.5, 500*DX({m_1.idstring},{m_2.idstring})`


図 3.

ソルバー関数式の評価ルールに従って、MotionViewでは中括弧に囲まれたTemplex値のみが評価され、関数にある他のテキストはすべて無視されます。この特定のケースでは、MotionViewのパラメトリック変数である“m_1.idstring”と“m_2.idstring”が、“m_1”と“m_2”を変数名とするマーカーエンティティのID(文字列形式)に評価されます。したがって、MotionViewによってMotionSolveの入力デックが作成されると、.xmlファイルに以下の図の式が作成されます(m_1とm_2のマーカーIDがそれぞれ30102010と30102011であるとしています)。



図 4.

正しいパラメトリック引数がソルバー関数に指定されるようにするには、以下の図に示すように、Evaluatedチェックボックスをアクティブにしてソルバー式を評価します。



図 5.
注: マーカーとその他のMotionSolveエンティティのIDは、モデルをソルバーにエクスポートするか、MotionViewの“Check Model”操作を実行するまで定義されません。したがって、パラメトリックな式をExpression Builderダイアログボックスで評価すると、Expression BuilderのマーカーIDが空白で表示される場合があります。

Evaluatedチェックボックスをチェックした場合は、Templexパーサーがソルバー関数(中括弧で囲まれたパラメトリック値と式)にのみ適用されます。式にある他の情報の正しい形式はソルバーに依存することから、MotionViewではチェックされません。例えば、Step関数に“stp”と記述した場合、MotionViewでは、Evaluatedがアクティブになっていてもエラーメッセージが生成されません。一方、MotionSolveでは実行時にエラーが発生します。

式の作成

  1. Expression Builderにアクセスするには、パネルを開いてテキスト欄をクリックし、パネル上部の3つのボタンからを選択します。
    図 6.
  2. Expression Builderの上部のテキストボックスには、編集中の式が含まれています。ボックスの任意の場所にカーソルを挿入して欄に直接入力するか、ダイアログの下部にある数字パッドと頻繁に使用する関数のリストを使用して式を作成します。
    ヒント:
    • FontボタンをクリックしてFontダイアログを表示します。ここで、式のフォントタイプ、フォントスタイル、およびフォントサイズを選択できます。
    • Evaluatedチェックボックスをアクティブにして式を評価します。
  3. ダイアログの中央にあるタブを使用して、他のプロパティ名やソルバー関数にアクセスします。
    タブ 説明
    Properties Propertiesタブは、式にエンティティの名称とプロパティ名を挿入するために使用されます。リスト内のエンティティまたはプロパティをハイライト表示すると、そのプロパティの変数名がリスト上に直接表示されます。Addボタンをクリックして、テキストボックスの式にプロパティ名を挿入します。
    ヒント: Filter entities within valid scopeオプションをクリックすると、関連オプションを絞り込むことによって、同じシステム、アセンブリ、または解析にあるエンティティを容易に選択できます。
    Motion Motionタブには、変位、速度、および加速度に関連したMotionSolve関数とADAMS関数が用意されています。関数のボタンを押すと、式内の現在のカーソル位置に、その関数が挿入されます。
    Force Forceタブには、以下の目的のためにフォースとモーメントの測定を提供するMotionSolve関数とADAMS関数が用意されています。
    • フォースが関連付けられたエンティティ(フォース、弾性コネクター、ジョイント、モーションなど)のモデリング
    • 2つのマーカー間のすべてのフォース / トルクの合算
    General Generalタブには、その他のMotionSolve関数またはADAMS関数が用意されています。
    Location LocationタブにはMotionSolveの位置関数が用意されています。これらの関数を使用して、異なる座標フレームにある位置を指定するか、位置属性(ポイントやマーカーなど)を持つ別のエンティティを指定して、グローバルフレームでの位置を見つけることができます。
  4. OKをクリックします。
    新しい式が、パネル内のテキストボックスに表示されます。
ヒント: さまざまな関数の使用の詳細については、MotionSolve Reference Guideの"MotionSolve Functions"トピックをご参照ください。