ZWCAD 2019 수량집계
컨텐츠 정보
- 253 조회
- 2 댓글
- 0 추천
- 0 비추천
-
목록
본문
안녕하세요.
LISP 고수님들.. 확인 부탁드려요..
AUTO CAD 및 BRICS CAD에서는 물량집계가 되는데 ZWCAD 2019에서 사용하니
수량이 모두 1로 뜨네요..
근데 어디가 문제인지 모르겠어요.. 도와주세요.
(defun c:lli(/ ent en1 en_la en_set n i txt_lst var var_text1 txt_lst j txt_cnt fi_name fn en_lay road fi_na)
(setq ent (car (entsel "n 물량산출할 부재이름을 선택하시오.:"))
en1 (entget ent)
en_la (assoc 8 en1)
en_lay (cdr en_la)
road (getint "n 선택방법 전체(엔터) 선택 (1) "))
(if (eq road 1) (setq en_set (ssget (list en_la (cons 0 "text"))))
(setq en_set (ssget "x" (list en_la (cons 0 "text"))))
);end if
(setq n (sslength en_set)
fi_na (getstring "n 저장할 파일의 이름을 입력하시오. : ")
i 0)
(setq txt_lst '())
(repeat n
(setq var (entget (ssname en_set i)))
(setq var_text1 (cdr (assoc 1 var)))
(setq txt_lst (append txt_lst (list var_text1))) ;; 무조건 문자리스트를 만든다
(setq i (1+ i))
)
(setq i 0)
(setq txt_lst (vl-sort txt_lst '<))
;; txt_lst를 처음부터 비교한다.
(while (< i n)
(setq txt_cnt 1)
(setq var_text1 (nth i txt_lst))
(setq i (1+ i))
;; 리스트 다음요소가 같으면 1+
(setq j i)
(while (< j n)
(if (= var_text1 (nth j txt_lst)) (setq txt_cnt (1+ txt_cnt)) )
(setq j (1+ j))
);end while
(setq i (+ i (1- txt_cnt)))
(setq fi_name (strcat "c:/work/" fi_na ".txt"))
(setq fn (open fi_name "a"))
(write-line (strcat var_text1 ";" (itoa txt_cnt)) fn)
(close fn)
)
(princ)
)