Lisp実践編 - 16
こんにちは!
エカキオです!
以前書いた記事でポリラインとリージョンの関係について紹介させて頂きましたね。
AutoCADで時短 - 5 - リージョンを使う - 図描きの備忘録
今回紹介するLispは、ポリラインを簡単に合体します。
面積、色塗りなど様々なシーンでの利用が見込めます。
Lispのタネを公開すると、
リージョン化
↓
合算
↓
リージョン分解
↓
ポリラインとして結合
それをLispに連続して、動作させています。
バージョンによって、PEDITの部分がうまく動かないことがあると思いますので、エラーが出るよ!
という方はご相談ください。
ぜひともご利用ください!
そのままコピーして、好きなコマンド・好きなファイル名にしていただいても構いません。
AutoCAD Lisp 入門 - 1 - 最強の時短ツール「Lisp」とは - 図描きの備忘録
コード
;ポリライン合体 (defun c:GA ( / ss1 cnt ss2 num l1 la sy1) (princ "¥nポリライン合体") (setq ss1(ssget(list (cons 0 "LWPOLYLINE")))) (setq cnt 0) (setq ss2 (ssadd)) (setq num (sslength ss1)) (command "undo" "be") (setq sy1 (getvar "PEDITACCEPT"));ポリライン設定の取得 (setvar "PEDITACCEPT" 1) (setq la (getvar "clayer")) (setvar "clayer" (cdr(assoc 8 (entget(ssname ss1 cnt)))));選択1のレイヤー取得 (while (< cnt num) (setq l1(ssname ss1 cnt)) (command "REGION" l1 "") (ssadd (entlast) ss2) (setq cnt(1+ cnt)) ) (command "UNION" ss2 "") (command "EXPLODE" "l") (command "pedit" "m" "p" "" "j" "" "") (setvar "clayer" la) (setvar "PEDITACCEPT" sy1) (command "undo" "e") (princ) )
参考記事
AutoCAD Lisp 入門 - 2 - オブジェクトの情報を抽出 - 図描きの備忘録
AutoCAD Lisp 入門 - 7 - 繰り返し処理 - 図描きの備忘録
AutoCAD Lisp 入門 - 10 - フィルターオブジェクト選択 - 図描きの備忘録
実践編コードの共通事項
最上段には、コメントを入れています。
こちらのLispは何を目的にしているかを一目で判断するためです。
また、「(defun c:※※ ()」の直下には、
(princ "¥n〜")を入れることで、コマンド実行の際も、コマンドの目的がわかりやすくなっています。(たくさん作ってると後々忘れてしまいます。)
※こちらのLispは自己責任でお使い下さい。万が一、AutoCADがフリーズ、強制終了
した場合など不慮の事故が起きた場合も当ブログでは責任を負いかねます。
まずは何もないデータなどで、使用感を確かめてから使用することをお勧めします。
キーワード
ポリライン,リージョン,合体,合算,region,union