리습수정의 도움을 요청합니다
나누기 리습인데요.. 결과값이 너무 크게 찍혀서 괴로울때가 많아요…..
문자크기 지정할수 있는 방법 문의드려요
우리사이트에서 검색해서
문자크기나 높이 지정문구 있길래 리습에 같다 붙여넣어 봤는데…
문자 높이를 입력해봤는데..오류나거나 지정된 높이의 값이 출력되네요…
쉽지가 않습니다 도움 좀 부탁드립니다
리습내용 올려봅니다
(defun c:/*/*(/ AcDoc oSpace ss TextInP NumText num1 k numm ss-del Textobj Num2 Num3 en)
(princ “nOPERATION DIV”)
(princ “n선택된 숫자의 나눗셈를 구하여 문자로 삽입합니다.”)
(vl-load-com)
(setq AcDoc (vla-get-activedocument (vlax-get-acad-object)))
(cond
((= (vla-get-activespace AcDoc) 1) (setq oSpace (vla-get-modelspace AcDoc)))
((= (vla-get-activespace AcDoc) 0) (setq oSpace (vla-get-paperspace AcDoc)))
)
(vla-startundomark AcDoc)
(setq ss (ssget (list (cons 0 “*TEXT”))))
(if (not Precision) (setq Precision 2))
(initget 128)
(setq TextInP (getpoint (strcat “계산값 삽입점 지정 또는 [소수점 자리수 입력 <” (rtos Precision 2 0) “>] :”)))
(if (= (type TextInP) ‘STR)
(progn (setq Precision (atoi TextInP)) (setq TextInP (getpoint “계산값 삽입점 지정 :”)))
)
(setq en (ssname ss 0))
(setq NumText (vla-get-TextString (setq tobj (vlax-ename->vla-object en))))
(setq num1 (@numout NumText))
(setq k 0 numm num1)
(setq ss-del (ssdel (ssname ss 0) ss))
(repeat (sslength ss-del)
(setq Textobj (vlax-ename->vla-object (ssname ss-del k)))
(setq numm (/ numm (@numout (vla-get-TextString Textobj))))
(setq k (1+ k))
)
(setq Num2 (rtos numm 2 Precision))
(if (/= Precision 0)
(setq Num3 (@SosuDot Num2 Precision))
(setq Num3 Num2)
)
(setq NewTextobj (vla-addtext oSpace Num3 (vlax-3d-point TextInP) (vla-get-Height tobj)))
(vla-put-layer NewTextobj (vla-get-layer tobj))
(vla-put-StyleName NewTextobj (vla-get-StyleName tobj))
(vla-endundomark AcDoc)
(princ)
)
;; 숫자만 골라서 List화 (“66.01” “” “1256.01” “” “” “5658”…)
;; 문자리스트중 가장긴 문자를 숫자로-하루
(defun @numout (NumText / k num numlist num1)
(setq k 0 num “” NumList ‘())
(repeat (strlen NumText)
(if (or (<= 48 (vl-string-elt NumText k) 57) (= 46 (vl-string-elt NumText k)))
(setq num (strcat num (chr (vl-string-elt NumText k))))
(setq NumList (append NumList (list num)) num “”)
)
(setq k (1+ k))
)
(if (/= num “”) (setq NumList (append NumList (list num)) num “”))
(setq num1 (atof (car (vl-sort NumList
(function (lambda (e1 e2) (> (strlen e1) (strlen e2)))))))
)
num1
)
;소숫점 자리수 맞추기-하루
(defun @SosuDot (txt Precision / Prenum txt)
(if (vl-string-search “.” txt)
(progn (setq Prenum (- (strlen txt) (vl-string-search “.” txt) 1))
(repeat (- Precision Prenum) (setq txt (strcat txt “0”))))
(progn (setq txt (strcat txt “.”))
(repeat Precision (setq txt (strcat txt “0”))))
)
txt
)
좀더 세세히 관찰하셧다면 맨처음 선택한 글자의 크기로 지정된다는 것을 찾을수 있을 텐데요.
영어글자로 보아도 높이(Height)라는 글자는 한군데만 사용되어 있습니다.
(setq en (ssname ss 0)) ; 처음 것을 뽑아낸부분
(setq NumText (vla-get-TextString (setq tobj (vlax-ename->vla-object en)))) ; tobj 에 저장한 부분
(setq NewTextobj (vla-addtext oSpace Num3 (vlax-3d-point TextInP) (vla-get-Height tobj)))
; tobj 에서 높이를 추출한 부분
코드중에
(vla-get-Height tobj) 이 부분을 원하시는 방향으로 수정하셔야 할 것입니다.
고맙습니다…
나누기 리습도 제가 하는일에서 캐드상에서 단위변환등
중요하게 사용되거든요…
감사드리며 즐거운 하루 되시길 바랍니다~