;===========================================================
; 정렬_왼쪽
;———————————————————–
(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기준으로 되는것입니다.
(setq enx(trans (car (vlax-safearray->list min))0 1))