※ 말머리 필수 (말머리 누락시 통보없이 게시 글이 삭제될 수 있습니다.)
※ 회원정보는 최소한 '운영진 공개'로 지정
※ 캐드나 리습 관련 질문일 경우 반드시 캐드 종류와 버전 명기 (ex> 오토캐드2022 / 윈10 64비트)
<캐드 / 윈도우 종류 및 버전 : autocad2012 / gstarcad2023 >
※ 질문은 최대한 성의있고 자세하게 (답변자가 되묻게 질문하지 말아주세요.)
※ 이외는 자유롭게 글 남겨 주시면 됩니다.
안녕하세요 아래 리습은 행복한 하루님의 소재사이즈리습이 몇번 수정된 리습같습니다.
;;http://cafe.daum.net/archimore
;;아키모아 운영진 "행복한하루"
(defun c:sus(/ ss k ent1 en ed ename tex1 tex2 len str n str1 @1 z ed1 stext stext-list slen @@n @@q @@1 @@var sosu1)
(prompt "\n수식표기하기>> dimension,text,mtext click:")
(setq ss nil k 0 ent1 nil stext-list '())
(while (= nil ss) (setq ss (ssget (list (cons 0 "dimension,text,mtext"))))
(if (= nil ss) (prompt "\n>>객체를 다시 선택해주세염")))
; (if (not sosu) (setq sosu 2))
; (setq sosu1 (getint (strcat "\n소숫점 몇짜짜리까지 표현하실건가염<" (rtos sosu 2 0) ">:")))
; (if sosu1 (setq sosu sosu1))
(vl-load-com)
(repeat (sslength ss)
(setq en (ssname ss k)
ed (entget en) n 1 z 1 @1 nil
ename (cdr (assoc 0 ed)))
(cond ((= ename "DIMENSION")
(setq sosu (vla-get-PrimaryUnitsPrecision (vlax-ename->vla-object en)))
(setq tex (rtos (cdr (assoc 42 ed)) 2 sosu))
)
((= ename "TEXT")
(setq tex (cdr (assoc 1 ed))))
;---------------------------------------------------------------
((= ename "MTEXT")
(setq tex (cdr (assoc 1 ed)))
(setq len (strlen tex))
(if (> len 4)
(progn (setq str (substr tex 1 4))
(if (or (= str "\\A0;") (= str "\\A1;") (= str "\\A2;"))
(setq tex (substr tex 5 (- len 4)))
);if
);progn
);if mtext 정렬문자가 있을시 삭제
(repeat (strlen tex)
(setq str (substr tex n 1))
(if (= str "{") (progn
(cond ((= n 1)
(while (= @1 nil)
(setq str1 (substr tex z 1))
(if (= str1 "\\") (progn
(setq tex (substr tex 2 (- z 1)))
(setq @1 1)
)) ;if progn
(setq z (1+ z)))
)
(t (setq tex (substr tex 1 (- n 1))))
);cond
));if progn
(setq n (1+ n))
);repeat
)
;---------------------------------------------------------------
);cond
(setq strtex (strlen tex))
(if (/= (wcmatch tex "*.*") nil)
(progn
(setq @@n 1)
(repeat strtex
(setq @@1 (substr tex @@n 1))
(if (= @@1 ".") (setq @@q @@n))
(setq @@n (1+ @@n))
)
(setq @@var (substr tex (+ @@q sosu 1) 1))
(if (or (= @@var nil) (= @@var ""))
(setq tex (strcat (substr tex 1 (- @@q 1)) "." (substr tex (1+ @@q) sosu)))
(setq tex (strcat (substr tex 1 (- @@q 1)) "." (rtos (1+ (atoi (substr tex (1+ @@q) sosu))) 2 0)))
)
)
)
(setq stext-list (append stext-list (list tex)))
(setq k (1+ k))
);repeat
(setq slen (length stext-list))
(cond ((= slen 2) (setq stext (strcat "%%C" (nth 0 stext-list) " X " (nth 1 stext-list) "(L)")))
((= slen 3) (setq stext (strcat (nth 0 stext-list) " X " (nth 1 stext-list) " X " (nth 2 stext-list) "(t)")))
)
(if stext
(progn
(prompt "\n수식표기문자 선택:")
(while (= ent1 nil) (setq ent1 (ssget (list (cons 0 "text"))))
(if (= ent1 nil) (prompt "\n>>수식표기문자를 다시선택>>:"))
);while
(setq ed1 (entget (ssname ent1 0)))
(entmod (subst (cons 1 stext) (assoc 1 ed1) ed1))
)
)
(princ)
);defun
카페검색하다가 다운받은 소재 사이즈 변경 하는 기능입니다
근데 dimension 치수를 선택해서 변경할때는 아무 문제가 없는데
text나 mtext를 실행하면
수식표기하기>> dimension,text,mtext click:
객체 선택: 1개를 찾음
객체 선택: 1개를 찾음, 2 전체
객체 선택: 1개를 찾음, 3 전체
객체 선택:
error: 인수 유형 오류: numberp:
nil
오류가 생기는데요
dimension 치수를 한번 실행하고 나면
text나 mtext 실행시에 오류가 안생기네요
오류를 안생기게 수정 가능할까요