Reference: Parametric Surface

Model ElementReference_ParamSurfaceは、パラメトリックサーフェス要素を定義します。パラメトリックサーフェスは、uとvの2つの自由パラメータについて定義されます。下の図で、座標系OXYZを基準にしてサーフェスSが定義されているとします。

説明

サーフェス上の任意のポイントPのOXYZでの座標は、2つの自由パラメータについて一意に表すことができます。関数f(u,v)、g(u,v)、およびh(u,v)がPのx、y、およびz座標を定義します。サーフェスの範囲は、サーフェスの最大値と最小値で決まります。このような表現は、サーフェスのパラメトリック表現として定義されます。
図 1. パラメトリックサーフェス

パラメトリックサーフェスは開いていても閉じていてもかまいません。uを、任意の適切な値Uoに固定するとします。vが最小値から最大値まで変化するときに生成される曲線f(Uo,v)、g(Uo,v)、およびh(Uo,v)が閉じた曲線の場合、サーフェスはv領域において閉じていると言います。同様に、vを、任意の適切な値Voに固定するとします。uが最小値から最大値まで変化するときに生成される曲線f(u,Vo)、g(u,Vo)、およびh(u,Vo)が閉じた曲線の場合、サーフェスはu領域において閉じていると言います。

パラメトリックサーフェスは、MotionSolveにおいて、高次対偶拘束のモデル化に使用されます。

f()、g()、およびh()の解析表現のみがサポートされています。これらの関数は、ユーザー定義サブルーチンSURSUBで定義されます。データポイントからのパラメトリックサーフェスの構築、またはCADパッケージからのこれらのインポートは、現時点ではサポートされていません。

Reference_ParamSurfaceは、剛体上でのみ定義することができます。弾性体では定義できません。

フォーマット

< Reference_ParamSurface
     id                    = "integer"   
   [ label                 = "string" ]     
     is_u_closed           = { "TRUE" | "FALSE" } 
     is_v_closed           = { "TRUE" | "FALSE" }     
     u_start               = "real"     
     u_end                 = "real"     
     v_start               = "real"     
     v_end                 = "real"     
     type                  = "USERSUB"   
   {
     usrsub_param_string   = "USER( [[par_1][, ...][, par_n]] )"
     usrsub_dll_name       = "valid_path_name"     
     usrsub_fnc_name       = "custom_fnc_name" >
   | 
       script_name         = valid_path_name
       interpreter         = "PYTHON" | "MATLAB"
       usrsub_param_string = "USER( [[par_1 [, ...][,par_n]] )"
       usrsub_fnc_name     = "custom_fnc_name" >     
   }  
</Reference_ParamSurface>

属性

id
要素識別番号(整数 > 0)。この番号は、すべてのReference_ParamSurface要素の中で一意です。
label
Reference_ParamSurface要素の名前。
type
USERSUBとする必要があります。USERSUBは、サーフェスプロパティがユーザー定義のサブルーチンSURSUBで指定されることを示します。パラメータusrsub_param_stringおよびusrsub_dll_nameは、このユーザー定義サブルーチンに関する詳細情報を提供するために使用されます。
usrsub_param_string
データファイルからユーザー定義のSURSUBに渡されるパラメータのリスト。このキーワードは、type = USERSUBが選択されている場合にのみ使用します。
usrsub_dll_name
ユーザーサブルーチンを含むDLLまたは共有ライブラリのパスと名前を指定します。MotionSolveはこの情報を使用して、実行時にDLL内のユーザーサブルーチンSURSUBを読み込みます。
usrsub_fnc_name
ユーザーサブルーチンSURSUBの代替名を指定します。
script_name
usrsub_fnc_nameで指定されたルーチンを含むユーザー作成スクリプトのパスと名前を指定します。
interpreter
ユーザースクリプトが記述されたインタープリタ型言語を指定します。有効な選択肢は、MATLABまたはPYTHONです。
is_u_closed
TRUEまたはFALSEを選択します。
Uパラメトリック空間でサーフェスが閉じている場合、TRUEを選択します。
Uパラメトリック空間でサーフェスが開いている場合、FALSEを選択します。
is_v_closed
TRUEまたはFALSEを選択します。

Vパラメトリック空間でサーフェスが閉じている場合、TRUEを選択します。

Vパラメトリック空間でサーフェスが開いている場合、FALSEを選択します。

u_start
Uの最小値。u_start < u_endです。
u_end
Uの最大値。u_start < u_endです。
v_start
Vの最小値。v_start < v_endです。
v_end
Vの最大値。v_start < v_endです。

次の例は、パラメトリック空間で円筒サーフェスを定義しています。あるボディ上のポイントが2つ目の剛体上で定義された円筒サーフェス(下記)上を動くように拘束される必要がある、ポイントとサーフェス間の拘束を後で定義できます。円筒サーフェスはパラメトリック空間で次のように定義されます:

x = r * Cos(u)
y = r * Sin(u)
z = v

この例で、パラメータuは、vの固定値で円筒サーフェスに沿って横切るときの円筒軸の周りの回転角を定義します。パラメータvは、円筒の軸に沿った動きを定義します。

サーフェスがu空間とv空間の両方で開いていることに注意してください。

円筒の半径を17mm、円筒の長さを300mmとします。サーフェスの参照座標系をそのサーフェスの体積の中心に配置するとします。

上記の円筒を定義するステートメントは以下のとおりです:

<Reference_ParamSurface
     id                  = "555"
     is_u_closed         = "FALSE"
     is_v_closed         = "FALSE"
     u_start             = "0"
     u_end               = "3.14159"
     v_start             = "-150."
     v_end               = "150"
     usrsub_param_string = "USER(17,150)"
     usrsub_dll_name     = "/staff/gates/test/surface/surface.dll" >
  </Reference_ParamSurface>

コメント

  1. Reference_ParamSurfaceを使用して、Constraint_PTSFConstraint_CVSF、およびConstraint_SFSFの要素を定義できます。
  2. サーフェス間の拘束を定義する場合、2つのサーフェス間に必ず一意の接触ポイントがあることを確認します。
  3. MotionSolveは、パラメータuおよびvが指定した制限内に留まるように制限することはありません。シミュレーションでuまたはv、あるいはその両方が指定された範囲を超える必要がある場合、MotionSolveはこれを許容します。