—— 리습 정보 ——–
;;;;자료출력
(if (= sd_list_s000 nil) (setq sd_list_s000 100))
(setq sd_list_s01 (getint (strcat “n문자 높이를 지정하세요:”)))
(if (= sd_list_s01 nil)
(progn
(setq sd_list_s01 sd_list_s000)
)
(progn
(setq sd_list_s000 sd_list_s01)
)
)
(setq sd_list_s02 (getpoint “n문자 위치를 지정하세요:”))
(setq sd_count02 0)
(setq sd_list_06 (length sd_list))
(repeat sd_list_06
(setq sd_tx01 (nth sd_count02 sd_list))
(setq sd_tx02 (car sd_tx01))
(setq sd_tx03 (cdr sd_tx01))
(setq sd_count03 0)
(setq sd_tx04 0.0)
(setq sd_tx_03 “”)
(repeat (length sd_tx03)
(setq sd_tx_01 (car (nth sd_count03 sd_tx03)))
(setq sd_tx_02 (car (cdr (nth sd_count03 sd_tx03))))
(if (> sd_tx_02 1)
(progn
(setq sd_tx_03 (strcat sd_tx_03 “+(” (rtos sd_tx_01 2 2) “)*” (itoa sd_tx_02)))
)
(progn
(setq sd_tx_03 (strcat sd_tx_03 “+” (rtos sd_tx_01 2 2)))
)
)
(setq sd_tx04 (+ sd_tx04 (* sd_tx_01 sd_tx_02)))
(setq sd_count03 (1+ sd_count03))
)
(command “text” sd_list_s02 sd_list_s01 0 sd_tx_03 )
(setq sd_list_s02 (polar sd_list_s02 (/ pi 2) (* sd_list_s01 1.2)))
(setq sd_tx05 (strcat sd_tx02 ” : 합계 = ” (rtos sd_tx04 2 2) ))
(command “text” sd_list_s02 sd_list_s01 0 sd_tx05)
(setq sd_list_s02 (polar sd_list_s02 (/ pi 2) (* sd_list_s01 1.2)))
(setq sd_count02 (1+ sd_count02))
)
;;;;자료출력
( setvar “Cmdecho” 1 )
)
;;;;자료출력
;;; (setq dim_list_s01 (getint “문자 높이를 지정하세요:”))
;;; (setq dim_list_s02 (getpoint “문자 위치를 지정하세요:”))
;;; (setq layer_list_c3 0)
;;; (repeat layer_list_c
;;; (setq to_taxt1 (car (nth layer_list_c3 layer_list_to)));레이어명
;;; (setq to_taxt2 (rtos (cadr (nth layer_list_c3 layer_list_to)) 2 2 ));합계
;;; (setq to_taxt3 (caddr (nth layer_list_c3 layer_list_to)));집계
;;; (setq to_taxt4 (strcat to_taxt1 ” : 합계 = ” to_taxt2));레이어명+합계
;;; (command “text” dim_list_s02 dim_list_s01 0 to_taxt3 )
;;; (setq dim_list_s02 (polar dim_list_s02 (/ pi 2) (* dim_list_s01 1.2)))
;;; (command “text” dim_list_s02 dim_list_s01 0 to_taxt4 )
;;; (setq dim_list_s02 (polar dim_list_s02 (/ pi 2) (* dim_list_s01 1.2)))
;;; (setq layer_list_c3 (1+ layer_list_c3))
;;; )
;;;;자료출력
;;; ( setvar “Cmdecho” 1 )
;;;)
;//
——— 여기서 리습결과값이 겹쳐서 나오는데 순서대로 1줄씩 나오게 하고싶어요 어떻게 하면 될까요?
캐드는 2019 사용중이고 결과값의 위치가 자기 마음대로 겹쳐서도 나오고 어떤경우에는 완전 위쪽으로 나올때도 있고 위치가 마음대로 바뀌어서 나옵니다 .
좌표값이 반복된다는 말씀을 들었는데 여기서 좌표값을 어떻게 수정해야 되나요??
여기저기 가져다 쓴거라 아직 많이 부족합니다 ㅠ
(defun c:twh (/ lts ss $dis1 en-list ybase n en ed x72 x73 ins newins $ed)
(vl-load-com)
(prompt "n>> 다중텍스트 수직간격 조정하기..")
(setq lts (getvar "ltscale"))
(setq ss (ssget (list (cons 0 "text"))))
(if (not $dis) (setq $dis (* lts 5)))
(setq $dis1 (getreal (strcat "n텍스트간격을 입력 :" )))
(if $dis1 (setq $dis $dis1))
(setq en-list (newss ss))
(setq $ed (entget (nth 0 en-list)))
(setq x72 (cdr (assoc 72 $ed))
x73 (cdr (assoc 73 $ed)))
(cond ((and (= x72 0) (= x73 0)) (setq ybase (cadr (cdr (assoc 10 $ed)))))
(t (setq ybase (cadr (cdr (assoc 11 $ed)))))
)
(setq n 1)
(repeat (- (length en-list) 1)
(setq ybase (- ybase $dis))
(setq en (nth n en-list)
ed (entget en)
x72 (cdr (assoc 72 ed))
x73 (cdr (assoc 73 ed)))
(cond ((and (= x72 0) (= x73 0))
(setq ins (cdr (assoc 10 ed)))
(setq newins (list (car ins) ybase (caddr ins)))
(entmod (subst (cons 10 newins) (assoc 10 ed) ed)))
(t
(setq ins (cdr (assoc 11 ed)))
(setq newins (list (car ins) ybase (caddr ins)))
(entmod (subst (cons 11 newins) (assoc 11 ed) ed)))
)
(setq n (1+ n))
)
(princ)
)
;; y 값 큰순서로 소트하기
(defun newss (ss / k xins-list en xins n newss var)
(setq k 0 xins-list '())
(repeat (sslength ss)
(setq en (ssname ss k)
xins (list (cadr (cdr (assoc 10 (entget en))))))
(setq xins-list (append xins-list (list (append xins (list en)))))
(setq k (1+ k))
)
(setq xins-list (vl-sort xins-list '(lambda (a b) (> (nth 0 a) (nth 0 b)))))
(setq n 0 newss '())
(repeat (length xins-list)
(setq var (cadr (nth n xins-list)))
(setq newss (append newss (list var)))
(setq n (1+ n))
)
newss
)
레전드…. 감사하비내재1ㅓ!!!! ㅇ0ㅇ!!!
;;;;자료출력
(if (= sd_list_s000 nil) (setq sd_list_s000 100))
(setq sd_list_s01 (getint (strcat "n문자 높이를 지정하세요:")))
(if (= sd_list_s01 nil)
(progn
(setq sd_list_s01 sd_list_s000)
)
(progn
(setq sd_list_s000 sd_list_s01)
)
)
(setq sd_list_s02 (getpoint "n문자 위치를 지정하세요:"))
(setq sd_count02 0)
(setq sd_list_06 (length sd_list))
(repeat sd_list_06
(setq sd_tx01 (nth sd_count02 sd_list))
(setq sd_tx02 (car sd_tx01))
(setq sd_tx03 (cdr sd_tx01))
(setq sd_count03 0)
(setq sd_tx04 0.0)
(setq sd_tx_03 "")
(repeat (length sd_tx03)
(setq sd_tx_01 (car (nth sd_count03 sd_tx03)))
(setq sd_tx_02 (car (cdr (nth sd_count03 sd_tx03))))
(if (> sd_tx_02 1)
(progn
(setq sd_tx_03 (strcat sd_tx_03 "+(" (rtos sd_tx_01 2 2) ")*" (itoa sd_tx_02)))
)
(progn
(setq sd_tx_03 (strcat sd_tx_03 "+" (rtos sd_tx_01 2 2)))
)
)
(setq sd_tx04 (+ sd_tx04 (* sd_tx_01 sd_tx_02)))
(setq sd_count03 (1+ sd_count03))
)
(command "text" sd_list_s02 sd_list_s01 0 sd_tx_03 )
(setq sd_list_s02 (polar sd_list_s02 (/ pi 2) (* sd_list_s01 1.2)))
(setq sd_tx05 (strcat sd_tx02 " : 합계 = " (rtos sd_tx04 2 2) ))
(command "text" sd_list_s02 sd_list_s01 0 sd_tx05)
(setq sd_list_s02 (polar sd_list_s02 (/ pi 2) (* sd_list_s01 1.2)))
(setq sd_count02 (1+ sd_count02))
)
;;;;자료출력
( setvar "Cmdecho" 1 )
)
;;;;자료출력
;;; (setq dim_list_s01 (getint "문자 높이를 지정하세요:"))
;;; (setq dim_list_s02 (getpoint "문자 위치를 지정하세요:"))
;;; (setq layer_list_c3 0)
;;; (repeat layer_list_c
;;; (setq to_taxt1 (car (nth layer_list_c3 layer_list_to)));레이어명
;;; (setq to_taxt2 (rtos (cadr (nth layer_list_c3 layer_list_to)) 2 2 ));합계
;;; (setq to_taxt3 (caddr (nth layer_list_c3 layer_list_to)));집계
;;; (setq to_taxt4 (strcat to_taxt1 " : 합계 = " to_taxt2));레이어명+합계
;;; (command "text" dim_list_s02 dim_list_s01 0 to_taxt3 )
;;; (setq dim_list_s02 (polar dim_list_s02 (/ pi 2) (* dim_list_s01 1.2)))
;;; (command "text" dim_list_s02 dim_list_s01 0 to_taxt4 )
;;; (setq dim_list_s02 (polar dim_list_s02 (/ pi 2) (* dim_list_s01 1.2)))
;;; (setq layer_list_c3 (1+ layer_list_c3))
;;; )
;;;;자료출력
;;; ( setvar "Cmdecho" 1 )
;;;)
;//
세상에 형님, 누님 알라신 감사합니다.
앗 죄송합니다..
“<- 쌍따움표 오류때문에 다른 분들 보시기 편하라고 정리만 해두었어요
lisp내용은 한번 볼께요 ㅎㅎ
신은 없어 젠장
(setq sd_list_s02 (polar sd_list_s02 (/ pi 2) (* sd_list_s01 1.2)))
좌표를 하드 코딩이든 바꿔주시면 될 듯 합니다.