スナップショットの拘束
スナップショットに適用可能な拘束は構造体 ProSnapshotConstraint によって指定されます。ProSnapshotConstraint の宣言は次のとおりです。
typedef struct proSnapshotConstraint
{
ProSnapshotConstraintType type;
ProSelection *sel_array;
double value;
ProBool user_active;
ProBool valid
} ProSnapshotConstraint;
上記の構造体のフィールドを次に示します。
type - スナップショットの拘束のタイプを指定します。このタイプは列挙型 ProSnapshotConstraintType で表され、次のいずれかの値をとることができます。
PRO_SNAP_ALIGN - トップレベルアセンブリから 2 つの点、2 本の直線、または 2 つの平面を選択します。ドラッグ操作中、この 2 つのエンティティは整列した状態のままとなります。
PRO_SNAP_MATE - トップレベルアセンブリから 2 つの平面を選択します。ドラッグ操作中、平面は合致した状態のままとなります。
PRO_SNAP_ORIENT - 互いに斜めの方向にある 2 つの平面を選択します。
PRO_SNAP_MOTION_AXIS_POS - 運動軸を選択して運動軸の位置を指定します。
PRO_SNAP_BODY_LOCK - ドラッグの間ロックするボディを選択します。
PRO_SNAP_CONNECTION_DISABLE - ドラッグの間無効になる結合を選択します。
PRO_SNAP_PARALLEL_VIEW_PLANE - ビュー平面に対してのみ平行に移動するボディを選択します。この拘束タイプは PRO_SNAP_ALIGN および PRO_SNAP_MATE タイプと同じですが、この場合の第 2 参照はビュー平面です。この拘束タイプは を介してのみ使用できます。 アプリケーションによって設定されている場合、この拘束タイプは ユーザーインタフェースの「ドラッグ」(Drag) ダイアログボックスに表示されますが、保存はされません。
PRO_SNAP_CAM_LIFTOFF_ENABLE - ドラッグ操作中、カムフォロワー結合された 2 つのカムを分離して衝突させることができます。
PRO_SNAP_CAM_LIFTOFF_DISABLE - ドラッグ操作中、カムフォロワー結合された 2 つのカムを互いに接触させておきます。
*拘束タイプ PRO_SNAP_CAM_LIFTOFF_ENABLE および PRO_SNAP_CAM_LIFTOFF_DISABLE は、 ユーザーインタフェースの「カム-フォロワー結合定義」(Cam-Follower Connection Definition) ダイアログボックスで設定した Enable Liftoff プロパティをオーバーライドします。
*sel_array - 選択の ProArray を指定します。各拘束タイプで選択する必要があるオブジェクトの数と選択可能なオブジェクトのタイプを次の表に示します。
拘束タイプ
選択する必要があるオブジェクトの数
選択可能なタイプ
PRO_SNAP_ALIGN
2
PRO_POINTPRO_SURFACE_PNTPRO_AXISPRO_EDGEPRO_CURVEPRO_DATUM_PLANEPRO_SRF_PLANE_PNTPRO_SURFACE
PRO_SNAP_MATEPRO_SNAP_ORIENT
PRO_DATUM_PLANEPRO_SRF_PLANE_PNTPRO_SURFACE
PRO_SNAP_MOTION_AXIS_POS
1
PRO_MDO_CONN_AXIS_ROT_1/2/3PRO_MDO_CONN_AXIS_TR_1/2/3PRO_MDO_SLOT_AXIS
PRO_SNAP_CONNECTION_DISABLE
PRO_MDO_CONNPRO_MDO_CAM_CONNPRO_MDO_SLOT_CONNPRO_MDO_GEAR_CONN
PRO_SNAP_PARALLEL_VIEW_PLANE
PRO_POINTPRO_SURFACE_PNTPRO_EDGE_STARTPRO_EDGE_ENDPRO_CRV_STARTPRO_CRV_ENDPRO_AXISPRO_EDGEPRO_CURVEPRO_SRF_PLANE_PNTPRO_SURFACEPRO_DATUM_PLANE
PRO_SNAP_CAM_LIFTOFF_ENABLE
PRO_MDO_CAM_CONN
PRO_SNAP_CAM_LIFTOFF_DISABLE
PRO_SNAP_BODY_LOCK
2 つ以上
PRO_PARTPRO_MDO_BODY
value - 拘束タイプに応じて、このフィールドは次の値をとります。
拘束タイプが PRO_SNAP_ALIGN または PRO_SNAP_MATE の場合、value には参照間の直線距離を指定します。
タイプが PRO_SNAP_ORIENT の場合、value には参照間の角度を指定します。
タイプが PRO_SNAP_MOTION_AXIS_POS の場合、value にはジョイント軸ゼロ位置のオフセットを指定します。この値には、回転軸の場合には角度、直線移動軸の場合には直線距離を指定します。ジョイント軸ゼロ位置の参照は、デフォルトを使用することも、ユーザーが指定することもできます。
active - 拘束を有効または無効にする ProBoolean オプションを指定します。
valid - カレントモデルのコンテキストで拘束を有効にするか無効にするかを指定します。この ProBoolean オプションが PRO_B_TRUE の場合は拘束が有効 (アクティブ) になり、PRO_B_FALSE の場合は拘束が無効になり (抑制され) ます。
次の関数について説明します。
関数 ProSnapshotConstraintsGet() は、指定されたスナップショットのすべての拘束を取得します。トップレベルアセンブリまたはそのサブアセンブリのスナップショットを指定できます。トップレベルアセンブリを指定するには、引数 pathNULL を渡します。
関数 ProSnapshotConstraintAdd() は、トップレベルアセンブリのスナップショットに拘束を追加します。
関数 ProSnapshotConstraintDelete() は、トップレベルアセンブリのスナップショットから拘束を削除します。
関数 ProSnapshotConstraintUpdate() は、トップレベルアセンブリのスナップショットの拘束を更新します。
関数 ProSnapshotConstraintEvaluate() は、 ウィンドウでアクティブなモデルの拘束タイプ PRO_SNAP_MOTION_AXIS_POS の運動軸の位置を計算します。この値はカレントのスナップショットには関係なく、スナップショットに拘束が含まれている必要はありません。
これは役に立ちましたか?