選択セットを使用する(.NET)

選択セットは、1 つのオブジェクトで構成されていることもありますし、複雑なオブジェクトのグループになることもあります。たとえば、特定の画層上のオブジェクトのセットにもなります。

選択セットは、通常、事前選択によって、コマンドが開始される前に作図領域でオブジェクトを選択するようユーザに要求することによって作成されるか、コマンドがアクティブのときに、 オブジェクトを選択: プロンプトで作成されます。選択セットは永続的なオブジェクトではありません。複数のコマンドで使用するまたは将来使用するために選択セットを維持する必要がある場合、カスタム辞書を作成し、選択セットで検索された ObjectId をディクショナリ レコードのソフト ポインタとして記録する必要があります。

ObjectId をソフトポインタとして格納する代わりに、各オブジェクト ハンドルをディクショナリに格納することもできます。次に、Database.GetObjectId メソッドを使用して、格納されたハンドルからオブジェクトの ObjectId を取得します。

注: ObjectId をディクショナリにソフト ポインタとして保存するかハンドルとして保存するかにかかわらず、アクセスする前にオブジェクトが存在することを確認する必要があります。

プロンプトと選択フィルタ

選択セットの管理は、Autodesk.AutoCAD.EditorInput 名前領域の一部である複数のオブジェクト全体に分割されます。ユーザに選択するように求め、選択アクションを実行するためには、Editor オブジェクトを使用します。PromptSelectionOptions オブジェクトは、選択操作が始まったときにユーザに表示されるプロンプトの設定に使用し、SelectionFilter クラスは図形のプロパティにより選択セットをフィルタするために使用することができます。

PromptSelectionOptions クラスは、プロンプトのキーワードを指定するための SetKeywords メソッドを提供するだけでなく、プロンプト メッセージを設定するための MessageForAdding プロパティと MessageForRemoval プロパティを提供します。SelectionFilter クラスは、トピック「ResultBuffer データ タイプ(.NET)」で説明したように、TypedValue オブジェクトの配列の形式でフィルタ パラメータを受け入れます。各 TypedValue オブジェクトは、1 つのフィルタ条件を表します。選択に対して、任意の数の条件を指定できます。

選択に関するプロンプトを表示するようにアプリケーションを準備したら、Editor オブジェクト上で GetSelection メソッドを呼び出します。Editor.GetSelection メソッドは、多数のオーバーロードされたバージョンに存在します。標準の AutoCAD プロンプトを使用する単純でフィルタされていない選択の場合、パラメータなしのオーバーロードを使用します。キーワードを含むカスタム プロンプト メッセージを提示したい場合は、PromptSelectionOptions オブジェクトを受け入れるオーバーロードを使用します。フィルタを指定するには、SelectionFilter オブジェクトを受け入れるオーバーロードを使用します。

その他の選択メソッドは、AutoCAD プログラムで使用可能な選択モードをすべてカバーします。Editor.SelectImplied メソッドは、暗黙の、つまり事前選択の、選択セットにアクセスできるようにします。Editor.SelectPrevious メソッドは、直前の選択セットで選択されたオブジェクトを返します。SelectCrossingWindowSelectFence のようなメソッドでは、アプリケーションは窓、交差、フェンス、ポリゴンにより図形を選択することができます。