본 LISP은 캐드 파일내에 Rev. Mark를 표기하는 Lisp으로써 Lisp 실행시 “rev”이라는 레이어에 2번 색깔을 부여하도록 수정하였습니다.
레이어 색은 2번으로 실현이 되는데, 그 색을 “BYLAYER”로 바로 나오도록 하려면
어떻게 수정해야 하는지요?
(아직, Lisp에 대해 많이 부족한 상황으로 본 Lisp은 기존 파일입니다)
(defun cl_err (st) ; If an error (such as CTRL-C) occurs
; while this command is active…
(if (/= st “Function cancelled”)
(princ (strcat “nError: ” st))
)
(setvar “osmode” osmode)
(setvar “orthomode” orth)
(setvar “snapmode” snapmode)
(setvar “clayer” la)
(command “undo” “end”)
(setvar “cmdecho” cmdecho)
(setq *error* olderr) ; Restore old *error* handler
(princ)
)
(defun cl(/ la osmode cmdecho orth snapmode f1 p4 e f2 p2 c p1 p7 p3 a d
aa ab p5 p6)
(graphscr)
(setq olderr *error*
*error* cl_err)
(defun dtr (a)(* pi (/ a 180.0)))
(setq la (getvar “clayer”)
osmode (getvar “osmode”)
cmdecho (getvar “cmdecho”)
orth (getvar “orthomode”)
snapmode (getvar “snapmode”)
)
(setvar “cmdecho” 0)
(command “undo” “group”)
(if (not (tblsearch “layer” “rev”))
(command “_layer” “_new” “rev” “_color” “2” “rev” “”) ==> 이 부분입니다.
)
(setvar “clayer” “rev”)
(setvar “osmode” 0)
(setvar “orthomode” 0)
(setvar “snapmode” 0)
(setq f1 nil)
(setq p4 nil)
(setq e 3)
(setq f2 nil)
(setq P2 NIL)
(setq c 0)
(setq p1 (getpoint “nEnter first point”))
(command “pline” p1 “w” “0” “0” “a”)
(setq p7 p1)
(while p7
(if (/= p3 nil) (setq f1 p4))
(if (> c 1) (setq f1 (polar p4 a d)))
(setq p2 (getpoint “nnext point ” p1))
(setq c (+ c 1))
(if (= p2 nil) (setq p2 p7 p7 nil))
(setq a (angle p1 p2))
(setq aa (distance p1 p2))
(setq ab (/ aa 2))
(setq d (/ aa 4))
(setq p5 (polar p1 (+ a (dtr 0)) ab))
(setq p6 (polar p5 (+ a (dtr 90)) d))
(setq p3 (polar p1 (- a (dtr 90)) d))
(setq p4 (polar p2 (- a (dtr 90)) d))
(command “s” p6 p2)
(if (= p7 nil) (command “”))
(setq p1 p2)
)
(setvar “osmode” osmode)
(setvar “orthomode” orth)
(setvar “snapmode” snapmode)
(setvar “clayer” la)
(command “undo” “end”)
(setvar “cmdecho” cmdecho)
(setq *error* olderr)
(princ)
)