要演示如何使用块来避免移动命令的橡皮筋,请执行以下操作:
- (defun c:test ( / *error* e l n s v )
- (defun *error* ( msg )
- (if l (mapcar 'setvar v l))
- (if (and n (setq e (tblobjname "BLOCK" n)))
- (vla-delete (vlax-ename->vla-object (cdr (assoc 330 (entget e)))))
- )
- (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
- (princ (strcat "\nError: " msg))
- )
- (princ)
- )
-
- (if
- (and
- (setq e (car (entsel)))
- (eq "INSERT" (cdr (assoc 0 (setq e (entget e)))))
- (setq e (strcase (cdr (assoc 2 e))))
- )
- (progn
- (setq s
- (cond
- ( (eq e "P1") "1"")
- ( (eq e "P1.5") "1-1\\2"")
- ( (eq e "P2") "2"")
- ( "N/A" )
- )
- )
- (setq n 0)
- (while (tblsearch "BLOCK" (itoa (setq n (1+ n)))))
- (setq n (itoa n))
- (entmake
- (list
- '(0 . "BLOCK")
- '(8 . "0")
- (cons 2 n)
- '(70 . 0)
- '(10 0.0 0.0 0.0)
- )
- )
- (entmake
- (list
- '(0 . "TEXT")
- (cons 7 (if (tblsearch "STYLE" "romans") "romans" "Standard"))
- '(40 . 10.0)
- '(8 . "TEXT")
- '(10 0.0 0.0 0.0)
- (cons 1 s)
- '(41 . 0.
- )
- )
- (entmake '((0 . "ENDBLK")))
- (setq v '(CMDECHO QAFLAGS)
- l (mapcar 'getvar v)
- e (entlast)
- )
- (mapcar 'setvar v '(0 1))
- (princ "\nPosition Text: ")
- (command "_.-insert" n "_S" 1.0 "_R" 0.0 pause)
- (if (not (equal e (setq e (entlast))))
- (command "_.explode" e "")
- )
- (mapcar 'setvar v l)
- (vla-delete (vlax-ename->vla-object (cdr (assoc 330 (entget (tblobjname "BLOCK" n))))))
- )
- )
- (princ)
- )
- (vl-load-com) (princ)
|