Sponsored links

【AutoLISP 図形選択】図形名が入った変数を使ってコマンド操作

Sponsored links
基礎編
Sponsored links

(setq Obj (car (entsel))) でObjに入れた情報を使って、コマンド操作で図形の編集をしてみましょう。

Sponsored links

準備

まずは、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