这稍微简单一些,并且支持“撤消”功能:
- (vl-load-com)
- (defun c:FOO (/ *error* ss i acDoc)
- (defun *error* (msg)
- (if acDoc
- (vla-endundomark acDoc)
- )
- (cond ((not msg)) ; Normal exit
- ((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
- ((princ (strcat "\n** Error: " msg " ** "))) ; Fatal error, display it
- )
- (princ)
- )
- (if (and (setq ss (ssget '((0 . "MTEXT,TEXT") (1 . "*#.#*"))))
- (setq i (getreal "\nEnter increment: "))
- )
- (progn
- (vla-startundomark
- (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
- )
- (vlax-for x (vla-get-activeselectionset acDoc)
- (vla-put-textstring
- x
- (rtos (+ i (atof (vla-get-textstring x))) 2 3)
- )
- )
- (prompt (strcat "\n** " (itoa (sslength ss)) " object(s) modified ** ")
- )
- )
- )
- (*error* nil)
- )
|