;; 不能预设左下角点坐标- (defun c:tt (/ oldos block n ent pmax pmin x1 y1 x2 y2 pn-x pn-y px-x px-y pt1 pt2)
- (setvar "cmdecho" 1)
- (setq oldos (getvar "osmode")
- block (ssget)
- n 0
- )
- (repeat (sslength block)
- (setq ent (ssname block n))
- (vla-getboundingbox
- (vlax-ename->vla-object ent)
- 'minpoint
- 'maxpoint
- )
- (setq pmax (trans (vlax-safearray->list maxpoint) 0 1)
- pmin (trans (vlax-safearray->list minpoint) 0 1)
- x1 (car pmin)
- y1 (cadr pmin)
- x2 (car pmax)
- y2 (cadr pmax)
- pn-x(if pn-x pn-x x1)
- pn-y(if pn-y pn-y y1)
- px-x(if px-x px-x x2)
- px-y(if px-y px-y y2)
- pn-x(if (< x1 pn-x) x1 pn-x)
- pn-y(if (< y1 pn-y) y1 pn-y)
- px-x(if (> x2 px-x) x2 px-x)
- px-y(if (> y2 px-y) y2 px-y)
- n (1+ n)
- )
- )
- (setq pt1 (list pn-x pn-y)
- pt2 (list px-x px-y)
- )
- (setvar "osmode" 0)
- (vl-cmdf ".rectang" pt1 pt2)
- (setvar "osmode" oldos)
- (setvar "cmdecho" 1)
- (princ)
- )
|