概要 - 選択セットを修正する(AutoLISP)

選択セットを作成すると、ssadd 関数および ssdel 関数を使用して、その選択セットに図形を追加したり、選択セットから図形を除去することができます。

ssadd 関数を使用すると、新しい選択セットを作成したり、既存の選択セットに図形を追加することができます。次のサンプル コードは、現在の図面の最初の図形と最後の図形を含む選択セットを作成します(entnextentlast)。

(setq fname (entnext))                 ; Gets first entity in the drawing.
(setq lname (entlast))                 ; Gets last entity in the drawing.
(if (not fname)
  (princ "\nNo entities in drawing. ")
  (progn
    (setq ourset (ssadd fname))        ; Creates a selection set 
                                       ; of the first entity.
    (ssadd lname ourset)               ; Adds the last entity to 
                                       ; the selection set.
  )
)

上のコードは、たとえデータベース内に 1 つの図形しかなくても正しく実行されます(この場合、entnextentlast は同じ図形名を返すことになり、それらが引数として渡されます)。既に選択セットに含まれている図形名を ssadd に渡しても、その要求は無視されますが、エラーにはなりません。

次のサンプル コードは、上の例で作成した選択セットから最初の図形を除去します。

(ssdel fname ourset)

図面に複数の図形がある場合(fnamelname が等しくない場合)、選択セット ourset には、図面内の最後の図形 lname だけが含まれることになります。

sslength 関数は選択セット内の図形数を返し、ssmemb は特定の図形が選択セットのメンバーかどうかをテストします。ssname 関数は選択セットに対するインデックスを使用して、その選択セット内の特定の図形の名前を返します(選択セット内の図形は 0 番から始まります)。

次のサンプル コードは ssname の呼び出しの例です。

(setq sset (ssget))                     ; Prompts the user to create
                                        ; a selection set.
(setq ent1 (ssname sset 0))             ; Gets the name of the first
                                        ; entity in sset.
(setq ent4 (ssname sset 3))             ; Gets the name of the fourth
                                        ; entity in sset.
(if (not ent4)
  (princ "\nNeed to select at least four entities. ")
)
(setq ilast (sslength sset))            ; Finds index of the last
                                        ; entity in sset.
                                        ; Gets the name of the last
                                        ; entity in sset.
(setq lastent (ssname sset (1- ilast)))

どのような方法で選択セットに図形を追加しても、選択セットに図形が重複して含まれることはありません。同じ図形を複数回追加しても、2 回目以降の追加は無視されます。したがって、sslength は、指定された選択セット内の図形の正確な数を返します。