사칙 연산 리습인데 기존의 사용 방법은 더하거나 빼거나 곱하거나 나눌 숫자들을 선택해서 결과값을 산출할 위치 포인트를 잡아주면 그 위치에 결과값이 나오는데 이걸 첫번째 선택한 숫자를 결과 값으로 바로 수정해주는 방식으로 수정이 가능할까요 ? 2018년도에 비슷한 질문 글이 있는데 시간이 지나서 그런지 다운로드가 안되네요 ㅠㅠ 고수님들 잘 부탁드립니다.
;*********************** ADDING THE NUMBERS PROGRAM ************************
(DEFUN C:+(/ z ss sno no tno sum x entity etype num h pt cc ly te hh dz)
;->*error* start
(defun *error* (msg)(princ “error: “)(princ msg)
(setvar “osmode” os)(setvar “blipmode” bl)(setvar “dimzin” dz)
(princ))
;-<*error* end
(SETVAR “CMDECHO” 0)
; (setq nd (getint “n>>>Number of digits to right of decimal point(0-8) : “))
(prompt “n>>> 숫자 더하기….”)
(setq dz (getvar “dimzin”) os (getvar “osmode”) bl (getvar “blipmode”))
(setvar “dimzin” 0) ; 소수점이하 “0”을 표현함.
(setq nd 2)
(prompt “n……Select Text : “)
(setq ss (ssget))
(setq sno (sslength ss))
(setq no 0)
(setq sum 0.0)
(setq tno 0)
(repeat sno
(setq x (ssname ss no))
(setq etype (cdr (assoc 0 (entget x))))
(if (= etype “TEXT”)
(progn
(setq entity (entget x))
(setq num (cdr (assoc 1 entity)))
(setq num (atof num))
(setq sum (+ sum num))
(setq tno (1+ tno))
)
)
(setq no (1+ no))
)
(setq tno (itoa tno))
(setq sum (rtos sum 2 nd))
(setq pt (getpoint “n>>> Text Point : “))
(setq cc (getvar “clayer”))
(setq ly (tblsearch “layer” “TEXT”)) ;”레이어를 검색 없으면 레이어 생성
(if (= ly nil) (command “-layer” “m” “text” “c” “7” “” “l” “continuous” “” “”)
)
(setvar “clayer” “text”) ;<= 현재 레이어를 변경한다.
(setq te (tblsearch “style” “romans.shx”)) ;”style을 검색 없으면 style 생성
(if te (progn
(command “-style” “HY울릉도L” “H2WULL.TTF” “0” “1” “0” “n” “n”)
))
(SETQ Hh (GETVAR “LTSCALE”))
(setq h (* hh 3))
(SETQ H (GETVAR “TEXTSIZE”))
(prompt “n>>> Text Height <“)
(princ H)
(princ “> : “)
(setq Z (getdist))
(if Z
(setq H Z)
)
(COMMAND “TEXT” “J” “R”
(SETQ Z PT)
(SETQ Z H)
(SETQ Z 0.0)
(SETQ Z sum)
)
(setvar “clayer” cc)
(setvar “osmode” os)(setvar “blipmode” bl)
(setvar “dimzin” dz)
(PRIN1)
)
;*********************** ADDING THE NUMBERS PROGRAM ************************
(DEFUN C:- (/ z ss sno no tno sum x entity etype num h pt cc ly te hh k s sn n tn su y entit etyp nu dz)
;->*error* start
(defun *error* (msg)(princ “error: “)(princ msg)
(setvar “osmode” os)(setvar “blipmode” bl)(setvar “dimzin” dz)
(princ))
;-<*error* end
(SETVAR “CMDECHO” 0)
; (setq nd (getint “n>>>Number of digits to right of decimal point(0-8) : “))
(prompt “n>>> 숫자 빼기 <A-B> ….”)
(setq dz (getvar “dimzin”) os (getvar “osmode”) bl (getvar “blipmode”))
(setvar “dimzin” 0) ; 소수점이하 “0”을 표현함.
(setq nd 3)
(prompt “n……Select A Text : “)
(setq ss (ssget))
(setq sno (sslength ss))
(setq no 0)
(setq sum 0.0)
(setq tno 0)
(repeat sno
(setq x (ssname ss no))
(setq etype (cdr (assoc 0 (entget x))))
(if (= etype “TEXT”)
(progn
(setq entity (entget x))
(setq num (cdr (assoc 1 entity)))
(setq num (atof num))
(setq sum (+ sum num))
(setq tno (1+ tno))
)
)
(setq no (1+ no))
)
(setq tno (itoa tno))
(prompt “n……Select B Text : “)
(setq s (ssget))
(setq sn (sslength s))
(setq n 0)
(setq su 0.0)
(setq tn 0)
(repeat sn
(setq y (ssname s n))
(setq etyp (cdr (assoc 0 (entget y))))
(if (= etyp “TEXT”)
(progn
(setq entit (entget y))
(setq nu (cdr (assoc 1 entit)))
(setq nu (atof nu))
(setq su (+ su nu))
(setq tn (1+ tn))
)
)
(setq n (1+ n))
)
(setq tn (itoa tn))
(setq k (- sum su))
(setq k (rtos k 2 nd))
(setq pt (getpoint “n>>> Text Point : “))
(setq cc (getvar “clayer”))
(setq ly (tblsearch “layer” “TEXT”)) ;”레이어를 검색 없으면 레이어 생성
(if (= ly nil) (command “-layer” “m” “text” “c” “3” “” “l” “continuous” “” “”)
)
(setvar “clayer” “text”) ;<= 현재 레이어를 변경한다.
(setq te (tblsearch “style” “romans.shx”)) ;”style을 검색 없으면 style 생성
(if te (progn
(command “-style” “HY울릉도L” “H2WULL.TTF” “0” “1” “0” “n” “n”)
))
(SETQ Hh (GETVAR “ltscale”))
(setq h (* hh 3))
(SETQ H (GETVAR “TEXTSIZE”))
(prompt “n>>> Text Height <“)
(princ H)
(princ “> : “)
(setq Z (getdist))
(if Z
(setq H Z)
)
(COMMAND “TEXT” “J” “R”
(SETQ Z PT)
(SETQ Z H)
(SETQ Z 0.0)
(SETQ Z k)
)
(setvar “clayer” cc)
(setvar “osmode” os)(setvar “blipmode” bl)
(setvar “dimzin” dz)
(PRIN1)
)
;*********************** ADDING THE NUMBERS PROGRAM ************************
(DEFUN C:* (/ z ss sno no tno sum x entity etype num h pt cc ly te hh k s sn n tn su y entit etyp nu dz)
;->*error* start
(defun *error* (msg)(princ “error: “)(princ msg)
(setvar “osmode” os)(setvar “blipmode” bl)(setvar “dimzin” dz)
(princ))
;-<*error* end
(SETVAR “CMDECHO” 0)
; (setq nd (getint “n>>>Number of digits to right of decimal point(0-8) : “))
(prompt “n>>> 숫자 곱하기< A X B >…”)
(setq dz (getvar “dimzin”) os (getvar “osmode”) bl (getvar “blipmode”))
(setvar “dimzin” 0) ; 소수점이하 “0”을 표현함.
(setq nd 3)
(prompt “n……Select A Text : “)
(setq ss (ssget))
(setq sno (sslength ss))
(setq no 0)
(setq sum 0.0)
(setq tno 0)
(repeat sno
(setq x (ssname ss no))
(setq etype (cdr (assoc 0 (entget x))))
(if (= etype “TEXT”)
(progn
(setq entity (entget x))
(setq num (cdr (assoc 1 entity)))
(setq num (atof num))
(setq sum (+ sum num))
(setq tno (1+ tno))
)
)
(setq no (1+ no))
)
(setq tno (itoa tno))
(prompt “n……Select B Text : “)
(setq s (ssget))
(setq sn (sslength s))
(setq n 0)
(setq su 0.0)
(setq tn 0)
(repeat sn
(setq y (ssname s n))
(setq etyp (cdr (assoc 0 (entget y))))
(if (= etyp “TEXT”)
(progn
(setq entit (entget y))
(setq nu (cdr (assoc 1 entit)))
(setq nu (atof nu))
(setq su (+ su nu))
(setq tn (1+ tn))
)
)
(setq n (1+ n))
)
(setq tn (itoa tn))
(setq k (* sum su))
(setq k (rtos k 2 nd))
(setq pt (getpoint “n>>> Text Point : “))
(setq cc (getvar “clayer”))
(setq ly (tblsearch “layer” “TEXT”)) ;”레이어를 검색 없으면 레이어 생성
(if (= ly nil) (command “-layer” “m” “text” “c” “3” “” “l” “continuous” “” “”)
)
(setvar “clayer” “text”) ;<= 현재 레이어를 변경한다.
(setq te (tblsearch “style” “romans.shx”)) ;”style을 검색 없으면 style 생성
(if te (progn
(command “-style” “HY울릉도L” “H2WULL.TTF” “0” “1” “0” “n” “n”)
))
(SETQ Hh (GETVAR “LTSCALE”))
(setq h (* hh 3))
(SETQ H (GETVAR “TEXTSIZE”))
(prompt “n>>> Text Height <“)
(princ H)
(princ “> : “)
(setq Z (getdist))
(if Z
(setq H Z)
)
(COMMAND “TEXT” “J” “R”
(SETQ Z PT)
(SETQ Z H)
(SETQ Z 0.0)
(SETQ Z k)
)
(setvar “clayer” cc)
(setvar “osmode” os)(setvar “blipmode” bl)
(setvar “dimzin” dz)
(PRIN1)
)
;********************* ADDING THE NUMBERS PROGRAM ************************
(DEFUN C:/ (/ z ss sno no tno sum x entity etype num h pt cc ly te hh k s sn n tn su y entit etyp nu dz)
;->*error* start
(defun *error* (msg)(princ “error: “)(princ msg)
(setvar “osmode” os)(setvar “blipmode” bl)(setvar “dimzin” dz)
(princ))
;-<*error* end
(SETVAR “CMDECHO” 0)
; (setq nd (getint “n>>>Number of digits to right of decimal point(0-8) : “))
(prompt “n>>> 숫자 나누기< A ÷ B >…”)
(setq dz (getvar “dimzin”) os (getvar “osmode”) bl (getvar “blipmode”))
(setvar “dimzin” 0) ; 소수점이하 “0”을 표현함.
(setq nd 3)
(prompt “n……Select A Text : “)
(setq ss (ssget))
(setq sno (sslength ss))
(setq no 0)
(setq sum 0.0)
(setq tno 0)
(repeat sno
(setq x (ssname ss no))
(setq etype (cdr (assoc 0 (entget x))))
(if (= etype “TEXT”)
(progn
(setq entity (entget x))
(setq num (cdr (assoc 1 entity)))
(setq num (atof num))
(setq sum (+ sum num))
(setq tno (1+ tno))
)
)
(setq no (1+ no))
)
(setq tno (itoa tno))
(prompt “n……Select B Text : “)
(setq s (ssget))
(setq sn (sslength s))
(setq n 0)
(setq su 0.0)
(setq tn 0)
(repeat sn
(setq y (ssname s n))
(setq etyp (cdr (assoc 0 (entget y))))
(if (= etyp “TEXT”)
(progn
(setq entit (entget y))
(setq nu (cdr (assoc 1 entit)))
(setq nu (atof nu))
(setq su (+ su nu))
(setq tn (1+ tn))
)
)
(setq n (1+ n))
)
(setq tn (itoa tn))
(setq k (/ sum su))
(setq k (rtos k 2 nd))
(setq pt (getpoint “n>>> Text Point : “))
(setq cc (getvar “clayer”))
(setq ly (tblsearch “layer” “TEXT”)) ;”레이어를 검색 없으면 레이어 생성
(if (= ly nil) (command “-layer” “m” “text” “c” “7” “” “l” “continuous” “” “”)
)
(setvar “clayer” “text”) ;<= 현재 레이어를 변경한다.
(setq te (tblsearch “style” “romans.shx”)) ;”style을 검색 없으면 style 생성
(if te (progn
(command “-style” “HY울릉도L” “H2WULL.TTF” “0” “1” “0” “n” “n”)
))
(SETQ Hh (GETVAR “LTSCALE”))
(setq h (* hh 3))
(SETQ H (GETVAR “TEXTSIZE”))
(prompt “n>>> Text Height <“)
(princ H)
(princ “> : “)
(setq Z (getdist))
(if Z
(setq H Z)
)
(COMMAND “TEXT” “J” “R”
(SETQ Z PT)
(SETQ Z H)
(SETQ Z 0.0)
(SETQ Z k)
)
(setvar “clayer” cc)
(setvar “osmode” os)(setvar “blipmode” bl)
(setvar “dimzin” dz)
(PRIN1)
)
감사합니다! 말씀하신대로 +는 첫번째 두번째 이런거 없이 일괄 선택이네요!! 메일 드렸습니다.
SSGET으로 선택을 하는건데, 첫번째 선택객체가 있을 수가 있나 싶습니다.