;************************************
; Program : WC
; Wall Center Lines
; MODIFY Lee_Hoyoung
; 2003/07/21
;*************************************
; 벽체의 중심선을 작성하는 프로그램
;*************************************
;* 시스템변수의 현재값을 대피시킬 전역변수(list 형태)
(setq #ENV nil)
;* 사용할 시스템 변수의 현재값을 대피시킨다.
;* 해당 시스템 변수의 값을 설정한다
(defun push-env()
(setq #ENV (list (getvar “BLIPMODE”)
(getvar “CMDECHO”)
(getvar “EXPERT”)
(getvar “OSMODE”)
)
)
(setvar “BLIPMODE” 0)
(setvar “CMDECHO” 0)
(setvar “EXPERT” 1)
(setvar “OSMODE” 0)
) ;of defun
;* 대피시켜둔 시스템 변수의 값을 복구시킨다.
(defun pop-env()
(setvar “BLIPMODE” (car #ENV))
(setvar “CMDECHO” (cadr #ENV))
(setvar “EXPERT” (caddr #ENV))
(setvar “OSMODE” (cadddr #ENV))
) ;of defun
;;********************************
(defun C:wc(/
l1 l2 dnum l1s l1e l2s l2e dst1
dst2 temp angs ange dt1 dt2 oldc count
dls dle
)
(defun SETERR(s)
(if (/= s “Function cancelled”)
(princ (strcat “nError: ” s))
); of If
(setq *error* oer seterr nil)
(princ)
); of SETERR
(setq oer *error* *error* seterr)
(SETQ QLAYER (GETVAR “CLAYER”))
(push-env)
(COMMAND “-LAYER” “M” “AREA” “C” “7” “” “S” “” “”)
;;;;벽체의 중심선을 작성하려면 레이어명을 “center” 로 칼라는 “1”로 변경
;;;example;;;(command “-layer” “m” “center” “c” “1” “” “s” “” “” )
(setq l1 (entget (car (entsel “n첫번째선을 선택하시오: “))))
(setq l2 (entget (car (entsel “n두번째선을 선택하시오: “))))
(setq dnum 2)
(setq l1s (cdr (assoc 10 l1)))
(setq l1e (cdr (assoc 11 l1)))
(setq l2s (cdr (assoc 10 l2)))
(setq l2e (cdr (assoc 11 l2)))
(setq dst1 (distance l1s l2s))
(setq dst2 (distance l1s l2e))
(if (< dst2 dst1)
(progn
(setq temp l2s)
(setq l2s l2e)
(setq l2e temp)
)
)
(setq angs (angle l1s l2s))
(setq ange (angle l1e l2e))
(setq dst1 (distance l1s l2s))
(setq dst2 (distance l1e l2e))
(setq dt1 (/ dst1 dnum))
(setq dt2 (/ dst2 dnum))
(setq oldc (getvar “CECOLOR”))
;(setvar “CECOLOR” “GREEN”)
(setq count 1)
(repeat (1- dnum)
(setq dls (polar l1s angs (* count dt1)))
(setq dle (polar l1e ange (* count dt2)))
(command “LINE” dls dle “”)
(setq count (1+ count))
) ;of repeat
(setvar “CECOLOR” oldc)
(SETVAR “CLAYER” QLAYER)
(pop-env)
(setq *error* oer seterr nil)
(prin1)
) ;of defun
(c:wc)
매번 죄송하네요 ㅜㅜ