아래는 선을 선택할 때 마다 중심선으로 바꾸어주는 리습입니다.
(“중심선”이라는 레이어가 미리 만들어져 있어야 함)
제가 여기에 선길이가 11mm 이하일 경우엔 중심선이 나타나지 않아서 ltscale값을 0.5로 바꾸는 부분을 추가 했는데 잘 되지 않습니다.
어디가 잘 못 되었는지 도움바랍니다.
======================================
(DEFUN C:q2 (/ ent lst p1 p2 cl lst new)
(setvar “cmdecho” 0)
(defun le_err (err)
(setvar “cmdecho” 1)
(setq *error* nil)
(princ)
)
(setq *error* le_err)
(command “undo” “mark”);;;;;;<---이건 뭔지 잘 모르겠습니다. ;;;;
(while (setq ent (entsel “n>> Select Ext. Line :”));esc까지반복
(if ent
(if (= “LINE” (cdr (assoc 0 (entget (car ent)))))
(progn
(setq lst (entget (car ent)))
(setq p1 (cdr (assoc 10 lst)));시작점
(setq p2 (cdr (assoc 11 lst)));끝점
(setq p1 (polar p1 (angle p2 p1) 2));새시작점(2mm연장)
(setq p2 (polar p2 (angle p1 p2) 2));새끝점(2mm연장)
(setq lst (subst (cons 10 p1) (assoc 10 lst) lst));시작점리스트변경
(setq lst (subst (cons 11 p2) (assoc 11 lst) lst));끝점리스트변경
(setq lst (subst (cons 8 “중심선”) (assoc 8 lst) lst));레이어변경
(setq lst (subst (cons 62 256) (assoc 62 lst) lst));컬러변경
;여기서 부터 제가 추가했습니다.
(setq cl (distance p1 p2))
(setq lts 1)
(if (< cl 11) (setq lts 0.5))
(setq lst (subst (cons 48 lts) (assoc 48 lst) lst));ltscale변경
;제가 추가한 부분의 끝입니다.
(setq lts “bylayer”)
(setq lt (cons 6 “bylayer”))
(if (= (assoc 6 lst) nil) ;라인타입이 bylayer(nil)일경우 bylayer를 추가
(setq lst (append lst (list lt)))
)
(setq new (subst (cons 6 lts) (assoc 6 lst) lst))
(entmod new)
)
)
)
)
(setvar “cmdecho” 1)
(setq *error* nil)
(princ)
)
공유