도움이 되셨으면 합니다.
아래 코드는 오토캐드, 캐디안 모두 동작합니다.
(defun C:ctt(/ osmm p sbm htxt dtcol ENT-circle l)
(setq osmm (getvar “osmode”))
(setvar “cmdecho” 0)
(setvar “osmode” 0)
(prompt “n같은명칭의 원을 선택하시요.”)
(setq p (ssget ‘((0 . “CIRCLE”))))
(if sbm
(setq sbm-p sbm
sbm (getstring (strcat “n기호문자를 입력하시요.<RP, GP…>:<” sbm “>”))
)
(while (not (Setq sbm (getstring “n기호문자를 입력하시요.<RP, GP…>:”))))
);end if
(if (And sbm (/= sbm “”))
(Setq sbm (strcase sbm))
(Setq sbm (strcase sbm-p))
);end if
(if htxt
(setq htxt-p htxt
htxt (getreal (strcat “n문자의 높이를 입력하시요.:” (rtos htxt) “>”))
)
(while (not (Setq htxt (getreal “n문자의 높이를 입력하시요.:”))))
);end if
(if (not htxt)
(Setq htxt htxt-p)
);end if
(setq dtcol (getvar “dimclrt”))
(if (not (tblsearch “layer” “dim”))
(entmake
(list (cons 0 “LAYER”)
(cons 100 “AcDbSymbolTableRecord”)(cons 100 “AcDbLayerTableRecord”)
(cons 2 “dim”);레이어 명칭
(cons 6 “continuous”);선종류
(cons 62 256);bylayer
)
)
);end if dim레이어가 유무를 판단하고 없는 경우 dim레이어를 생성합니다.
(if (not (tblsearch “style” “ctt”))
(entmake (list (cons 0 “STYLE”)
(cons 2 “ctt”) ;문자 유형 이름은 사용자 임으로 설정하면됩니다.
(cons 3 “romans.shx”) ;영문 글꼴
(cons 4 “whgtxt.shx”) ;한글 글꼴
; (cons 3 “gulim.ttc”) ; 트루 타입글꼴을 사용할 경우는 3번 DXF코드만 입력하면됩니다. 굴림체의 경우 예입니다.
; (cons 4 “”) ;한글 글꼴
(cons 40 0)
(cons 41 1)
)
)
);사용하고자하는 문자 유형을 검핵하고 없는 겨우 생성합니다.
(setq l 0)
(while (Setq ENT-circle (ssname p l));코드 수정
(if (= “CIRCLE” (cdr (assoc 0 (entget ENT-circle))));코드 수정
(progn
(setq cp (cdr (assoc 10 (entget (ssname p l)))))
; (command “text” “j” “mc” cp htxt “0” sbm); 문자 쓰기 옵션을 변경하였씁니다.
(entmake
(list (cons 0 “TEXT”)
(cons 10 cp)
(cons 40 htxt)
(cons 1 sbm)
(cons 7 “ctt”)
(cons 8 “dim”)
(cons 62 256);레이어 색상
(cons 71 0)
(cons 72 1)
(cons 11 cp)
(cons 73 2))
)
) ; progn
) ; if
(setq l (1+ l))
) ; while
(setvar “osmode” osmm)
(setvar “cmdecho” 1)
) ; defun