프로그램
캐드 분류

정렬명령어 만들어서 사용중 문제가생겨서 질문드립니다.

컨텐츠 정보

본문

;===========================================================
; 정렬_왼쪽
;———————————————————–
(DEFUN C:ALIGNLEFT(/ acadObj doc modelSpace ss ptx k en ent enx min max)
(vl-load-com)
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
(setq modelSpace (vla-get-ModelSpace doc))
(vla-StartUndoMark doc)
(setq ss (ssget))
(setq ptx (car (getpoint "n 정렬할 점 선택")))
(setq k 0)
(repeat (sslength ss)
(setq en (ssname ss k))
(setq ent (vlax-ename->vla-object en))
(vla-GetBoundingBox ent 'min 'max)
(setq enx (car (vlax-safearray->list min)))
(vla-Move ent (vlax-3d-point (list enx 0 0)) (vlax-3d-point (list ptx 0 0)))
(setq k (1+ k))
)
(vla-EndUndoMark doc) 
(princ)
)


위코드대로 작성해서 사용중입니다.

UCS 를 기본으로 해놓고 작업 시에는 잘 작동합니다

하지만 UCS를 다른각도로 변경할 시에  (vla-GetBoundingBox ent 'min 'max) 가 기존 월드 UCS 기준으로 작성이되고 정렬점을 변경된 UCS에서 선택을해도 객체들은 월드 UCS기준으로 정렬이 되네요…ㅠㅠ 고수님들의 도움이 필요합니다.

제가원하는것은 UCS를 변경했을경우 정렬도 변경된 UCS기준으로 되는것입니다.

관련자료

댓글 1 / 1 페이지

수야12님의 댓글

(setq enx(trans (car (vlax-safearray->list min))0 1))

전체 73 / 1 페이지
RSS
번호
제목
이름

최근글


새댓글


알림 0