안녕하세요~!
제가 원하는것은 원하는 도형 내부 개체나 외부 개체 일괄 선택해주는 리습인데요
홈페이지 검색결과 원 내부나 외부 개체 일괄 선택해주는 리습은 찾았습니다~!
이 리습에서 원이 아닌 다양한 형태에도 적용가능하게끔 수정 부탁드립니다!!!
이리저리 만져 봤으나 제대로 적용이 안되서 그러는데 선배님들 도와주세요~!!
;;;ⓒ Kor_Storm 2013
(defun c:test( / LM:SelectIf circle ent cp r pt io dis a ang ps iss oss)
(defun LM:SelectIf ( msg pred func keyw / sel ) (setq pred (eval pred))
(while
(progn (setvar ‘ERRNO 0) (if keyw (apply ‘initget keyw)) (setq sel (func msg))
(cond
((= 7 (getvar ‘ERRNO))
(princ “n선택된 것이 없습니다.”)
)
((eq ‘STR (type sel))
nil
)
((vl-consp sel)
(if (and pred (not (pred sel)))
(princ “n유효하지 않는 객체 선택.”)
)
)
)
)
)
sel
)
(setvar “cmdecho” 0)
(sssetfirst)
(and
(setq circle
(car
(LM:SelectIf “n원 선택: “
(lambda ( x ) (eq “CIRCLE” (cdr (assoc 0 (entget (car x)))))) entsel nil
)
)
)
(progn
(setq ent (entget circle) cp (cdr (assoc 10 ent)) r (cdr (assoc 40 ent)))
(while
(null
(and
(setq pt (getpoint “n원의 내부 혹은 외부 선택:”))
(setq io
(cond
((eq (setq dis (distance cp pt)) r)
(princ ” 선택 점이 원객체 위에 있음.”)
nil
)
((< dis r) (princ ” <내부>”) 1)
((> dis r) (princ ” <외부>”) 2)
)
)
)
)
)
(setq a (/ pi 180) ang 0 ps nil)
(repeat 360
(setq ps (cons (polar cp ang r) ps) ang (+ ang a))
)
(command “zoom” “o” circle “”)
(setq iss (ssget “cp” ps))
(command “zoom” “p”)
(if (= io 1)
;내부
(and
iss
(setq iss (ssdel circle iss))
(sssetfirst nil iss)
)
;외부
(if (setq oss (ssget “x”))
(progn
(if iss
(foreach en (vl-remove-if ‘listp (mapcar ‘cadr (ssnamex iss)))
(setq oss (ssdel en oss))
)
)
(sssetfirst nil oss)
)
)
)
)
)
(princ)
)
공유
여러 개체 선택 후 그 도형들의 내부 or 외부 선택 가능하게끔 수정가능하면 수정 부탁드릴께요~!