在谷歌上找到的东西和添加的东西。。。。似乎有效。。。
- (defun c:GBB () (c:GetBoundingBox))
- (defun c:GetBoundingBox (/ ss v mn mx lxs lys lxd lyd)
- (vl-load-com)
- (princ "\rGET BOUNDING BOX \n")
- (setq ss (ssget))
- (setq i 0)
- (repeat (sslength ss)
- (vlax-method-applicable-p
- (setq v (vlax-ename->vla-object (ssname ss i)))
- 'getboundingbox
- ) ;_ end of vlax-method-applicable-p
- (vla-getboundingbox v 'mn 'mx)
- (setq p (mapcar 'vlax-safearray->list (list mn mx)))
- (setq xs (car (car p)))
- (setq ys (cadr (car p)))
- (setq xd (car (cadr p)))
- (setq yd (cadr (cadr p)))
- (setq lxs (cons xs lxs))
- (setq lys (cons ys lys))
- (setq lxd (cons xd lxd))
- (setq lyd (cons yd lyd))
- (setq mxs (apply 'min lxs))
- (setq mys (apply 'min lys))
- (setq mxd (apply 'max lxd))
- (setq myd (apply 'max lyd))
- (setq ps (list mxs mys))
- (setq pd (list mxd myd))
- (setq i (1+ i))
- ) ;_ end of repeat
- (command "rectangle" ps pd)
- (princ)
- ) ;_ end of defun
|