반복문 한번에 선택
컨텐츠 정보
- 101 조회
- 1 댓글
- 0 추천
- 0 비추천
-
목록
본문
(defun c:test ( / getentsel en1 10list elist point1 point2 point3 point4)
(vl-load-com)
(WHILE
(setq getentsel (entsel "nPick Rectangle")) ;객체선택
(setq en1 (entget (car getentsel) )) ; dxf 값 리턴
(setq 10list (vl-remove-if '(lambda (x) (/= (car x) 10)) en1) )
;assoc 10인 리스트만 남김
(setq elist (mapcar '(lambda (x) (cdr x)) 10list))
;cdr 해서 좌표값만 남김
(setq point1 (nth 0 elist) );1번째 포인트값
(setq point2 (nth 1 elist) ) ;2번째 포인트값
(setq point3 (nth 2 elist) );3번째 포인트값
(setq point4 (nth 3 elist) ):4번째 포인트값
(command "line" point1 point3 "")
(command "line" point2 point4 "")
)반복문 끝
);defun end
(setq getentsel (ssget "a" "nPick Rectangle")) ;객체선택
반복문 까지 적용해서 사각형 안에 엑스자 선이 그려지는 리습입니다.
클릭 클릭 클릭 해서 반복문이 됩니다.
한번에 선택해서 한번에 그리고 싶습니다.
관련자료
수야12님의 댓글
따옴표 대신 function 이라고 써도 됩니다
(defun c:test ( / ks_Line ss n e en 10list ) (defun ks_Line (p1 p2) (entmakex (list (cons 0 “LINE”) (cons 10 p1) (cons 11 p2) ) ) ) (setq ss(ssget (list (cons 0 “LWPOLYLINE”)(cons 70 1)(cons 90 4)))n 0) (if ss (progn (repeat (sslength ss) (setq e(ssname ss n)) (setq en(entget e)) (setq 10list (mapcar (function cdr) (vl-remove-if (function(lambda (x) (/= (car x) 10 )))en))) (mapcar(function(lambda(a b)(ks_Line a b)))(list(car 10list)(cadr 10list))(list(caddr 10list)(last 10list))) (setq n (1+ n)) );repeat );progn );if (princ) );defun end