Drawing1.dwg
위의 그림을 보시면 노란색 서클친부분을 클릭해서
아래와같이
(sslength (ssget “c” (getpoint “n첫 번째 점 지정:”) (getpoint “n두 번째 점 지정:”) ‘((8 . “aaa00*”))))
이렇게 하면 갯수가 2개가나오거든요…
ssget “c” 의 뜻이 두좌표를 지나는 객체가 있는지 없는지 판단하는 함수 아닌가요?
그림을 보시면 노란색 서클친 두점을 지나는 aaa00* 객체는 1개밖에 없거든요.
근데 2개라고 나오거든요….
제가 구하고 싶은것은 두좌표가 있을때 그좌표 와 접하는객체(침범한 객체 말고) 가 있는지 없는지를
구하고싶은데…
ssget 함수가 두객체가 가까이 있거나 머 이럴때 제대로 안나오는 경우가 있어서
vlisp으로 하면 제대로 구해지나해서. 아래 질문을 올렸던 것인데
kor님이 올려주신 소스
(defun c:test ( / )
(vl-load-com)
(if (and (setq p1 (getpoint “n첫 번째 점 지정:”)) (setq p2 (getpoint p1 “n두 번째 점 지정:”)))
(progn
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq sets (vla-get-selectionsets doc))
(if (vl-catch-all-error-p (vl-catch-all-apply ‘vla-item (list sets “set”)))
(setq newset (vla-add sets “set”))
(progn
(vla-delete (vla-item sets “set”))
(setq newset (vla-add sets “set”))
)
)
(setq filter_code (vlax-make-safearray vlax-vbinteger ‘(0 . 3)))
(setq filter_value (vlax-make-safearray vlax-vbvariant ‘(0 . 3)))
(vlax-safearray-fill filter_code ‘(-4 8 8 -4)) ;–변경한부분
(vlax-safearray-fill filter_value ‘(“<or” “aaa001” “aaa00*” “or>”)) ;–변경한부분
(vla-select newset acSelectionSetCrossing (vlax-3d-point p1) (vlax-3d-point p2) filter_code filter_value)
(vla-get-count newset)
)
)
)
이소스를 써도 마찬가지로 선택된 객체가 2개가 나오거든요…….
두좌표를 지나는 객체가 있는지 없는지 판단할려면…
위방법말고는 다른 방법은 없는건지 궁금합니다……
공유