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

パラメトリックサーフェスは開いていても閉じていてもかまいません。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を選択します。
- 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>
コメント
- Reference_ParamSurfaceを使用して、Constraint_PTSF、Constraint_CVSF、およびConstraint_SFSFの要素を定義できます。
- サーフェス間の拘束を定義する場合、2つのサーフェス間に必ず一意の接触ポイントがあることを確認します。
- MotionSolveは、パラメータuおよびvが指定した制限内に留まるように制限することはありません。シミュレーションでuまたはv、あるいはその両方が指定された範囲を超える必要がある場合、MotionSolveはこれを許容します。