试试这个。。。
- (defun c:Test (/ *error* name ss i obj lft rgt)
- (vl-load-com)
- ;;; Tharwat 13. jan. 2013 ;;;
- (defun *error* (x) (princ "\n *Cancel*"))
- (if (and (/= (setq name (getstring t "\n Specify Block name :")) "")
- (/= name nil)
- (setq ss (ssget "_x" (list '(0 . "INSERT") (cons 410 (getvar 'ctab)) (cons 2 name))))
- )
- (progn (repeat (setq i (sslength ss))
- (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
- (vla-getboundingbox obj 'l 'r)
- (setq mid (mapcar (function (lambda (q p) (/ (+ q p) 2.)))
- (setq lft (vlax-safearray->list l))
- (setq rgt (vlax-safearray->list r))
- )
- )
- (vla-ZoomCenter
- (vlax-get-acad-object)
- (vlax-3d-point mid)
- (distance lft (list (car rgt) (cadr lft)))
- )
- (if (eq "" (getstring "\n Press enter to continue or space bar:"))
- (princ)
- )
- )
- (alert "*** DONE ***")
- )
- (princ)
- )
- (princ)
- )
|