试试这个我刚刚编写并添加到工具箱中的程序
- (defun c:test (/ *error* _bx cm ss s i wp tx e d mid)
- ;;------------------------------------;;
- ;; Author : Tharwat 15.09.2015 ;;
- ;; Resize texts inside wipeouts ;;
- ;;------------------------------------;;
- (defun *error* (msg)
- (if cm
- (setvar 'cmdecho cm)
- )
- (if (and msg (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*"))
- (princ (strcat "\n ** Error : " msg " **"))
- )
- (princ)
- )
- (defun _bx (o / l r a b c d)
- (vla-getboundingbox (vlax-ename->vla-object o) 'l 'r)
- (setq a (vlax-safearray->list l)
- b (vlax-safearray->list r)
- c (list (car b) (cadr a))
- d (distance a c)
- )
- (list a b c d)
- )
- (if (setq ss (ssget '((0 . "WIPEOUT"))))
- (repeat (setq i (sslength ss))
- (setq wp (_bx (ssname ss (setq i (1- i)))))
- (if (setq s (ssget "_C"
- (car wp)
- (cadr wp)
- '((0 . "TEXT"))
- )
- )
- (progn
- (setq e (ssname s 0)
- tx (_bx e)
- d (last wp)
- cm (getvar 'cmdecho)
- )
- (setvar 'cmdecho 0)
- (command
- "_.scale"
- e
- ""
- (setq mid (mapcar '(lambda (q p) (/ (+ q p) 2.))
- (car wp)
- (cadr wp)
- )
- )
- "_r"
- "_none"
- (car tx)
- "_none"
- (caddr tx)
- (- d (/ d 5.))
- )
- (setq tx (_bx e))
- (command
- "_.move"
- e
- ""
- "_none"
- (mapcar '(lambda (q p) (/ (+ q p) 2.)) (car tx) (cadr tx))
- "_none"
- mid
- )
- )
- )
- )
- )
- (*error nil)
- (princ)
- )(vl-load-com)
|