自动对象居中
首先感谢G版的付出,请问G版或者哪位大师改一下下列代码中的 "选择第二组物件:" 为自动根据第一组对象来选择其所在的封闭范围;
[*](defun c:tt (/ A B hp1 hp2 CP1 CP2 E LL1 LL2 N1 N2 RU1 RU2 S1 S2)
[*](princ "\n选择第一组物件:")
[*](setq s1 (ssget))
[*](princ "\n选择第二组物件:")
[*](setq s2 (ssget))
[*]
[*](if (and s1 s2)
[*] (progn
[*] (repeat (setq n1 (sslength s1))
[*] (setq e (ssname s1 (setq n1 (1- n1))))
[*] (vla-GetBoundingBox (vlax-ename->vla-object e) 'a 'b)
[*] (if ll1
[*] (setq ll1 (apply
[*] 'mapcar
[*] (cons
[*] 'min
[*] (cons ll1 (mapcar 'vlax-safearray->list (list a b)))
[*] )
[*] )
[*] ru1 (apply
[*] 'mapcar
[*] (cons
[*] 'max
[*] (cons ru1 (mapcar 'vlax-safearray->list (list a b)))
[*] )
[*] )
[*] )
[*] (setq ll1 (apply
[*] 'mapcar
[*] (cons 'min (mapcar 'vlax-safearray->list (list a b)))
[*] )
[*] ru1 (apply
[*] 'mapcar
[*] (cons 'max (mapcar 'vlax-safearray->list (list a b)))
[*] )
[*] )
[*] )
[*] )
[*] (setq a nil
[*] b nil
[*] )
[*] (setq cp1 (mapcar '* (mapcar '+ ll1 ru1) '(0.5 0.5 0.5)))
[*] (repeat (setq n2 (sslength s2))
[*] (setq e (ssname s2 (setq n2 (1- n2))))
[*] (vla-GetBoundingBox (vlax-ename->vla-object e) 'a 'b)
[*] (if ll2
[*] (setq ll2 (apply
[*] 'mapcar
[*] (cons
[*] 'min
[*] (cons ll2 (mapcar 'vlax-safearray->list (list a b)))
[*] )
[*] )
[*] ru2 (apply
[*] 'mapcar
[*] (cons
[*] 'max
[*] (cons ru2 (mapcar 'vlax-safearray->list (list a b)))
[*] )
[*] )
[*] )
[*] (setq ll2 (apply
[*] 'mapcar
[*] (cons 'min (mapcar 'vlax-safearray->list (list a b)))
[*] )
[*] ru2 (apply
[*] 'mapcar
[*] (cons 'max (mapcar 'vlax-safearray->list (list a b)))
[*] )
[*] )
[*] )
[*] )
[*] (setq cp2 (mapcar '* (mapcar '+ ll2 ru2) '(0.5 0.5 0.5)))
[*] (command "_.move" s1 "" (trans cp1 0 1) (trans cp2 0 1))
[*] )
[*])
[*](princ)
[*])
好东西,顶一个,感谢楼主分享
页:
[1]