가끔 도면중에
ucs를 남발하여 R값의 z 법선이 -1 이 된 arc가 있습니다.
그래서 폴리라인으로 묶질 못하는데
원같은 경우는 그냥 그대로라서 상관이없지만
arc의 z 법선을 -1 -> 1로 바꿀경우
해당 시작점과 끝점이 반대가 되어
arc가 뒤집혀버립니다.
사용중인 리습은
(vl-load-com)
(defun c:cr ( / ss doc index e obj cpt dir )
(if (setq ss (ssget (list (cons 0 “ARC”))))
(progn
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark doc)
(setq index 0)
(repeat (sslength ss)
(setq e (ssname ss index))
(setq obj (vlax-ename->vla-object e))
(setq cpt (vlax-get obj ‘center))
(setq dir (vlax-get obj ‘normal))
(if (= (caddr dir) -1)
(progn
(vlax-put obj ‘normal (list 0.0 0.0 1.0))
(vlax-put obj ‘center cpt)
)
)
(setq index (1+ index))
)
(vla-endundomark doc)
)
)
(princ)
)
(prompt “n[ CR ]”)
(princ)
입니다.
선택된것중 법선이 -1인 것만 z법선을바꾸는 내용중에
시작점과 끝점의 값을 바꿀수 있을까요?
테스트 결과 잘 작동합니다.
감사드립니다.
감사합니다.
arc는 점이 아닌 각도를 바꾸는 것이라서 각도만 넣어 봤습니다.
(defun c:cr ( / ss doc index e obj cpt dir )
(if (setq ss (ssget (list (cons 0 “ARC”))))
(progn
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark doc)
(setq index 0)
(repeat (sslength ss)
(setq e (ssname ss index))
(setq obj (vlax-ename->vla-object e))
(setq cpt (vlax-get obj ‘center))
(setq dir (vlax-get obj ‘normal))
(setq ang1 (vlax-get obj ‘StartAngle))
(setq ang2 (vlax-get obj ‘EndAngle))
(if (= (caddr dir) -1)
(progn
(vlax-put obj ‘normal (list 0.0 0.0 1.0))
(vlax-put obj ‘center cpt)
(vlax-put obj ‘StartAngle (- pi ang2))
(vlax-put obj ‘EndAngle (- pi ang1))
)
)
(setq index (1+ index))
)
(vla-endundomark doc)
)
)
(princ)
)