안녕하세요
lisp 고수님들께 질문 드립니다
아래 리습은 덧셈 리습입니다.
문자를 선택해서 다른 문자에 덧셈을 하는 리습인데요,,,,
혹시 뺄셈은 어떻게 해야 가능한지 고수님들의 고견 부탁 드립니다.
(DEFUN C:SU()
(PROMPT “nSELECT TEXT 덧셈 :”)
(SETQ SS (SSGET)
SN (SSLENGTH SS)
INDEX 0
SUM 0
)
(REPEAT SN
(IF (= “TEXT” (CDR (ASSOC 0 (ENTGET (SSNAME SS INDEX)))))
(PROGN
(SETQ EN (ATOF (CDR (ASSOC 1 (ENTGET (SSNAME SS INDEX)))))
INDEX (1+ INDEX)
SUM (+ SUM EN)
)
)
(SETQ INDEX (1+ INDEX))
)
)
(PRIN1 SUM)
(SETQ A (ENTGET (CAR (ENTSEL “nSELECT TOTAL TEXT LOCATION :”)))
1T (ASSOC 1 A)
2T (CONS 1 (RTOS SUM 2 0))
A (SUBST 2T 1T A)
)
(ENTMOD A)
)
아래는 곱셈입니다,, 이것도 나눗셈으로 변경이 가능한지요?
(defun c:si (/ #a #b #index #c #d)
(vl-load-com)
(setq #a “”);;여기가 제외되는문자
(PROMPT “nSELECT TEXT 곱셈 :”)
(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 0)) ;소숫점 3자리까지 표현
;;;);;if
(vla-put-textstring(vlax-ename->vla-object(car(entsel “nSELECT TOTAL TEXT LOCATION :”)))(strcat #a #d))
);;progn
);;if
);;defun
감사합니다~
빼기는 위에 이부분 SUM (+ SUM EN) 을 이렇게 SUM (- SUM EN)