図描きの備忘録

日々の業務の時間短縮。残業しないで帰る事を目指し、悪戦苦闘中。AutoCAD、Lisp、効率化、自動化、合理的、プログラミング、資産運用勉強中

Lisp実践編 - 32 - X,Y,Z座標毎に尺度変更!

Lisp実践編 - 32

こんにちは!

エカキオです!

ブロックオブジェクトの尺度をコマンドライン上で変更出来ます。


更にこのLispでは、X,Y,Z座標毎に別々の尺度を指定出来ます!
様々なシーンで役に立ってくれると思います。

ぜひともご利用ください!

そのままコピーして、好きなコマンド・好きなファイル名にしていただいても構いません。
保存と利用方法はこちら。
AutoCAD Lisp 入門 - 1 - 最強の時短ツール「Lisp」とは - 図描きの備忘録


コード

;ブロックのX,Y,Z座標の尺度入力
(defun c:SB ( / ss1 l0 l1 l2 l3 cnt num et)
	(princ "¥nブロックのX,Y,Z座標の尺度入力")
	(setq ss1(ssget (list (cons 0 "INSERT"))))
	(initget 3)
	(setq l0 (getreal"¥n尺度 X:"))
	(initget 3)
	(setq l2 (getreal"¥n尺度 Y:"))
	(initget 3)
	(setq l3 (getreal"¥n尺度 Z:"))
	(setq cnt 0)
        (setq num (sslength ss1))
	(command "undo" "be")
	(while (< cnt num)
                  (setq l1(ssname ss1 cnt))
                  (setq et(entget l1))
		 (setq et (subst (cons 41 l0) (assoc 41 et) et ))
		 (setq et (subst (cons 42 l2) (assoc 42 et) et ))
		 (setq et (subst (cons 43 l3) (assoc 43 et) et ))
		  (entmod et)
                  (setq cnt(1+ cnt))
           )
	(command "undo" "e")
           (princ)
)

参考記事

Lisp 入門編 カテゴリーの記事一覧 - 図描きの備忘録

実践編コードの共通事項

最上段には、コメントを入れています。
こちらのLispは何を目的にしているかを一目で判断するためです。
また、「(defun c:※※ ()」の直下には、
(princ "¥n〜")を入れることで、コマンド実行の際も、コマンドの目的がわかりやすくなっています。(たくさん作ってると後々忘れてしまいます。)

※こちらのLispは自己責任でお使い下さい。万が一、AutoCADがフリーズ、強制終了
した場合など不慮の事故が起きた場合も当ブログでは責任を負いかねます。
まずは何もないデータなどで、使用感を確かめてから使用することをお勧めします。


Related Posts Plugin for WordPress, Blogger...