対話型選択
 
次の関数について説明します。
ProSelect() は、 でユーザーに対話的にグラフィックを選択させるための 関数です。この関数を使用することで、選択可能なアイテムを制御するフィルタを指定できます。
通常、ユーザーは、 グラフィックウィンドウの一番下にあるステータスバーの filter メニューを使用して、フィルタオプションを操作します。ProSelect() を呼び出すと、その次の選択で使用するフィルタが設定されます。
操作中にユーザーに選択を求める場合、OKボタンとCancel ボタンがある選択ダイアログボックスが使用されます。選択のタイプに応じて、ユーザーは次の場所で選択を行えます。
グラフィックウィンドウ
モデルツリー
サーチツール
外部オブジェクト
アクティブな構成部品以外のアイテム
これらの場所では、ユーザーがどのアイテムを選択すべきかやその理由についてのガイダンスは一切示されません。したがって、メッセージウィンドウまたはダイアログボックスで、ユーザーに対して、アプリケーションがユーザーによる選択を求めていることを詳しく知らせることが重要です。選択のタイプや目的をユーザーに説明するには、ProMessageDisplay() 関数を使用します。
*UI コマンドでこの関数を使用する場合は、ProSelect() の使用に適した優先順位が UI コマンドに設定されていることを確認してください。優先順位の設定が正しくないと、予想外の結果が起こる可能性があります。ユーザーインタフェース: リボンタブ、グループ、およびメニューアイテムのセクションの通常の優先順位の処理も参照してください。
ProSelect() の概要を次に示します。
ProError ProSelect (
char option[], /* (In) The selection filter. */
int max_count, /* (In) The maximum number of
selections allowed. */
ProSelection *p_in_sel, /* (In) An array of pointers to
selection structures used
to initialize the array
of selections. This can
be NULL. */
ProSelFunctions *sel_func, /* (In) A pointer to a structure
of filter functions. This
can be NULL. */
ProSelectionEnv sel_env, /* (In) Use attribute PRO_SELECT_ACTIVE_ COMPONENT_IGNORE to also select items external to the activate component. */
ProSelAppAction appl_act_data, /* (In) Use NULL. */
ProSelection **p_sel_array, /* (Out) A pointer to an array of
pointers to selected items.
This argument points to static
memory allocated by the
function. It is reallocated
on subsequent calls to this
function.*/
int *p_n_sels /* (Out) The actual number of
selections made. The
function allocates the
memory for this function
and reuses it on
subsequent calls.*/
)
ProSelect() の最初の入力引数 option は、選択可能なアイテムタイプのセットです。各タイプ名を (空白を挿入せずに) コンマで区切った C 文字列の形式で指定します。次の表に、ProSelect() で選択できるアイテムタイプ、option 引数に指定するタイプの名前、および選択したアイテムの ProModelitem に含まれる ProType の値を示します。
データベースアイテム
ProSelect() のオプション
ProType
ジオメトリアイテム
データム点
point
PRO_POINT
データム軸
axis
PRO_AXIS
データム平面
datum
PRO_SURFACE
座標系データム
csys
PRO_CSYS
座標系軸
csys_axis
PRO_CSYS_AXIS_X PRO_CSYS_AXIS_Y PRO_CSYS_AXIS_Z
エッジ (ソリッドまたはデータムサーフェス)
edge
PRO_EDGE
頂点
edge_end
PRO_EDGE_START または PRO_EDGE_END
データムカーブ
curve
PRO_CURVE
データムカーブ端
curve_end
PRO_CRV_START または PRO_CRV_END
複合カーブ
comp_crv
PRO_CURVE
エッジ (ソリッドのみ)
sldedge
PRO_EDGE
エッジ (データムサーフェスのみ)
qltedge
PRO_EDGE
パイプセグメント端点
pipeseg_end
PRO_PSEG_START または PRO_PSEG_END
サーフェス (ソリッドまたはキルト)
surface
PRO_SURFACE
サーフェス (ソリッド)
sldface
PRO_SURFACE
サーフェス (データムサーフェス)
qltface
PRO_SURFACE
サーフェス (点)
pntsrf
PRO_SURFACE_PNT
キルト
dtmqlt
PRO_QUILT
アノテーション
寸法
dimension
PRO_DIMENSION
参照寸法
ref_dim
PRO_REF_DIMENSION
幾何公差
gtol
PRO_GTOL
3D シンボル
symbol_3d
PRO_SYMBOL_INSTANCE
注記
any_note
PRO_NOTE
3D 注記
note_3d
PRO_NOTE
3D 表面仕上げ
surffin_3d
PRO_SURF_FIN
アノテーション要素
annot_elem
PRO_ANNOTATION_ELEM
図面アイテム
図面ビュー
dwg_view
PRO_VIEW
図面テーブル
dwg_table
PRO_DRAW_TABLE
ドラフトエンティティ
draft_ent
PRO_DRAFT_ENTITY
詳細シンボル
dtl_symbol
PRO_SYMBOL_INSTANCE
詳細注記
any_note
PRO_NOTE
テーブルセル
table_cell
PRO_DRAW_TABLE
ソリッドとフィーチャー
フィーチャー
feature
PRO_FEATURE
部品
part
PRO_PART
構成部品フィーチャー
membfeat
PRO_FEATURE
アセンブリ構成部品モデル
component
PRO_PARTPRO_ASSEMBLY
部品またはサブアセンブリ
prt_or_asm
PRO_PART または PRO_ASSEMBLY
その他のアイテム
のアイテム
Creo Simulate のアイテムの選択のセクションの表を参照してください。
外部オブジェクト
ext_obj
PRO_EXTOBJ
ダイヤグラム固定コネクタ、固定コンポーネント、またはパラメトリックコネクタ
dgm_obj
PRO_DIAGRAM_OBJECT
ダイヤグラムワイヤ (ケーブルではない)
dgm_non_cable_wire
PRO_DIAGRAM_OBJECT
ソリッドボディ
3d_body
PRO_BODY
ECAD 導線
ecad_cu
PRO_ECAD_CONDUCTOR
MBD テーブル
table_3d
PRO_TABLE
第 2 引数は、ユーザーが指定可能な最大アイテム数を指定します。最大数を設定しない場合は、この引数に -1 を設定します。
ProSelect() の 3 番目の引数は、(ProArrayAlloc() および ProSelectionAlloc() を使用して作成された) ProSelection構造体の拡張可能な配列であり、選択リストを初期化するために使用します。詳細については、基本的な機能のセクションの展開可能配列のセクションを参照してください。これは、 の「フィーチャー」(Feature)「定義」(Define) のように、フィーチャー参照のデフォルト選択をユーザーが削除できる場合に使用します。
第 4 引数はオプションの構造体で、3 つのユーザー定義のフィルタ関数を定義します。ユーザー定義のフィルタ関数を使用して、選択方法をカスタム化してアイテムをフィルタできます。たとえば直線エッジだけを選択できるようにするには、まずエッジのタイプをチェックして適切なステータスを返すフィルタを記述します。さらに、この関数を ProSelect() 内から呼び出して、カーブしたエッジをユーザーが選択できないようにします。
5 番目の引数を利用すると、ユーザーは関数 ProSelectionEnvAlloc() を使用して、ProSelect() に属性のセットを渡せます。関数 ProSelectionEnvAlloc()ProSelectionEnv ハンドルを返します。これは、ProSelect() への入力として渡されます。ProSelectionEnvAlloc() の属性は、次のとおりです。
PRO_SELECT_DONE_REQUIRED - ユーザーが選択したアイテムを取得するときに、「選択」(Select) ダイアログボックスで「OK」をクリックする必要があることを示します。
PRO_SELECT_BY_MENU_ALLOWED - 属性値を True (デフォルト値) に設定した場合に、関数 ProSelect() でサーチツールを使用できることを指定します。
PRO_SELECT_BY_BOX_ALLOWED - ユーザーは境界ボックスを描画して、ボックス内の選択したアイテムを取得する必要があることを指定します。
*属性 PRO_SELECT_BY_BOX_ALLOWED は、上のテーブルの "ジオメトリアイテム" の下に示されているタイプにのみ使用できます。
PRO_SELECT_ACTIVE_COMPONENT_IGNORE - ユーザーがアクティブな構成部品以外でアイテムを選択できることを指定します。
PRO_SELECT_HIDE_SEL_DLG - 「選択」(Select) ダイアログボックスを非表示にする必要があることを指定します。
PRO_SELECT_CANCEL_ON_CLOSE_DLG - X(cancel)Close と同じ動作をするように指定します。
6 番目の引数は、このリリースでは使用しません。NULL に設定してください。
最後の 2 つの引数は出力です。ProSelection 構造体の拡張可能な配列と、その配列内のアイテム数を示します。ProSelection オブジェクトの内容の解析方法については、前のセクションの説明を参照してください。
*この後で ProSelect() を呼び出したときに、ProSelections の配列が割り当てられ、再利用されます。
したがって、出力された配列を解放してはなりません。また、行われた選択を保存する場合は、ProSelectionCopy() を使用して選択をコピーする必要があります。
ループ内から ProSelect() 関数を使用しているときにエラー PRO_TK_PICK_ABOVE (-14) が発生した場合、 に制御を戻すことでこのエラーを処理する必要があります。
で選択を行わずにコマンドを終了した場合、ProSelect() によって PRO_TK_NO_ERROR が返ります。この関数は、出力引数 p_n_sels をゼロとして返し、配列 p_sel_arrayNULL として返します。
これは役に立ちましたか?