곱하기 리습이 필요하여 아래와 같은 리습을 구해습니다.
근데 문제가 있습니다.
1이하의 숫자는 오류가 나네요…
해결방법이 있을까요?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (곱셈);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:tx (/ #a #b #index #c #d)
(vl-load-com)
(setq #a “”);;여기가 제외되는문자
(prompt “n≫≫≫곱셈할문자들을 선택:”)
(if (setq #b(ssget ‘((0 . “text”))))
(progn
(setq #index 0)
(repeat (sslength #b)
(setq #c(cons(atof(vl-string-subst “” #a(vla-get-textstring(vlax-ename->vla-object(ssname #b #index)))))#c))
(setq #index(1+ #index))
);;repeat
(setq #d(apply ‘* #c))
(if(zerop(rem #d(fix #d)))
(setq #d(itoa(fix #d)))
(setq #d(rtos #d))
);;if
(vla-put-textstring(vlax-ename->vla-object(car(entsel “n≫≫≫ 교체될문자선택:”)))(strcat #a #d))
);;progn
);;if
);;defun
공유
이상하네요 ㅎ
감사합니다…..
신경써 주셨는데….아쉬운 부분이 있습니다.
소수점은 잘나옵니다…
그러나 결과치가 1이하의 숫자(0.9, 0.8등)
1이라는 텍스트와 0.9텍스트 를 선택하면 값은 0.9라고 나와야 되는데 오류가 나네요..ㅜㅜ
(defun c:tx (/ #a #b #index #c #d)
(vl-load-com)
(setq #a “”);;여기가 제외되는문자
(prompt “n≫≫≫곱셈할문자들을 선택:”)
(if (setq #b(ssget ‘((0 . “text”))))
(progn
(setq #index 0)
(repeat (sslength #b)
(setq #c(cons(atof(vl-string-subst “” #a(vla-get-textstring(vlax-ename->vla-object(ssname #b #index)))))#c))
(setq #index(1+ #index))
);;repeat
(setq #d(apply ‘* #c))
;;;(if(zerop(rem #d(fix #d)))
;;;(setq #d(itoa(fix #d)))
(setq #d(rtos #d 2 3)) ;소숫점 3자리까지 표현
;;;);;if
(vla-put-textstring(vlax-ename->vla-object(car(entsel “n≫≫≫ 교체될문자선택:”)))(strcat #a #d))
);;progn
);;if
);;defun