・ ssget のフィルターリストあれこれ
ssget の フィルタリスト
については、ヘルプに、かなり詳しい解説が出ています
ここでは、ちょっとわかりにくいところを、ちょっとだけ掘り下げてみました
ユーザーに平行寸法を選択させる<ビット方式のマスクの使用> [2004/6/27一部修正・・・ thanks hmhさん]
平行寸法のグループコード70の値は 1,33,129,161 の4パターンが存在しますので、"<OR","OR>"を使って下記のように表現できます [2004/8/25一部修正・・・ 161を追加]
(setq ss (ssget '(
(-4 . "<AND")
(0 . "DIMENSION")
(-4 . "<OR")
(70 . 1)
(70 . 33)
(70 . 129)
(70 . 161)
(-4 . "OR>")
(-4 . "AND>")
)
)
)これを、ビット方式のマスクを使うと、可能性のあるグループコードの値を列記しなくても良くなります
しかし記述が長くなる・・・(~_~;)(setq ss (ssget '( (-4 . "<AND") (0 . "DIMENSION") (-4 . "&=") (70 . 1) (-4 . "<NOT") (-4 . "<OR") (-4 . "&=") (70 . 2) (-4 . "&=") (70 . 4) (-4 . "OR>") (-4 . "NOT>") (-4 . "AND>") ) ) )
ユーザーに平行寸法と回転寸法を選択させる<ビット方式のマスクの使用>
ビット方式のマスクで 値が 0 と1のものを選択したい場合の例です
"<NOT", "<OR","&=","OR>","NOT>"を使います
(setq ss (ssget '(
(-4 . "<AND")
(0 . "DIMENSION")
(-4 . "<NOT")
(-4 . "<OR")
(-4 . "&=")
(70 . 2)
(-4 . "&=")
(70 . 4)
(-4 . "OR>")
(-4 . "NOT>")
(-4 . "AND>")
)
)
)
図面内の TEXT と MTEXT を すべて選択する<ワイルドカードの使用>
例1 "*":空を含む任意の文字の利用
(setq ss (ssget "X" '((0 . "*TEXT"))))
例2 ",":2つのパターンの区切りの利用
(setq ss (ssget "X" '((0 . "TEXT,MTEXT"))))
点 pt1 を通るオブジェクトの選択<窓選択>
(setq pt1 '(10 10 0))
(setq ss (ssget "C" pt1 pt1))
(setq ss (ssget pt1))
では、pt1を通るオブジェクトが複数存在しても、ひとつのオブジェクトしか選択されません