(defun C:ww (/ obb oLL oUR ss LL UR)
(setq ss (ssget))
(vl-load-com)
(setq cla (getvar “clayer”))
(if (= nil (tblsearch “LAYER” “00PLOT”))
(command “layer” “make” “00PLOT” “COLOR” “16” “00PLOT” “P” “N” “00PLOT” “L” “hidden” “00PLOT” “”)
)
(setvar “CLAYER” “00PLOT”)
(setvar “cecolor” “bylayer”)
(command “-linetype” “set” “Bylayer” “”)
(defun obb (ent); = Object’s Bounding Box corners
(vla-getboundingbox (vlax-ename->vla-object ent) ‘minpt ‘maxpt)
(setq
oLL (vlax-safearray->list minpt); Object’s Lower Left
oUR (vlax-safearray->list maxpt); Object’s Upper Right
); setq
); defun — obb
(vl-load-com)
(prompt “nTo draw the Smallest Rectangle around them,”)
(setq ss (ssget “P”))
(obb (ssname ss 0))
(setq LL oLL UR oUR); initial overall LL & UR [of first object]
(ssdel (ssname ss 0) ss)
(repeat (sslength ss)
(obb (ssname ss 0))
(setq
LL (mapcar ‘min oLL LL); <———–이값과
UR (mapcar ‘max oUR UR); <———-이값
); setq
(ssdel (ssname ss 0) ss)
); repeat
(command “_rectang” “_none” LL “_none” UR)
(setvar “CLAYER” CLA)
(princ)
)
어디서 얻었는지는 지금 기억이 나지 않지만 자주 사용하는 리습입니다.
최종 LL, UR 값을 자주 씁니다.
다른리습을 사용할 때에도 LL, UR 값구하는 부분까지 공통으로 사용합니다.
똑같은 내용을 반복사용하다보니 조금 불편한 감이 있습니다.
혹시 이 리습을 서브루틴으로 만들어 LL, UR 값만 받아서 쓸 수 있도록 만들 수 있을까요?
만들 수 있다면 좀 알려주시면 감사하겠습니다.
윌러러러이Lv.0
이 리습을 자주 쓰는데 공통된 부분을 서브루틴으로 만들 수 있을까요?
공유
수야12님 답변 감사합니다.^^
그런데 제가 설명을 잘 못해서 원하는 것을 얻지 못했네요.
제가 원하는 것은
(defun LLUR (/ obb oLL oUR ss LL UR)
(vl-load-com)
(setq ss (ssget))
(defun obb (ent); = Object’s Bounding Box corners
(vla-getboundingbox (vlax-ename->vla-object ent) ‘minpt ‘maxpt)
(setq
oLL (vlax-safearray->list minpt); Object’s Lower Left
oUR (vlax-safearray->list maxpt); Object’s Upper Right
); setq
); defun — obb
(obb (ssname ss 0))
(setq LL oLL UR oUR); initial overall LL & UR [of first object]
(ssdel (ssname ss 0) ss)
(repeat (sslength ss)
(obb (ssname ss 0))
(setq
LL (mapcar ‘min oLL LL); <———–이값과
UR (mapcar ‘max oUR UR); <———-이값
); setq
(ssdel (ssname ss 0) ss)
); repeat
(princ)
)
(defun c:test ()
(command “rectangle” LL UR)
(princ)
)
이런식으로
위에것을 서브루틴으로 만들어서
다른 리습에서 서브루틴의 LL UR값만 받아서 사용할 수 있는지
있다면 방법이 무엇인지 알려주시면 안될까요??
리습을 배운게 아니라 여기저기서 짜집기해서 사용하다보니
원하는 것을 얻기가 쉽지가 않네요ㅜㅜ