 - (defun c:tt (/ A B 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)
- )
|