Post: Graphic
Model ElementPost_Graphicは、可視化と3Dボディ接触に使用できるグラフィック要素を定義します。
説明
次のタイプのグラフィックスエンティティがサポートされています:
3D形状 | 2D形状 | 1D形状 | その他 |
---|---|---|---|
Box(角から定義) Box(中心から定義) Cylinder Ellipsoid Frustum Sphere SPDP TriaMesh Parasolid |
DeformSurface Plane ParamSurface Outline |
Arc (半径から定義) Arc (参照マーカーから定義) Circle(半径から定義) Circle (参照マーカーから定義) DeformCurve LineMesh Outline ParamCurve |
Point UserGra |
BoxDefinedFromCorner
<Post_Graphic
id = "integer"
type = "BoxDefinedFromCorner"
corner_marker_id = "integer"
length_x = "real"
length_y = "real"
length_z = "real"
is_material_inside = {"TRUE" | "FALSE"}
refinement_level = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
BoxDefinedFromCenter
<Post_Graphic
id = "integer"
type = "BoxDefinedFromCenter"
center_marker_id = "integer"
length_x = "real"
length_y = "real"
length_z = "real"
is_material_inside = {"TRUE"| "FALSE"}
refinement_level = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
Cylinder
<Post_Graphic
id = "integer"
type = "Cylinder"
center_marker_id = "integer"
radius = "real"
length = "real"
refinement_level = "integer"
ends_type = {"OPEN"|"CLOSED"|"TOP_ONLY"|"BOTTOM_ONLY"}
is_material_inside = {"TRUE"|"FALSE"}
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
Frustrum
<Post_Graphic
id = "integer"
type = "Frustum"
center_marker_id = "integer"
top_radius = "real"
bottom_radius = "real"
length = "real"
refinement_level = "integer"
ends_type = { "OPEN" | "CLOSED" | "TOP_ONLY" | "BOTTOM_ONLY" }
is_material_inside = {"TRUE" | "FALSE"}
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
Ellipsoid
<Post_Graphic
id = "integer"
type = "Ellipsoid"
center_marker_id = "integer"
x_scale = "real"
y_scale = "real"
z_scale = "real"
refinement_level = "integer"
is_material_inside = {"TRUE" | "FALSE"}
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
Sphere
<Post_Graphic
id = "integer"
type = "SPHERE"
center_marker_id = "integer"
radius = "real"
refinement_level = "integer"
is_material_inside = {"TRUE" | "FALSE"}
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
Plane
<Post_Graphic
id = "integer"
type = "Plane"
ref_marker_id = "integer"
xmin = "real"
xmax = "real"
ymin = "real"
ymax = "integer"
refinement_level = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
CircleFromRM
<Post_Graphic
id = "integer"
type = "CircleFromRM"
center_marker_id = "integer"
nseg = "integer"
r_marker_id = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
CircleFromRadius
<Post_Graphic
id = "integer"
type = "CircleFromRadius"
center_marker_id = "integer"
radius = "real"
nseg = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
ArcFromRm
<Post_Graphic
id = "integer"
type = "ArcFromRM"
center_marker_id = "integer"
rangle = "real"
nseg = "integer"
r_marker_id = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
ArcFromRadius
<Post_Graphic
id = "integer"
type = "ArcFromRadius"
point_marker_i = "integer"
radius = "real"
rangle = "real"
nseg = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
Point
<Post_Graphic
id = "integer"
type = "Point"
ref_marker_id = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
TriaMesh
<Post_Graphic
id = "integer"
type = "TriaMesh"
ref_marker_id = "integer"
num_triangle = "integer"
num_point = "integer"
is_material_inside = {"TRUE" | "FALSE"}
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
<!--Node position
real real real real real real
... ... ... ... ... ...
real real real real real real
<!-- Tria Connectivity
integer integer ... integer
... ... ... ... ...
integer integer ... integer
</Post_Graphic>
LineMesh
<Post_Graphic
id = "integer"
type = "LineMesh"
ref_marker_id = "integer"
num_line = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
>
!--Vertex data
real real real real real real
... ... ... ... ... ...
real real real real real real
</Post_Graphic>
SPDP
<Post_Graphic
id = "integer"
type = "SPDP"
i_marker_id = "integer"
j_marker_id = "integer"
da = "real"
db = "real"
dc = "real"
la = "real"
lb = "real"
lc = "real"
ld = "real"
ncoil = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
Outline
<Post_Graphic
id = "integer"
type = "Outline"
num_marker_id = "integer"
marker_id = "integer:integer:...:integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
ParamCurve
<Post_Graphic
id = "integer"
type = "ParamCurve"
curve_id = "integer"
ref_marker_id = "integer:integer:...:integer"
nseg = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
ParamSurface
<Post_Graphic
id = "integer"
type = "ParamSurface"
surface_id = "integer"
ref_marker_id = "integer:integer:...:integer"
nseg_u = "integer"
nseg_v = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
DeformCurve
<Post_Graphic
id = "integer"
type = "DeformCurve"
curve_id = "integer"
nseg = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
DeformSurface
<Post_Graphic
id = "integer"
type = "DeformSurface"
surface_id = "integer"
nseg_u = "integer"
nseg_v = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
UserGra
<Post_Graphic
id = "integer"
type = "UserGra"
ref_marker_id = "integer"
grasub_increment = "integer"
usrsub_param_string = "USER([par1, ..., parn])"
usrsub_fnc_name = "string"
{
[usrsub_dll_name = "string" ]
|
[
script_name = "string"
interpreter = "PYTHON" | "MATLAB"
]
}
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
Parasolid
<Post_Graphic
id = "integer"
type = "Parasolid"
graphic_file = "string"
graphic_component = "string [, string, ..., string]"
refinement_level = "integer"
ref_marker_id = "integer"
[label = "string" ]
[color = "integer:integer:integer" ]
[hidden = {"TRUE" | "FALSE"} ]
/>
属性
- id
- 要素識別番号(整数 > 0)。この番号は、モデル内のすべてのPost_Graphic要素の中で一意です。
- label
- Post_Graphic要素の名前。
- color
- H3Dアニメーションのグラフィックの色。RGB (赤 :緑 :青)として指定されます。
- hidden(省略可能)
- H3Dファイルにグラフィックスが書き込まれないようにします。hiddenをTRUEに設定すると、グラフィックはH3Dファイルに表示されず、HyperViewなどのポスト処理ツールで視覚化されません。デフォルトはFALSEです。
- type
- グラフィックエンティティのタイプを定義します。サポートされているグラフィックタイプは以下のとおりです:
- BoxDefinedFromCorner
- BoxDefinedFromCenter
- Cylinder
- Frustum
- Ellipsoid
- Sphere
- Plane
- CircleFromRM
- CircleFromRadius
- ArcFromRM
- ArcFromRadius
- Point
- TriaMesh
- SPDP
- Outline
- ParamCurve
- ParamSurface
- DeformCurve
- DeformSurface
- UserGra
- ParaSolid
- corner_marker_id
- モデル内のマーカーのIDを指定します。指定されるマーカーは、BoxDefinedFromCornerグラフィックタイプの形状の角を指定するための座標系として使用します。
- ref_marker_id
- モデル内のマーカーのIDを指定します。指定されるマーカーは、形状データを指定するための座標系として使用します。このマーカーの役割は、以下のようにエンティティタイプによって異なります。
- Plane
- ref_marker_idは平面上のポイントを定義します。マーカーのz軸は、平面の垂線を定義します。
- Point
- ref_marker_idの原点は、このグラフィック要素の位置を定義します。
- Triamesh
- ref_marker_idは、すべての頂点座標を定義する際の基準となる座標系を定義します。
- Parasolid
- Parasolidグラフィックを配置する際の基準となる座標系を定義します。
- LineMesh
- ref_marker_idは、すべての頂点座標を定義する際の基準となる座標系を定義します。
- Param_Curve
- ref_marker_idは、曲線ポイントを定義する際の基準となる座標系を定義します。
- Param_Surface
- ref_marker_idは、サーフェスポイントを定義する際の基準となる座標系を定義します。
- UserGra
- ユーザー定義のグラフィックポイントデータを定義する際の基準となる座標系を定義します。
- center_marker_id
- モデル内のマーカーのIDを指定します。指定されるマーカーは、形状を指定するための座標系として使用します。このマーカーの役割は、以下のようにエンティティタイプによって異なります。
- BoxDefinedFromCenter
- center_marker_idの原点は、直方体の幾何中心を定義します。
- Cylinder
- center_marker_idは、円筒の円形の底面の中心を定義します。このマーカーのz軸は、円筒の軸を定義します。
- Frustum
- center_marker_idは、錐台の円形の底面の中心を定義します。このマーカーのz軸は、錐台の軸を定義します。
- Ellipsoid
- center_marker_idは、楕円体の幾何中心を定義します。このマーカーのx、y、およびz軸は、楕円体の長半径を定義します。
- ArcFromRM
- center_marker_idは、弧の中心を定義します。このマーカーのz軸は、弧の法線を定義します。
- ArcFromRadius
- center_marker_idは、弧の中心を定義します。このマーカーのz軸は、弧の法線を定義します。
- CircleFromRM
- center_marker_idは、弧の中心を定義します。このマーカーのz軸は、円の法線を定義します。
- CircleFromRadius
- center_marker_idは、弧の中心を定義します。このマーカーのz軸は、円の法線を定義します。
- radius
- Cylinder、Sphere、またはArcのグラフィックタイプの半径を定義します。
- top_radius
- CylinderまたはFrustumグラフィックタイプの上面の円の半径を定義します。
- bottom_radius
- CylinderまたはFrustumグラフィックタイプの底面の円の半径を定義します。
- length
- CylinderまたはFrustumグラフィックタイプの高さを定義します。
- length_x, length_y, length_z
- BoxDefinedFromCornerまたはBoxDefinedFromCenterグラフィックタイプのx、y、およびz方向の寸法を定義します。
- ends_type
- CylinderまたはFrustumの終端が開いているか閉じているかを指定します。OPEN、CLOSED、TOP_ONLY、およびBOTTOM_ONLYから選択します。詳細については、コメント3をご参照ください。
- refinement_level
- BoxDefinedFromCenter、BoxDefinedFromCorner、Ellipsoid、Sphere、Cylinder、Frustum、Plane、TriaMesh、およびParasolidグラフィック要素のメッシュ密度を定義します。
- is_material_inside
- グラフィックの材料が内側か外側かを指定します。is_material_insideはブールフラグ(TRUE/FALSE)です。
- TRUE
- 形状はソリッドです。つまり、形状は材料で満たされており、その外側に材料はありません。その結果、形状のサーフェス法線は外側を向きます。
- FALSE
- その反対であることを示します。形状の外側は材料で満たされており、その内側には材料がありません。この場合、形状のサーフェス法線は内側を向きます。
- x_scale
- Ellipsoidグラフィックのx軸に沿った直径を指定します。
- y_scale
- Ellipsoidグラフィックのy軸に沿った直径を指定します。
- z_scale
- Ellipsoidグラフィックのz軸に沿った直径を指定します。
- xmin, xmax, ymin, ymax
- Planeグラフィックエンティティの空間範囲を定義します。これらの値は、ref_marker_idの座標系で定義されます。
- nseg
- CircleFromRadius、CircleFromRM、ArcFromRadius、またはArcFromRM内の円形エッジを近似するために使用するラインセグメントの数を定義します。このパラメータは、ParamCurveまたはDeformCurveエンティティで定義される曲線グラフィックを表すラインセグメントの数の定義にも使用されます。
- r_marker_id
- モデル内のマーカーのIDを指定します。このマーカーは、ArcFromRMまたはCircleFromRMで指定されるArcまたはCircleの半径の計算に使用されます。
- point_marker_id
- ArcFromRadiusで指定される弧の中心点にあるマーカーのIDを指定します。
- num_triangle
- Triameshエンティティに含まれる三角形の数を定義します。
- num_line
- Linemeshエンティティに含まれるラインの数を定義します。ラインは、2つの頂点の位置(x、y、およびz)を指定することによって定義されます。すべての頂点位置は、ref_marker_idで指定される座標系で定義されます。
- num_marker_id
- 原点がポリライン上にあるマーカーの数。
- rangle
- 弧によってなす角を定義します。弧はArcFromRadiusまたはArcFromRMのタイプとなります。
- i_marker_id
- モデル内のマーカーのIDを指定します。このマーカーは、SPDPグラフィックの1つの結合ポイントとして機能します。
- j_marker_id
- モデル内のマーカーのIDを指定します。このマーカーは、SPDPグラフィック要素の2番目の結合ポイントとして機能します。
- Da
- SPDPグラフィック要素内のスプリングの直径を定義します。
- Db, Dc
- スプリングダンパ内のIマーカーとJマーカーでのダンパの直径を定義します。
- La
- Iマーカーと、それに最も近いダンパの端点との距離を定義します。
- Lb
- Jマーカーと、それに最も近いダンパの端点との距離を定義します。
- Lc
- i_marker_idでのダンパの高さを定義します。
- Ld
- j_marker_idでのダンパの高さを定義します。
- ncoil
- スプリングダンパグラフィックのスプリング内のコイルの数を定義します。
- curve_id
- グラフィックを生成するために使用するモデル内のパラメトリックまたは変形可能曲線エンティティのIDを指定します。
- surface_id
- グラフィックを生成するために使用するモデル内のパラメトリックまたは変形可能サーフェスエンティティのIDを指定します。
- nseg_u
- パラメトリックまたは変形可能サーフェスグラフィックのu座標に沿ったセグメントの数を指定します。
- nseg_v
- パラメトリックまたは変形可能サーフェスグラフィックのv座標に沿ったセグメントの数を指定します。
- nseg
- パラメトリックまたは変形可能曲線グラフィックに沿ったセグメントの数を指定します。
- graphic_file
- Parasolidファイルの場所および名前を指定します。
- graphic_component
- Parasolidグラフィックファイル内の、剛体接触で考慮されるコンポーネントの名前のコンマ区切りリストを指定します。ここで指定されないコンポーネントは、接触シミュレーションで考慮されません。
- grasub_increment
- GRASUBが呼び出される増分を指定します。デフォルトは4です。
- usrsub_dll_name
- ユーザーサブルーチンを含む共有ライブラリのパスと名前を指定します。MotionSolveは、この情報を使用して、実行時に共有ライブラリ内のユーザーサブルーチンを読み込みます。
- usrsub_param_string
- データファイルからユーザー定義のサブルーチンに渡されるパラメータのリストを指定します。このキーワードは、type = USERSUBが選択されている場合にのみ使用します。この属性は、すべてのタイプのユーザーサブルーチン / スクリプトに共通です。
- usrsub_fnc_name
- ユーザーサブルーチンGRASUBの代替名を指定します。
- script_name
- usrsub_fnc_nameで指定されたルーチンを含むユーザー作成スクリプトのパスと名前を指定します。
- interpreter
- ユーザースクリプトが記述されたインタープリタ型言語を指定します。有効な選択肢は、MATLABまたはPYTHONです。
例
この例は、Post_Graphicを使用して楕円体グラフィックを作成する方法を示しています。下の図に示すように、長半径a = 10、b = 7、c = 5の楕円体を定義するとします。MotionSolve XML入力は次のようになります:
<Post_Graphic
id = "90000"
type = "Ellipsoid"
center_marker_id = "90000000"
x_scale = "10"
y_scale = "7"
z_scale = "5"
refinement_level = "3"
is_material_inside = "TRUE"
/>

