Lisp程序写得更好:
- (defun c:ARE (/ *error* varlist oldvars ar2 ar scl pnt nme2 nme nme3)
- (defun *error* (msg)
- (mapcar 'setvar varlist oldvars)
- (if (= msg "")
- (princ "\nFunction Complete.")
- (princ (strcat "\n" (strcase msg)))
- ) ;_ end if
- (princ)
- ) ;_ end defun
- (setq varlist (list "CMDECHO" "ATTREQ" "CLAYER" "OSMODE")
- oldvars (mapcar 'getvar varlist)
- ) ;_ end setq
- (mapcar 'setvar varlist (list 0 1 "0" 0))
- (if (not (tblsearch "LAYER" "ROOMNAMES"))
- (command "-layer" "m" "ROOMNAMES" "C" "1" "ROOMNAMES" "")
- (setvar "clayer" "ROOMNAMES")
- ) ; if
- (while
- (not ar2)
- (setq ar2 (car (entsel "\nPick Area: ")))
- ) ;_ end while
- (command "_area" "object" ar2)
- (setq ar (rtos (/ (getvar "AREA") 144) 2 1)
- scl (getvar "dimscale")
- ) ;_ end setq
- (if (and
- (setq pnt (getpoint "\nPick insertion point:")
- nme2 (getstring "\nEnter Roomname Line #1: ")
- nme (getstring "\nEnter Roomname Line #2: ")
- nme3 (getstring "\nEnter Number: ")
- ) ;_ end setq
- ) ;_ end and
- (command "-insert" "room" pnt scl scl "0.0" nme nme2 nme3 ar)
- ) ;_ end if
- (*error* "")
- (princ)
- ) ;_ end defun
如果这不能正常工作,请提供您正在使用的块,我将进行测试。 |