図枠内に複数の断面や詳細図を配置する際、毎回区切り線やビュー名称を手作業で入れるのは手間です。そこで、レイアウトを自動で分割し、区切り線と「ビュー名称」ブロックを挿入するLISPを作成しています。
このLISPは以下のパターンに対応しています。
・LAY0:分割なし(ビュー名称のみ配置)
・LAY1:二分割(縦)
・LAY2:二分割(横)
・LAY3:三分割(縦)
・LAY4:四分割(等分)
実行すると、自動で「レイアウト用」画層を作成(なければ新規作成)し、指定座標にLINEで区切り線を描画します。その後、「ビュー名称」ブロックを所定位置に挿入し、分解して画層を統一しています。
分解している理由は、後から個別に文字編集や微調整をしやすくするためです。区切り線と名称の位置はあらかじめ図枠寸法に合わせて座標指定しているため、毎回ズレることなく正確に配置されます。
図面レイアウトを標準化している場合、このLISPを使うことで数分かかる作業が一瞬で完了します。複数図面を扱う現場ほど効果が大きい、自動化向けの実務LISPです。
;;; 分割なし
;;; コマンド名:LAY0
(defun c:LAY0 (/ layname p1 p2 blkname b1 b2 ent_line ent_blk1 ent_blk2)
(vl-load-com)
(setq layname “レイアウト用”)
(if (not (tblsearch “LAYER” layname))
(command “_.LAYER” “_M” layname “_C” “7” “” “”)
)
(setq blkname “ビュー名称”)
(setq b1 (list 208.9591 31.9322 0.0))
;; ブロック1
(command “_.-INSERT” blkname b1 1 1 0)
(setq ent_blk1 (entlast))
(command “_.EXPLODE” ent_blk1)
;; 元の CHPROP のまま
(command “_.CHPROP” ent_blk1 “” “_LA” layname “”)
(princ “nLAY0 完了(ブロック分解済)”)
(princ)
)
;;; 二分割(縦)
;;; コマンド名:LAY1
(defun c:LAY1 (/ layname p1 p2 b1 b2 blkname ent_line ent_blk1 ent_blk2)
(vl-load-com)
(setq layname “レイアウト用”)
(if (not (tblsearch “LAYER” layname))
(command “_.LAYER” “_M” layname “_C” “7” “” “”)
)
(setq p1 (list 208.9591 286.5418 0.0))
(setq p2 (list 208.9591 21.9322 0.0))
(command “_.LINE” p1 p2 “”)
(setq ent_line (entlast))
(setq blkname “ビュー名称”)
(setq b1 (list 107.7739 31.9322 0.0))
(setq b2 (list 310.1443 31.9322 0.0))
;; ブロック1
(command “_.-INSERT” blkname b1 1 1 0)
(setq ent_blk1 (entlast))
(command “_.EXPLODE” ent_blk1)
;; ブロック2
(command “_.-INSERT” blkname b2 1 1 0)
(setq ent_blk2 (entlast))
(command “_.EXPLODE” ent_blk2)
;; 画層変更(元のまま)
(command “_.CHPROP” ent_line “” “_LA” layname “”)
(command “_.CHPROP” ent_blk1 “” “_LA” layname “”)
(command “_.CHPROP” ent_blk2 “” “_LA” layname “”)
(princ “nLAY1 完了(ブロック分解済)”)
(princ)
)
;;; 二分割(横)
;;; コマンド名:LAY2
(defun c:LAY2 (/ layname p1 p2 blkname b1 b2 ent_line ent_blk1 ent_blk2)
(vl-load-com)
(setq layname “レイアウト用”)
(if (not (tblsearch “LAYER” layname))
(command “_.LAYER” “_M” layname “_C” “7” “” “”)
)
(setq p1 (list 6.58864 154.237 0.0))
(setq p2 (list 411.3295 154.237 0.0))
(command “_.LINE” p1 p2 “”)
(setq ent_line (entlast))
(setq blkname “ビュー名称”)
(setq b1 (list 208.9591 164.237 0.0))
(setq b2 (list 208.9591 31.9322 0.0))
;; ブロック1
(command “_.-INSERT” blkname b1 1 1 0)
(setq ent_blk1 (entlast))
(command “_.EXPLODE” ent_blk1)
;; ブロック2
(command “_.-INSERT” blkname b2 1 1 0)
(setq ent_blk2 (entlast))
(command “_.EXPLODE” ent_blk2)
;; 元の CHPROP のまま
(command “_.CHPROP” ent_line “” “_LA” layname “”)
(command “_.CHPROP” ent_blk1 “” “_LA” layname “”)
(command “_.CHPROP” ent_blk2 “” “_LA” layname “”)
(princ “nLAY2 完了(ブロック分解済)”)
(princ)
)
;;; 三分割(縦)
;;; コマンド名:LAY3
(defun c:LAY3 (/ layname blkname p1a p1b p2a p2b b1 b2 b3
ent1 ent2 ent_blk1 ent_blk2 ent_blk3)
(vl-load-com)
(setq layname “レイアウト用”)
(if (not (tblsearch “LAYER” layname))
(command “_.LAYER” “_M” layname “_C” “7” “” “”)
)
;; 1本目
(setq p1a (list 141.5023 286.5418 0.0))
(setq p1b (list 141.5023 21.9322 0.0))
(command “_.LINE” p1a p1b “”)
(setq ent1 (entlast))
;; 2本目
(setq p2a (list 276.4159 286.5418 0.0))
(setq p2b (list 276.4159 21.9322 0.0))
(command “_.LINE” p2a p2b “”)
(setq ent2 (entlast))
(setq blkname “ビュー名称”)
(setq b1 (list 74.0455 31.9322 0.0))
(setq b2 (list 208.9591 31.9322 0.0))
(setq b3 (list 343.8727 31.9322 0.0))
;; ブロック1
(command “_.-INSERT” blkname b1 1 1 0)
(setq ent_blk1 (entlast))
(command “_.EXPLODE” ent_blk1)
;; ブロック2
(command “_.-INSERT” blkname b2 1 1 0)
(setq ent_blk2 (entlast))
(command “_.EXPLODE” ent_blk2)
;; ブロック3
(command “_.-INSERT” blkname b3 1 1 0)
(setq ent_blk3 (entlast))
(command “_.EXPLODE” ent_blk3)
;; 元の CHPROP のまま
(command “_.CHPROP” ent1 “” “_LA” layname “”)
(command “_.CHPROP” ent2 “” “_LA” layname “”)
(command “_.CHPROP” ent_blk1 “” “_LA” layname “”)
(command “_.CHPROP” ent_blk2 “” “_LA” layname “”)
(command “_.CHPROP” ent_blk3 “” “_LA” layname “”)
(princ “nLAY3 完了(ブロック分解済)”)
(princ)
)
;;; 4分割(等分)
;;; コマンド名:LAY4
(defun c:LAY4 (/ layname blkname pairs p1 p2 entlist ent_line
b1 b2 b3 b4 ent_blk1 ent_blk2 ent_blk3 ent_blk4)
(vl-load-com)
(setq layname “レイアウト用”)
(if (not (tblsearch “LAYER” layname))
(command “_.LAYER” “_M” layname “_C” “7” “” “”)
)
;; 4本の線
(setq pairs
(list
(list (list 208.959 154.237 0.0) (list 6.58864 154.237 0.0))
(list (list 208.959 154.237 0.0) (list 208.9591 286.5418 0.0))
(list (list 208.959 154.237 0.0) (list 411.3295 154.237 0.0))
(list (list 208.959 154.237 0.0) (list 208.9591 21.9322 0.0))
)
)
(setq entlist nil)
(foreach pair pairs
(setq p1 (car pair)
p2 (cadr pair))
(command “_.LINE” p1 p2 “”)
(setq entlist (cons (entlast) entlist))
)
(setq blkname “ビュー名称”)
(setq b1 (list 107.7739 164.237 0.0))
(setq b2 (list 310.1443 164.237 0.0))
(setq b3 (list 107.7739 31.9322 0.0))
(setq b4 (list 310.1443 31.9322 0.0))
;; ブロック1
(command “_.-INSERT” blkname b1 1 1 0)
(setq ent_blk1 (entlast))
(command “_.EXPLODE” ent_blk1)
;; ブロック2
(command “_.-INSERT” blkname b2 1 1 0)
(setq ent_blk2 (entlast))
(command “_.EXPLODE” ent_blk2)
;; ブロック3
(command “_.-INSERT” blkname b3 1 1 0)
(setq ent_blk3 (entlast))
(command “_.EXPLODE” ent_blk3)
;; ブロック4
(command “_.-INSERT” blkname b4 1 1 0)
(setq ent_blk4 (entlast))
(command “_.EXPLODE” ent_blk4)
;; 元の CHPROP のまま
(foreach e entlist
(command “_.CHPROP” e “” “_LA” layname “”)
)
(command “_.CHPROP” ent_blk1 “” “_LA” layname “”)
(command “_.CHPROP” ent_blk2 “” “_LA” layname “”)
(command “_.CHPROP” ent_blk3 “” “_LA” layname “”)
(command “_.CHPROP” ent_blk4 “” “_LA” layname “”)
(princ “nLAY4 完了(ブロック分解済)”)
(princ)
)

コメント