예전에 사용하던 심도 평균거리를 삽입했던 리습인데
앞에 설치년도를 입력하여 사용하니 제원형식이 달라서
리습이 안되네요
잘아시는분 수정 부탁드립니다.
상하수 제원입력하는 쉬운 방법 있으면 글좀 부탁 드립니다.
(defun c:SD (/ old_osmode old_layer lw_data e_total
lw_entity lw_data lw_su lw_list new_xy1
new_xy2 sd_data ds_susu su_su sd_entity
sd_xy10 sd_xy11 sd_na sel_text p_sd
TXT
)
(setvar “CMDECHO” 0)
(setq old_osmode (getvar “osmode”))
(setq old_layer (getvar “clayer”))
(setq view_ctr (getvar “VIEWCTR”))
(setq view_size (getvar “VIEWSIZE”))
(defun t_nil (a c b d)
(apply (eval (read (strcat “‘” a))) (MAPCAR ‘(LAMbDA (X) ((eval b) c X)) d))
)
(while (not (t_nil “or” (cdr (assoc 0 (if (setq a-b (car (entsel “n길이를 구할 object 를 선택하세요.”)))
(setq a (entget a-b)) nil ))) = ‘(“LWPOLYLINE” “LINE” “POLYLINE” “ARC” “CIRCLE” “SPLINE” “ELLIPSE”) ))
); of while
(command “lengthen” A-B “”)
(setq th (getvar “dimscale”))
(setq ang 0)
(setq sf 1)
(setq txt (RTOS (/ (GETVAR “PERIMETER”) 1.0) 2 1))
(princ “선형을 선택하시오.n”)
(setq lw_data (ssget))
(setq sel_text (car (entsel “Text 선택 :”)))
(command “change” sel_text “” “p” “c” “2” “”)
(setq sd_ha 0
sd_su_su 0
)
(if lw_data
(progn
(setq e_total (sslength lw_data))
(if (= e_total 1)
(progn
(setq lw_entity (entget (ssname lw_data 0))
lw_su 0
)
(setq lw_list (nth lw_su lw_entity))
(while lw_list
(if (= (car lw_list) 10)
(progn
(setq v_pt (cdr lw_list))
(command “zoom” “c” (cdr lw_list) “10”)
(setq new_xy1 (polar (cdr lw_list) 2.37365 1.5))
;;;;;;;;;;;;<—–공차변경
(setq new_xy2 (polar (cdr lw_list) 5.48033 1.5))
;;;;;;;;;;;;<—–공차변경
(setq lw_x (rtos (car (cdr lw_list)) 2 3)
lw_y (rtos (cadr (cdr lw_list)) 2 3)
)
(setq sd_data (ssget “c”
new_xy1
new_xy2
‘((0 . “TEXT”) (8 . “SB900”))
;;;;;;;;<—–Text-레이어변경
)
)
(if sd_data
(progn
(setq sd_susu (sslength sd_data)
sd_su 0
)
(repeat sd_susu
(setq sd_entity (entget (ssname sd_data sd_su)))
(setq sd_xy10 (cdr (assoc 10 sd_entity)))
(setq 10_x (rtos (car sd_xy10) 2 3)
10_y (rtos (cadr sd_xy10) 2 3)
)
(setq sd_xy11 (cdr (assoc 11 sd_entity)))
(setq 11_x (rtos (car sd_xy11) 2 3)
11_y (rtos (cadr sd_xy11) 2 3)
)
(setq
sd_na (distof
(substr (cdr (assoc 1 sd_entity)) 2)
)
)
(if (or (and (= lw_x 10_x) (= lw_y 10_y))
(and (= lw_x 11_x) (= lw_y 11_y))
)
(setq sd_ha (+ sd_ha sd_na)
sd_su_su (+ sd_su_su 1)
)
)
(setq sd_su (+ sd_su 1))
) ;repeat
)
)
)
)
(setq lw_su (+ lw_su 1))
(setq lw_list (nth lw_su lw_entity))
) ;while
;;; (setq
;;; p_sd (strcat “평균 심도 : ” (rtos (/ sd_ha sd_su_su) 2 2))
;;; )
;;; (alert p_sd)
(setq p_sd “”)
(setq p_sd (rtos (/ sd_ha sd_su_su) 2 1))
(if (/= p_sd “”)
(progn
(mod_text p_sd sel_text)
(princ “n 평균심도:”)
(princ p_sd)
)
)
(command “zoom” “c” view_ctr view_size)
) ;progn
(alert “중복선택 다시 선택”)
)
)
(alert “선형 無 <확인요망>.”)
)
(setvar “clayer” old_layer)
(setvar “osmode” old_osmode)
(princ)
)
(defun mod_text (aveSimdo jewon)
(if (not (eq jewon nil))
(progn
(setq jewon_str (cdr (assoc 1 (entget jewon))))
(setq strLst (strtokenizer jewon_str “/”))
(if (/= (length strLst) 4)
(princ “n 제원형식이 다릅니다.”)
(progn
(setq str0 (nth 0 strLst))
(setq str1 (nth 1 strLst))
(setq str2 (nth 2 strLst))
(setq str3 (nth 3 strLst))
(setq str4 (nth 4 strLst))
; (setq str5 (nth 5 strLst))
(setq strNewSimdo (strcat “D” aveSimdo))
(setq strnewlenth (strcat “L” txt))
(setq new_jewon (strcat “/” str0 “/”
str1 “/” strnewlenth “/” strNewSimdo
)
)
; (setq new_jewon (strcat str0 “/” str1 “/”
; str2 “/” str3 “/”
strnewlenth “/” strNewSimdo
; )
; )
(setq new_ent (cons 1 new_jewon))
(entmod (subst new_ent
(assoc 1 (entget jewon))
(entget jewon)
)
)
)
)
)
)
)
;;string tokenizer 함수
(defun strtokenizer
(string token / rep_no i st ed rep_no one_char word)
(setq rep_no (strlen string))
(setq i 0
st 0
ed 1
)
(setq wordList ‘())
(repeat rep_no
(setq i (+ i 1))
(setq one_char (substr string i 1))
(if (= one_char token)
(progn
(setq ed (- i (+ st 1)))
(setq word (substr string (+ st 1) ed))
(if (not (or (= word nil) (= word “”)))
(progn
(setq wordList (append wordList (list word)))
)
)
(setq st i)
)
)
(if (= i rep_no)
(progn
(setq word (substr string (+ st 1)))
(if (not (or (= word nil) (= word “”)))
(progn
(setq wordList (append wordList (list word)))
)
)
)
)
)
wordList
)