図 1. 寸法(10、7、5)の楕円体
次の例は、MotionSolveでParasolid形状がどのように表されるかを示しています。この例の入力CAD形状を、Parasolidフォーマットで、対応するPost_Graphicモデルステートメントと共に以下に示します。
<Post_Graphic
id = "900000"
type = "Parasolid"
graphic_file = "../gears.x_t"
graphic_component = "Gear1 Gear2"
refinement_level = "1"
ref_marker_id = "90000000"
/>

図 2. 2つのベベルギアを表すParasolidグラフィック
コメント
- すべてのグラフィックタイプがForce_Contactモデリング要素でサポートされているわけではありません。サポートされているグラフィックタイプは次のとおりです:
- BoxDefinedFromCorner
- BoxDefinedFromCenter
- Cylinder
- Frustum
- Ellipsoid
- Sphere
- Plane
- TriaMesh
- UserGra
残りのグラフィックタイプは、可視化でのみ使用されます。
- BoxDefinedFromCenterおよびBoxDefinedFromCornerグラフィックタイプを下の図に示します。
図 3. BoxDefinedFromCenterグラフィックタイプ
図 4. BoxDefinedFromCornerグラフィックタイプBoxDefinedFromCenterとBoxDefinedFromCornerのどちらのグラフィックも、そのx、y、z長さと、それぞれ中心、角のマーカーで定義されます。
- CylinderおよびFrustumグラフィックタイプを下の図に示します。
図 5. Cylinderグラフィックタイプ
図 6. FrustumグラフィックタイプCylinderおよびFrustumグラフィックは、半径(Frustumの場合は上面と底面)、高さ、および形状の中心にあるマーカーで定義されます。
これらのグラフィックのTOP端部は負のZ軸の向きに配置される端部で、BOTTOM端部は正のZ軸の向きに配置される端部です。これらのグラフィックは、TOPまたはBOTTOM、あるいはその両方がキャップされているか、どちらもキャップされていない状態で定義できます。これは、属性ends_typeで決まります:- ends_type = "OPEN"の場合、CylinderまたはFrustumの端部はどちらも閉じられていません。
- ends_type = "CLOSED"の場合、CylinderまたはFrustumの端部はどちらも閉じられています。
- ends_type = "TOP_ONLY"の場合、CylinderまたはFrustumのTOP端部のみが開いています。
- ends_type = "BOTTOM_ONLY"の場合、CylinderまたはFrustumのBOTTOM端部のみが開いています。注: メッシュベースの接触モデルでCylinderまたはFrustumグラフィックを使用する場合は、ends_typeをCLOSEDに設定し、CylinderまたはFrustumグラフィックが閉じた状態になるようにしてください。MotionSolveのメッシュベースの接触では、形状が閉じている必要があります。詳細については、MotionSolveユーザーズガイドのMotionSolve user guide -> analysis tips -> best practice for running 3d contact models in motionviewMotionSolveをご参照ください。
- EllipsoidおよびSphereグラフィックタイプを下の図に示します。
図 7. Ellipsoidグラフィックタイプ
図 8. SphereグラフィックタイプEllipsoidおよびSphereグラフィックタイプは、半径(Ellipsoidの場合はx、y、およびz方向、Sphereの場合は1つのみ)および形状の中心にあるマーカーで定義されます。
- PlaneおよびSPDPグラフィックタイプを下の図に示します。
図 9. Planeグラフィックタイプ
図 10. SPDPグラフィックタイプPlaneグラフィックタイプは、空間範囲(xmin、xmax、ymin、ymax)とマーカーによって定義されます。このマーカーは、平面の中心に配置され、このマーカーのZ軸によって平面の垂線が決まります。空間長さはref_marker_idの座標系(上の図に青で表示)で定義されます。
SPDPグラフィックタイプは、IおよびJボディの2つの結合マーカー、スプリング内のコイルの数、およびコイルの直径で定義されます。
- CircleFromRMおよびCircleFromRadiusグラフィックタイプを下の図に示します。
図 11. CircleFromRMグラフィックタイプ
図 12. CircleFromRadiusグラフィックタイプCircleFromRMグラフィックタイプは、2つのマーカーで定義されます。円の原点は、center_marker_idで指定されるマーカーの原点に置かれ、このマーカーのZ軸がこの円の平面の垂線を決定します。r_marker_idの原点を使用して、円の半径を として特定します。ここで、 はcenter_marker_idの位置、 はr_marker_idの位置です。
CircleFromRadiusグラフィックタイプは、1つのマーカーと半径で定義されます。円の原点は、center_marker_idで指定されるマーカーの原点に置かれ、このマーカーのZ軸がこの円の平面の垂線を決定します。半径は、radius属性によって指定されます。
これら両方のグラフィックを可視化するには、多くの直線セグメントを結合して円を描きます。属性nsegは、円を描くために使用する必要のあるセグメントの数を定義します。この値が大きいほど、グラフィックは滑らかに見えます。
- ArcFromRMおよびArcFromRadiusグラフィックを下の図に示します。
図 13. ArcFromRMグラフィックタイプ
図 14. ArcFromRadiusグラフィックタイプArcFromRMグラフィックタイプは、2つのマーカーで定義されます。弧の原点は、center_marker_idで指定されるマーカーの原点に設定され、さらにこのマーカーのZ軸がこの円の平面の垂線を決定します。r_marker_idの原点を使用して、円の半径を として特定します。ここで、 はcenter_marker_idの位置、 はr_marker_idの位置です。弧はcenter_marker_idのY軸から、rangleで定義した開き角だけ反時計回りに描かれます。
ArcFromRadiusグラフィックタイプは、1つのマーカーと半径で定義されます。弧の原点は、center_marker_idで指定されるマーカーの原点に設定され、さらにこのマーカーのZ軸がこの円の平面の垂線を決定します。半径は、radius属性によって指定されます。弧はcenter_marker_idのY軸から、rangleで定義した開き角だけ反時計回りに描かれます。
これら両方のグラフィックを可視化するには、多くの直線セグメントを結合して弧を描きます。属性nsegは、弧を描くために使用する必要のあるセグメントの数を定義します。この値が大きいほど、グラフィックは滑らかに見えます。
- LineFromMeshおよびPointグラフィックタイプを下の図に示します。
図 15. LineMeshグラフィックタイプ
図 16. PointグラフィックタイプLineFromMeshグラフィックタイプは、多くの頂点を直線と結合します。描画するラインの数は、num_line属性によって指定されます。頂点のX、Y、およびZ位置は、ラインを描画する順序で指定します。上記の例の場合、頂点は次の順序で指定されます:
(1) 上記順序により、r1とr2の間、r2とr3の間などで描画するラインが指定されます。
Pointグラフィックタイプは、center_marker_idの原点で指定されるポイントとして定義されます。
- LineFromMeshおよびPointグラフィックタイプを下の図に示します。
図 17. TriaMeshグラフィックタイプ
図 18. OutlineグラフィックタイプTriaMeshグラフィックは、通常、頂点や辺を共有する三角形要素の集合として定義されます。このタイプのメッシュは、一般に、解析でCAD形状を表すために使用されます。三角形自体は2Dです。結合すると、3Dサーフェスを表すことができます。サーフェスには、フリーエッジがあってもなくてもかまいません。さらに、メッシュが隣接するソリッドを定義するという要件はありません。つまり、メッシュのすべてのパートを結合する必要はないということです。
各三角形でのサーフェス法線は、頂点が反時計回りに指定される場合にその法線が外側を向くように、辺の外積として定義されます。上の図で、法線は次のように定義されます。
.
Outlineグラフィックは、マーカーIDのリストで定義されます。ポリラインは、これらの各マーカーの原点を通って描画されます。マーカーの数は、num_marker_id属性によって指定されます。
- ParamCurveおよびDeformCurveグラフィックタイプを下の図に示します。
図 19. ParamCurveグラフィックタイプ
図 20. DeformCurveグラフィックタイプParamCurveグラフィックタイプは、Reference_ParamCurve要素としてモデルで定義される曲線を表すために使用されます。グラフィックは、curve_idによって定義された曲線上の頂点をつなぐ直線セグメントの数で定義されます。
DeformCurveグラフィックタイプは、Reference_DeformCurve要素としてモデルで定義される変形可能曲線を表すために使用されます。グラフィックは、curve_idによって定義された曲線上の頂点をつなぐ直線セグメントの数で定義されます。このグラフィックは変形可能曲線を表すため、シミュレーションが進むにつれ、グラフィックは曲線と共に変形します。
属性nsegは、曲線を描くために使用する必要のあるセグメントの数を定義します。この値が大きいほど、曲線は滑らかに見えます。ポイントの定義方法により、ParamCurveまたはDeformCurveグラフィックは開いた状態にすることも閉じた状態にすることもできます。
- ParamSurfaceおよびDeformSurfaceグラフィックタイプを下の図に示します。
図 21. ParamSurfaceグラフィックタイプ
図 22. DeformSurfaceグラフィックタイプParamSurfaceグラフィックタイプは、Reference_ParamSurface要素としてモデルで定義されるサーフェスを表すために使用されます。グラフィックは、surface_idによって定義されたサーフェス上の頂点をつなぐ直線セグメントの数で定義されます。
DeformSurfaceグラフィックタイプは、Reference_DeformSurface要素としてモデルで定義される変形可能サーフェスを表すために使用されます。グラフィックは、surface_idによって定義されたサーフェス上の頂点をつなぐ直線セグメントの数で定義されます。このグラフィックは変形可能サーフェスを表すため、シミュレーションが進むにつれ、グラフィックはサーフェスと共に変形します。
属性nseg_uおよびnseg_vは、サーフェスのそれぞれUおよびV方向に沿って曲線を描くために使用する必要のあるセグメントの数を定義します。この値が大きいほど、サーフェスは滑らかに見えます。
- Parasolidグラフィックタイプを使用すると、MotionSolveでグラフィックとしてParasolid形状を使用できます。このグラフィックは、Parasolidグラフィックファイルの名前と場所、およびParasolidアセンブリ内のパートの名前で定義されます。
Parasolid形状をモデルにインポートするには、MotionViewのToolsメニューからImport CAD or FEを使用する必要があります。詳細については、チュートリアルMV-1035をご参照ください。
シミュレーションが完了すると、MotionSolveはParasolid形状をメッシングし、可視化のためアニメーションH3Dファイルに書き込みます。
- UserGraグラフィックタイプを使用すると、独自のグラフィックを定義できます。これは、独自のサブルーチンまたはスクリプトを定義することで可能となります。頂点および三角形を作成するには、MotionSolveで提供されているアクセス関数ADD_GRA_NODE、SET_GRA_NODE、およびADD_GRA_TRIAを使用します。これらのアクセス関数では三角形メッシュを作成でき、これは後でモデル内のグラフィックとして使用することができます。詳細および例については、GRASUBに関するドキュメントをご参照ください。
GRASUBを使用すると、シミュレーションが進んでグラフィックを再描画したくなったときに特に便利です。
- 接触モデリングでCAD形状(IGESやSTPなど)を使用する場合は、ネイティブなCADフォーマットをTriamesh要素に変換する必要があります。これを行うには、以下の2つの方法があります:
- CADモデルをHyperMeshにインポートし、これをメッシュしてH3Dファイルにエクスポートします。H3DファイルをMotionViewにインポートし、接触を定義します。
- MotionView内で、MotionViewのToolsメニューからImport CAD or FEを選択します。このユーティリティは、HyperMeshを使用して変換を行います。これは、HyperMeshに不慣れなユーザー向けの機能です。
- すべてのグラフィックエンティティがアニメーションH3Dファイルに書き込まれ、システムの挙動をHyperViewで可視化することができます。
- すべてのプリミティブ3Dグラフィックス(Sphere、Ellipsoid、Cylinder、Frustum、BoxDefinedFromCorner、およびBoxDefinedFromCenter)が、アニメーションH3Dファイルに書き込まれるときに、三角形メッシュ化表現に変換されます。
それらのメッシュの密度は、パラメータrefinement_levelで制御できます。refinement_levelの値を大きくすると、三角形が追加され、メッシュの密度が高くなります。
メッシュ密度が高いほど、正確な接触力が得られる傾向にありますが、三角形が多くなると、通常シミュレーション時間が長くなります。
次の図は、いくつかのプリミティブ3D形状での、精緻化レベルを上げることによる効果を示しています。
図 23. refinement_level = 0のBox
図 24. refinement_level = 1のBox
図 25. refinement_level = 2のBox
図 26. refinement_level = 2のSphere
図 27. refinement_level = 3のSphere
図 28. refinement_level = 4のSphere
図 29. refinement_level = 1のCylinder
図 30. refinement_level = 2のCylinder
図 31. refinement_level = 3のCylinderrefinement_level属性は、TriaMeshグラフィックタイプで使用することもできます。精緻化レベルを1大きくすると、下の図に示すように、各三角形が4つの三角形に分割されます。註: TriaMeshグラフィックをそのまま使用する場合は、この属性を0に設定するか、これを定義しないでください。
図 32. refinement_level = 0のTriamesh
図 33. refinement_level = 1のTriamesh
図 34. refinement_level = 2のTriameshrefinement_levelは、次のグラフィックタイプでサポートされています:- BoxDefinedFromCenter
- BoxDefinedFromCorner
- Sphere
- Ellipsoid
- Cylinder
- Frustum
- Plane
- TriaMesh
- Parasolid
- 接触では、MotionSolveが、できるだけすべてのプリミティブ3Dグラフィックス(Sphere、Ellipsoid、Cylinder、Frustum、BoxDefinedFromCorner、およびBoxDefinedFromCenter)に解析表現を使用して、正確で、高速で、滑らかな接触力を計算しようとします。詳細については、Force: Contactを参照してください。