dennylaw163 发表于 2021-5-21 14:04:27

自动对象居中




首先感谢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)
[*])

q1170249342 发表于 2021-5-21 17:28:20

好东西,顶一个,感谢楼主分享
页: [1]
查看完整版本: 自动对象居中