재료사이즈 리습을 수정하고싶습니다
컨텐츠 정보
- 278 조회
- 2 댓글
- 0 추천
- 0 비추천
- 목록
본문
이곳에서 얻었던건지 정확히 기억은 안나는데 다음과 같은 리습을 사용중입니다.
치수 3가지를 순서대로 찍고 내용을 바꾸고자 하는 텍스트를 선택하면 '숫자 x 숫자 x 숫자'로 변경해 주는 리습인데요.
가로, 세로, 높이 100, 200, 300을 순서대로 찍으면 '100x200x300' 으로 바꿔주는거죠
원하는건 치수값에 텍스트가 붙었으면 하는건데 어느부분을 수정하면 이게 될까요?
이를테면 100, 200, 300을 순서대로 찍으면 '가로100,세로200,높이300' 이런식으로 나오게끔..
;;###########################################################################################
;;###################### 재료SIZE / 텍스트는 깨져 있어야함 #############################
;;###########################################################################################
(defun c:YY(/ stext ss k ent1 en ed ename tex tex1 tex2 len str n str1 @1 z ed1)
(prompt "n수식표기하기>> dimension,text,mtext click:")
(setq stext "" ss nil k 0 ent1 nil)
(while (= nil ss) (setq ss (ssget (list (cons 0 "dimension,text,mtext"))))
(if (= nil ss) (prompt "n>>객체를 다시 선택해주세염")))
(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 tex (rtos (cdr (assoc 42 ed)) 2 2)
tex1 (cdr (assoc 1 ed))
tex2 (substr tex1 1 3))
(if (or (= tex2 "%%c") (= tex2 "%%C")) (setq tex (strcat "%%c" tex)))
)
((= 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
(if (= stext "") (setq stext tex)
(setq stext (strcat stext " X " tex ))
);if
(setq k (1+ k))
);repeat
(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