概要 - オブジェクトの選択と選択セット(AutoLISP)

選択セットは、選択された 1 つまたは複数のオブジェクト(図形)から構成されたグループです。

対話的に選択セットにオブジェクトを追加したり、選択セットからオブジェクトを除去したり、選択セット内のオブジェクトをリストできます。次のサンプル コードでは、ssget 関数を使用して、図面内のすべてのオブジェクトを含む選択セットを作成しています。

(ssget "X")
<Selection set: 1>

AutoLISP には、選択セットを扱うための多くの関数があります。次に、選択セットに使用できるいくつかの関数を示します。

選択セットを作成する最も一般的な方法は ssget 関数を使用することです。この関数を使用して、次のいずれかの方法で選択セットを作成できます。

どの方法を使用しても、フィルタリングを使用してプロパティや条件のリストを指定し、それらに一致するオブジェクトを選択できます。

注: 選択セットと図形名は、作図セッションごとに異なります。

ssget に対する最初の引数は、どの選択オプションを使用するかを指定する文字列です。次の 2 つの引数 pt1pt2 は、選択オプションに応じて点の値を指定します(不要な場合は省略します)。選択オプションとしてポリゴン(フェンス、ポリゴン交差、ポリゴン窓)を使用する場合は、引数として点のリスト pt‑list を指定する必要があります。最後の引数 filter‑list は省略可能です。filter-list を指定する場合は、フィルタリングで使用される図形フィールド値のリストを指定します。たとえば、特定の画層上の特定のタイプのオブジェクト、または特定の色のオブジェクトすべてを含む選択セットを取得できます。

次の表に、ssget の呼び出しの例を示します。

SSGET の例

関数の呼び出し

結 果

(setq

pt1 '(0.0 0.0 0.0)

pt2 '(5.0 5.0 0.0)

pt3 '(4.0 1.0 0.0)

pt4 '(2.0 6.0 0.0)

)

pt1、pt2、pt3、pt4 に点の値を代入します。

(setq ss1 (ssget))

ユーザに標準の方法でオブジェクトを選択するよう要求し、選択したオブジェクトを選択セットに含めます。

(setq ss1 (ssget "P"))

直前に選択したオブジェクト セットから選択セットを作成します。

(setq ss1 (ssget "L"))

データベースに最後に追加された、スクリーンに表示されているオブジェクトから選択セットを作成します。

(setq ss1 (ssget pt2))

点(5,5)を通るオブジェクトから選択セットを作成します。

(setq ss1 (ssget "W" pt1 pt2))

(0,0)と(5,5)を対角頂点とする窓内のオブジェクトから選択セットを作成します。

(setq ss1 (ssget "F" (list pt2 pt3 pt4)))

点(5,5)、(4,1)、(2,6)で定義されるフェンスと交差するオブジェクトから選択セットを作成します。

(setq ss1 (ssget "WP" (list pt1 pt2 pt3)))

点(0,0)、(5,5)、(4,1)で定義されるポリゴン内のオブジェクトから選択セットを作成します 。

(setq ss1 (ssget "X"))

データベース内のすべてのオブジェクトから選択セットを作成します。

アプリケーションが選択セットを使用し終わったら、メモりから解放することが重要です。これは、次のように選択セットに nil を代入することによって行うことができます。

(setq ss1 nil)
要確認: また、関数内で変数をローカル変数として定義することにより、変数に格納された値が使用しているメモリを開放することができます。

同時に大量の選択セットを管理することは好ましくありません。AutoLISP アプリケーションでは、一度に 128 を超える選択セットを開くことはできません(この限度はシステムによっては、もっと少ないこともあります)。限度に達すると、AutoCAD はそれ以上選択セットを作成しません。一度に最小限の数の選択セットを開き、不要になった選択セットにはできるだけ早い内に nil を設定してください。最大数の選択セットに達したら、別の ssget を呼び出す前に、gc 関数を呼び出して未使用のメモリを解放してください。