한번에 드래그 해서 한번에 기입하고 싶어요
컨텐츠 정보
- 13 조회
- 2 댓글
- 0 추천
- 0 비추천
- 목록
본문
완전초보입니다.
이글저글 보면 만들어 보았습다.
한번에 기입을 하고싶습니다.
고수님 조언부탁드립니다.
(defun c:11 ( / getentsel en1 10list elist point1 point2 point3 point4 h l hh ll hl cor)
(vl-load-com)
(WHILE
(setq getentsel (entsel “Rectangle”)) ;객체선택
(setq en1 (entget (car getentsel) )) ; dxf 값 리턴
(setq cor(cdr (assoc 62(cdr en1)))) ;객체색상
(setq 10list (vl-remove-if ‘(lambda (x) (/= (car x) 10)) en1) )
;assoc 10인 리스트만 남김
(setq elist (mapcar ‘(lambda (x) (cdr x)) 10list))
;cdr 해서 좌표값만 남김
(setq p1 (nth 0 elist) );1번째 포인트값
(setq p2 (nth 1 elist) ) ;2번째 포인트값
(setq p3 (nth 2 elist) );3번째 포인트값
(setq p4 (nth 3 elist) );4번째 포인트값
(setq h (distance p1 p4) ) ;폭값
(setq l (distance p1 p2) ) ;길이값
(setq hh (rtos h 2 0) ) ;폭 문자열변환
(setq ll (rtos l 2 0) ) ;길이 문자열변환
(setq hl (strcat hh ” x ” ll) ) ;폭 길이 합치기 문자열합치기
(command “-text” “j” “mc” “m2p” p3 p1 “” “” hl )
(command “change” “l” “” “p” “c” cor “”)
);반복문 끝
);defun end
관련자료
캐드플러스님의 댓글
경고! 여기 올린 프로그램은 복사해서 “이거랑 ‘ 다시 입력해야 됩니다. (엔터키 옆에 있음) 그냥 사용하면 프로그램에서 실행 못합니다.
각설하고 일딴 기존 프로그램은 최대한 그대로 두고 아래에 수량 체크해서 구량만큼 반복하는 프로그램을 추가 했습니다. 그리고 기존 프로그램에 색상 변경하는 명령에서 if 추가 했습니다.
(defun get_rectangle (en1 / cor 10list x elist p1 p2 p3 p4 h l hh ll hl) ;(defun c:11 ( / getentsel en1 10list elist point1 point2 point3 point4 h l hh ll hl cor) (vl-load-com) ;(WHILE ;(setq getentsel (entsel “Rectangle”)) ;객체선택
;(setq en1 (entget (car getentsel) )) ; dxf 값 리턴 (setq cor (cdr (assoc 62 (cdr en1)))) ;객체색상 (setq 10list (vl-remove-if ‘(lambda (x) (/= (car x) 10)) en1)) ;assoc 10인 리스트만 남김 (setq elist (mapcar ‘(lambda (x) (cdr x)) 10list)) ;cdr 해서 좌표값만 남김 (setq p1 (nth 0 elist)) ;1번째 포인트값 (setq p2 (nth 1 elist)) ;2번째 포인트값 (setq p3 (nth 2 elist)) ;3번째 포인트값 (setq p4 (nth 3 elist)) ;4번째 포인트값 (setq h (distance p1 p4)) ;폭값 (setq l (distance p1 p2)) ;길이값 (setq hh (rtos h 2 0)) ;폭 문자열변환 (setq ll (rtos l 2 0)) ;길이 문자열변환 (setq hl (strcat hh ” x ” ll)) ;폭 길이 합치기 문자열합치기 (command “-text” “j” “mc” “m2p” p3 p1 “” “” hl) (if (/= cor nil) (command “change” “l” “” “p” “c” cor “”) ) ;);반복문 끝 ) ;defun end
(defun c:11 (/ ss i) (if (setq ss (ssget “:S” ‘((0 . “LWPOLYLINE”)))) (progn (repeat (setq i (sslength ss)) (get_rectangle (entget (ssname ss (setq i (1- i))))) ) ) ) (prin1) )