티스토리 뷰

반응형

오토캐드의 꽃이라고 할 수 있는 리습을 연습합니다.

레이져편집을 하거나 반복되는 작업을 편하게 할 수 있는 리습은 정말 캐드의 꽃이라고 할 수 있지요....

물론 캐드라는 것이 너무 방대해서 리습도 하나의 작은 개념이라고 할수도 있지만, 캐드의 고급사용자가 되기 위해서는 반드시 리습을 아는 것과 모르는 것은 업무속도가 엄청 차이가 날 것입니다.

처음 리습을 접하는 분들에겐 그냥 소스를 활용해서 사용해도 좋을 것 같아서 공유해 봅니다.

객체의 하단 중앙을 잡아주는 리습입니다. 많이 미흡하지만, 혹시 필요한 분들을 위해서 공유합니다.

 

(defun c:mc(/ objs entname vlentname minpoint maxpoint lowleftpoint lowleftpointx lowleftpointy lowleftpointxlist lowleftpointylist uprightpoint uprightpointx uprightpointy uprightpointxlist uprightpointylist min max llp urp)
(setq objs (ssget))
(setq n 0)
(repeat (sslength objs)
	(setq entname (ssname objs n))
	(setq vlentname (vlax-ename->vla-object entname))
	(vla-getboundingbox vlentname 'minpoint 'maxpoint)
	(setq lowleftpoint (vlax-safearray->list minpoint))
	(setq lowleftpointx (car lowleftpoint))
	(setq lowleftpointxlist (cons lowleftpointx lowleftpointxlist))
	(setq lowleftpointy (cadr lowleftpoint))
	(setq lowleftpointylist (cons lowleftpointy lowleftpointylist))
	(setq uprightpoint (vlax-safearray->list maxpoint))
	(setq uprightpointx (car uprightpoint))
	(setq uprightpointxlist (cons uprightpointx uprightpointxlist))
	(setq uprightpointy (cadr uprightpoint))
	(setq uprightpointylist (cons uprightpointy uprightpointylist))
	(setq n (1+ n))
)
(setq lowleftpointxlist (vl-sort lowleftpointxlist '<))
(setq lowleftpointylist (vl-sort lowleftpointylist '<))
(setq uprightpointxlist (vl-sort uprightpointxlist '>))
(setq uprightpointylist (vl-sort uprightpointylist '>))
(setq centerpt (/ (+ (nth 0 lowleftpointxlist) (nth 0 uprightpointxlist)) 2) )
(setq llp (list centerpt (nth 0 lowleftpointylist))) ; /2로 나눠 중심을 잡는다.
(setq urp (list (nth 0 uprightpointxlist) (nth 0 uprightpointylist)))
  (princ centerpt)
(command "._move" objs "" llp pause)
)

 

오토리습 객체의 하단 중앙을 선택해 주는 리습연습

오토리습을 연구해서 더 편리한 작업환경을 만들어 보세요~

 

 

반응형
댓글