概要 - 選択フィルタ テストを論理的に分類する(AutoLISP)

ネストされたブール式を使用してテスト グループを定義することによって、ssget で作成したされた選択セットでオブジェクトをフィルタすることができます。

次の表に選択セットのフィルタに使用することができるグループ演算子のリストを示します。

選択セット フィルタ リストのグループ演算子

開始演算子

囲むことのできるオペランドの数

終了演算子

"<AND"

1 つ以上のオペランド

"AND>"

"<OR"

1 つ以上のオペランド

"OR>"

"<XOR"

2 つのオペランド

"XOR>"

"<NOT"

1 つのオペランド

"NOT>"

グループ演算子は、関係演算子と同じように、グループ コード -4 dxf で指定します。グループ演算子はペアで使用するため、フィルタ リスト内で正しく対応付けられていなくてはなりません。対応が正しくないと ssget の呼び出しは失敗します。

(ssget "X"
  '(
    (-4 . "<OR")
      (-4 . "<AND")
        (0 . "CIRCLE")
        (40 . 1.0)
      (-4 . "AND>")
      (-4 . "<AND")
        (0 . "LINE")
        (8 . "ABC")
      (-4 . "AND>")
    (-4 . "OR>")
  )
)

このフィルタ リストでは、半径 1.0 のすべての円と画層 "ABC" 上のすべての線分を選択することができます。グループ演算子では大文字と小文字が区別されないので、"AND>"、"<OR" の代わりに "and>""<or" を使用することもできます。分類演算子はグループ コード -3 dxf の中では使用できません。グループ コード -3 dxf で指定された複数のアプリケーション名には、暗黙的に AND 演算子が適用されます。他のグループ演算子を使用して拡張データをテストする場合は、個別にグループ コード -3 dxf を指定し、必要に応じてそれらをグループ化してください。

次のコード例では、アプリケーション "APP1" と "APP2" の両方ではなくどちらか一方の拡張データを持つすべての円を選択する方法を示しています。

(ssget "X"
  '((0 . "CIRCLE")
    (-4 . "<XOR")
      (-3 ("APP1"))
      (-3 ("APP2"))
    (-4 . "XOR>")
  )
)

頻繁に使用するグループ演算子は、同じ名前のシンボルに代入することでコーディングを単純化できます。上の例は次のように書き直すことができます(この例では、各リストに明示的にクォーテーションを付ける必要があることに注意してください)。

(setq <xor '(-4 . "<XOR")
         xor> '(-4 . "XOR>"))

(ssget "X"
  (list
    '(0 . "CIRCLE")
    <xor
    '(-3 ("APP1"))
    '(-3 ("APP2"))
    xor>
  )
)