(setq Obj (car (entsel))) でObjに入れた情報を使って、コマンド操作で図形の編集をしてみましょう。
準備
まずは、RECTANG[長方形] コマンドで長方形を描いてください。
画層は 0 以外で、色は赤以外でお願いします。
そして、このコードをコマンドラインに入力して、長方形を選択して、図形名(オブジェクト名)の情報を、変数Objに入れてください。
(setq Obj (car (entsel)))
Objに長方形の図形名が入っているかどうかは、コマンドラインに
!Obj
と入力することでObjに入った情報を確認できます。
このように、<Entity name: x1xx2xx3xx> が入っていれば成功です。
数記号の部分は図形により異なります。
ここまでの(car(entsel)) で図形名を得ることがよくわからない方はまずは↓の記事から
command-s で編集してみよう
command-s がよくわからない方はこちらの記事から
CHANGE[データ変更]
色を赤に変える
AutoCADコマンドCHANGE[データ変更] を使って、図形の色を赤にしてみましょう。
コマンドCHANGEで、[プロパティ(P)]> [色(C)] > [赤)(1)] を選ぶことで色を赤にできます。
これをAutoLISPに書き換えるとこうなります。
(command-s "._CHANGE" Obj "" "_P" "_C" "1" "")
先ほど、長方形の図形名を変数Objに図形名に入れました。
なので、このコードをコマンドラインに入力すると図形の色が赤に変わります。
画層を0にする
今度は画層を0にしてみましょう。
コマンドCHANGEで、[プロパティ(P)]> [画層(LA)] > [画層名] を選ぶことで、図形の画層を変更できます。
コマンドラインに以下のコードを入力れてみてください。
図形の画層0になります。
(command-s "._CHANGE" Obj "" "_P" "_LA" "0" "")
PEDIT[ポリライン編集]
今度は、線の太さも変えてみましょう。RECTANG[長方形] コマンドで作った長方形はポリラインなので、ポリライン編集が使えます。
コマンドPEDIT[ポリライン編集]で、[幅(W)]> [数値] で変更できます。
AutoLISPにするとこうなります。コマンドラインに入力してみてください。線の幅が5になります。
(command-s "._PEDIT" Obj "_W" 5 "")
MOVE[移動]
次はMOVE[移動]を使ってみましょう。
オプション[移動距離(D)]を選ぶことで、座標を使って移動することができます。
今回は、X方向に100動かしてみましょう。
同じように、コマンドラインに入力して下さい。X方向に100動きます。
(command-s "._MOVE" Obj "" "_D" "100,0,0")
一度の選択で複数のコマンド操作
上で上げた例をひとまとめにして、一度の図形選択で、色を赤色にして、画層を0にして、線の幅を5にして、✗方向に100移動する。を1つのコマンドにしました。
コマンド名は test です。
(defun c:test ( / Obj)
(setq Obj (car (entsel)))
(command-s "._CHANGE" Obj "" "p" "c" "1" "")
(command-s "._CHANGE" Obj "" "p" "la" "0" "")
(command-s "._PEDIT" Obj "W" 5 "")
(command-s "._MOVE" Obj "" "d" "100,0,0")
(princ))
entselで図形名を得ずに、コマンド内でpause を使ってユーザー入力にする方法もありますが、それだとコマンドの度に何度もユーザーが同じ図形を選択しなければいけません。
複数のコマンド操作をして編集したい時は、こうして図形名を取り出して変数に入れて、図形選択の部分に変数を使うと、何度も図形選択しなくてよいので便利です。
コマンド test を実行すると、選択した図形の色が赤に変わって、画層を0にして、✗方向に100移動を一緒にしてくれます。
図形情報を取り出すメリット、変数を使うメリットがご理解いただけたでしょうか?
まとめ
- 図形名を入れた変数は、command-s でコマンド操作をするときに図形選択の代わりに使える。
- pause と比べ、変数を使った方が一度の図形選択で、いろいろ処理できて便利。
関連記事
この記事と同じことを、がばーっと複数の図形を選択するバージョンです。
選択した図形を移動させる練習問題です。
Comments