選びたいものだけ
こんにちは!
エカキオです!
今回の記事では、Lispを使ってオブジェクト選択の時に特定のオブジェクトタイプのみを選択できるように、フィルターをかける方法をご紹介します。
図面を描き進めていくと、色んなタイプの図形が混じって、特定のオブジェクトタイプだけ選択するのも大変ですよね。
最近のAutoCADでは、類似オブジェクトの選択や、フィルターコマンドもありますが、自分の都合の良いフィルターをかける方法を身につけましょう。
フィルターの掛け方
フィルターをかけるには(ssget)関数のオプションを使います。
(ssget)関数には色々なオプションがあります。
(ssget ○ △ □ ◇)
○:オブジェクト選択方法を指定する文字列。
" "←これで囲んで下さい。また、アルファベットの前には「_」アンダーバーを。
よく使うものを抜粋します。
C:交差選択
W:窓選択
CP:ポリゴン交差選択
(指定されたポリゴンの内部とポリゴンと交差するすべてのオブジェクト)
WP:ポリゴン窓選択
(指定されたポリゴンに完全に含まれるすべてのオブジェクト)
F:フェンス選択
L:データベースに最後に追加された可視オブジェクト
P:最後に作成された選択セット
X:データベース全体(全てのオブジェクト)
△:窓選択範囲を指定する場合の1点目、2点目(x y)で表記
□:△の点をリストにしたもの
例えば
( (1 1)(3 1)(5 2)(2 4) )
◇:フィルターを指定する部分
以前紹介した、(entget)関数の中にあるものを書きます。
その情報を持つオブジェクトだけ選択できるようになるということです。
例えば
オブジェクトタイプフィルターにする場合。
(0 . "LINE")
(0 . "POLYLINE")
(0 . "CIRCLE")
などなど
画層フィルターにする場合。
(8 . "躯体")
(8 . "下書き")
などなど
色フィルターにする場合。(色番号で指定)
(62 . 5)
(62 . 33)
などなど
具体的な書き方というと。(HELPから抜粋)
(setq pt_list '((1 1)(3 1)(5 2)(2 4)))
(ssget "_WP" pt_list '((0 . "LINE") (62 . 5)))
pt_list 引数で定義されるポリゴンの内側に含まれた
すべての青色の線分の選択セットを作成します。
オプションが多くてややこしいですね。
上記具体例の中にある、「'」シングルクォーテーションマークは、
(list 〜)関数と同義で、この関数は、一まとまりのカッコを作る時に使用します。
'((0 . "LINE") (62 . 5)))
と
(list ((0 . "LINE") (62 . 5))))
は同じ意味です。
でも、使えるようになるときっと役に立ちます!
ぜひ覚えてください。
例えば文字オブジェクトだけに処理を行うLispを作った時は、文字だけ選択できるフィルターを付けましょう。
OR フィルター
例えば、線分とポリラインのどちらも選択出来るようにしたい時は、下のように書きます。
(list (-4 . "<OR")(0 . "LINE"))(0 . "POLYLINE")(-4 . "OR>"))
これで、線分でもポリラインでも選択可能なフィルターになりました。
いかがでしたでしょうか。
どんどん専門的な内容になって来ているので、わかりやすく説明できているか不安が残りつつやっています。
不明点があれば、どしどしコメント頂ければ幸いです。
気軽にお申し付けください。
では、この辺で。
エカキオ