안녕하세요.
ACAD 사용자입니다.
복수도면 파일내 각 sheet 마다 수정일자, 스케일, 이름을 자동 삽입하는 Lisp입니다.
이름, 날짜삽입이나 스케일 계산은 잘되는데…
그런데 기존 날짜와 이름등이 삭제가 안되고 문자가 덥어쓰기가 되네요.
삭제후 새로운 날짜나 이름등을 넣고 싶은데 어디가 잘못된건지…ㅠㅠ
수정부탁합니다.
그리고 이 리습을 실행한 뒤부터 파일내 모든 TEXT가 Romans로 변경되버립니다.
한글도 다 깨지구요. 어디가 문제인지…..폰트명을 gulim.ttc, gulim.ttf, gulim.shx 등으로
설정하면 인식이 안됩니다.
큰글꼴이 아니라고 메세지가 뜨거나…
ㅠㅠ
====================================================================
;; 에러정의
(defun title_ErrorHandler (s)
(if (/= s “Function cancelled”)
(if (= s “quit / exit abort”)
(princ)
(princ (strcat “nError: ” s))
)
)
;; 초기변수 반환
(if title_OrgError (setq *error* title_OrgError))
(if cur_osmode (setvar “osmode” cur_osmode))
(if cur_layer (setvar “clayer” cur_layer))
(if cur_textstyle (setvar “textstyle” cur_textstyle))
(if cur_textsize (setvar “textsize” cur_textsize))
(if cur_orthomode (setvar “orthomode” cur_orthomode))
(princ)
)
;; 복수도면 도면작성자 입력 프로그램
(defun C:WN (/ title_OrgError obj_a index count obj_p)
;; 에러 핸들러 셋업
(if *error*
(setq title_OrgError *error*
*error* title_ErrorHandler)
(setq *error* title_ErrorHandler)
)
;; 초기 변수값 확보
(setq cur_osmode (getvar “osmode”))
(setq cur_textstyle (getvar “textstyle”))
(setq cur_textsize (getvar “textsize”))
(command “ucs” “w”)
(command “style” “굴림” 0.0 1.0 0.0 “N” “N”)
;; 오늘 날짜 계산
(setq date (getvar “CDATE”)
date (itoa (fix date))
yy (substr date 1 4)
mm (substr date 5 2)
dd (substr date 7 2)
yymmdd (strcat yy”.”mm “.” dd )
)
;; 회사명A1양식 선택 실행
(setq obj_a (ssget “x” ‘((0 . “INSERT”)(2 . “회사명A1”))))
(setq index 0)
(while obj_a
(setq obj_p (entget (ssname obj_a index)))
(wname2_A1)
(setq index (+ 1 index))
(if (= (sslength obj_a) index) (setq obj_a nil))
)
;; 회사명A3양식 선택 실행
(setq obj_a (ssget “x” ‘((0 . “INSERT”)(2 . “회사명A3”))))
(setq index 0)
(while obj_a
(setq obj_p (entget (ssname obj_a index)))
(wname2_A3)
(setq index (+ 1 index))
(if (= (sslength obj_a) index) (setq obj_a nil))
)
;; 초기값 반환
(setvar “osmode” cur_osmode)
(setvar “textstyle” cur_textstyle)
(setvar “textsize” cur_textsize)
(if title_OrgError (setq *error* title_OrgError))
(if cur_osmode (setvar “OSMODE” cur_osmode))
(if cur_layer (setvar “CLAYER” cur_layer))
(if cur_textstyle (setvar “TEXTSTYLE” cur_textstyle))
(if cur_textsize (setvar “TEXTSIZE” cur_textsize))
(if cur_orthomode (setvar “ORTHOMODE” cur_orthomode))
(princ)
)
; 회사명A3 도면양식의 스케일,날짜 이름 삽입위치 계산 및 삽입
(defun Wname2_A3 ()
(setq dwgp (cdr (assoc 10 obj_p))
dwgs (cdr (assoc 41 obj_p))
)
(setq pe1 (list 262.8 17.0)
pe2 (list 314.0 4.5)
pt1 (list 307.1 7.6)
pt2 (list 272.1 7.6)
pt3 (list 272.1 13.9)
)
(setq pe1 (mapcar ‘* (list dwgs dwgs) pe1)
pe1 (mapcar ‘+ dwgp pe1)
pe2 (mapcar ‘* (list dwgs dwgs) pe2)
pe2 (mapcar ‘+ dwgp pe2)
pt1 (mapcar ‘* (list dwgs dwgs) pt1)
pt1 (mapcar ‘+ dwgp pt1)
pt2 (mapcar ‘* (list dwgs dwgs) pt2)
pt2 (mapcar ‘+ dwgp pt2)
pt3 (mapcar ‘* (list dwgs dwgs) pt3)
pt3 (mapcar ‘+ dwgp pt3)
)
(title_scale)
(setvar “osmode” 0)
(command “erase” “W” pe1 pe2 “”)
(setvar “textstyle” “굴림”)(setvar “textsize” (* dwgs 2.0))(setvar “clayer” “0”)
(command “text” “j” “MC” pt1 “” “” “설계자”)
(command “text” “j” “MC” pt2 “” “” yymmdd)
(command “text” “j” “MC” pt3 “” “” scale_p)
)
; 회사명A1 도면양식의 스케일,날짜 이름 삽입위치 계산 및 삽입
(defun Wname2_A1 ()
(setq dwgp (cdr (assoc 10 obj_p))
dwgs (cdr (assoc 41 obj_p))
)
(setq pe1 (list 671.4 16.9)
pe2 (list 722.6 4.4)
pt1 (list 715.7 7.5)
pt2 (list 680.7 7.5)
pt3 (list 680.7 13.8)
)
(setq pe1 (mapcar ‘* (list dwgs dwgs) pe1)
pe1 (mapcar ‘+ dwgp pe1)
pe2 (mapcar ‘* (list dwgs dwgs) pe2)
pe2 (mapcar ‘+ dwgp pe2)
pt1 (mapcar ‘* (list dwgs dwgs) pt1)
pt1 (mapcar ‘+ dwgp pt1)
pt2 (mapcar ‘* (list dwgs dwgs) pt2)
pt2 (mapcar ‘+ dwgp pt2)
pt3 (mapcar ‘* (list dwgs dwgs) pt3)
pt3 (mapcar ‘+ dwgp pt3)
)
(title_scale)
(setvar “osmode” 0)
(command “erase” “W” pe1 pe2 “”)
(setvar “textstyle” “gulim”)(setvar “textsize” (* dwgs 2.0))(setvar “clayer” “0”)
(command “text” “j” “MC” pt1 “” “” “설계자”)
(command “text” “j” “MC” pt2 “” “” yymmdd)
(command “text” “j” “MC” pt3 “” “” scale_p)
)
; 도면 척도값을 구함
(defun title_scale ()
(cond
((equal dwgs 1.0 0.05) (setq scale_p “1:1”))
((> dwgs 1.0)
(progn
(setq scale_p (fix dwgs)
scale_d (- (fix (* dwgs 10)) (* (fix dwgs) 10))
scale_dd (- (fix (* dwgs 100)) (* (fix (* dwgs 10)) 10))
)
(if (>= scale_dd 5) (setq scale_d (+ scale_d 1)))
(cond
((> scale_d 9) (setq scale_p (itoa (+ scale_p 1))))
((and (<= scale_d 9)(>= scale_d 1))
(setq scale_p (strcat (itoa scale_p) “.” (itoa scale_d)))
)
((< scale_d 1) (setq scale_p (itoa scale_p)))
)
(setq scale_p (strcat scale_p “:1”))
)
)
(( < dwgs 1.0)
(progn
(setq dwgsm (/ 1 dwgs))
(setq scale_p (fix dwgsm)
scale_d (- (fix (* dwgsm 10)) (* (fix dwgsm) 10))
scale_dd (- (fix (* dwgsm 100)) (* (fix (* dwgsm 10)) 10))
)
(if (>= scale_dd 5) (setq scale_d (+ scale_d 1)))
(cond
((> scale_d 9) (setq scale_p (itoa (+ scale_p 1))))
((and (<= scale_d 9)(>= scale_d 1))
(setq scale_p (strcat (itoa scale_p) “.” (itoa scale_d)))
)
((< scale_d 1) (setq scale_p (itoa scale_p)))
)
(setq scale_p (strcat “1/” scale_p))
)
)
)
)
용역비를 지불 하고 용역을 맡기셔야 할듯 합니다.