我有这个lisp,但我想消除输入链测长度:
- (defun *error* (errmsg)
- (princ "\nAn error has occurred in the programme. ")
- (terpri)
- (prompt errmsg)
- (princ)
- )
- (defun trap1 (errmsg) ;define function
- (setvar "osmode" oldsnap) ;restore variables
- (setvar "clayer" oldlayer)
- (setvar "cmdecho" oldecho)
- (setq *error* temperr) ;restore *error*
- (prompt "\nResetting System Variables ") ;inform user
- (princ)
- )
- (defun c:dff (/ p1 p2 di e e1 v1 lens)
- (vl-load-com)
- (setq temperr *error*) ;store *error*
- (setq *error* trap1) ;re-assign *error*
- (setq oldecho (getvar "cmdecho")) ;store variables
- (setq oldlayer (getvar "clayer"))
- (setq oldsnap (getvar "osmode"))
- (setvar "cmdecho" 0) ;reset variables
- (setvar "osmode" 1)
-
- (setq lens 0)
- (setq ext
- (cond
- ( (getdist
- (strcat "\nSpecify Previous Chainage"
- (if ext (strcat " <" (rtos ext) "> : ") ": ")
- )
- )
- )
- ( ext )
- )
- )
-
- (setq ext1
- (cond
- ( (getdist
- (strcat "\nSpecify Current Distance"
- (if ext (strcat " <" (rtos ext) "> : ") ": ")
- )
- )
- )
- ( ext )
- )
- )
-
- (setq p3 (/ ext1 1000))
- (setq lens2 (+ ext p3))
- (progn
- (prompt"\n Select text object to paste New Chainage :")
- (setq e (ssget "_+.:S:L" '((0 . "*TEXT")))))
-
- (progn
- (setq lens (+ lens (+ lens2 0)))
- (entupd (cdr (assoc -1 (entmod (subst(cons 1 (rtos lens 2 3))(assoc 1 (setq e1 (entget (ssname e 0))))e1))))))
- (princ)
- (setq errFlag T)
- (setvar "clayer" oldlayer) ;reset variables
- (setvar "osmode" oldsnap)
- (setvar "cmdecho" oldecho)
- (setq *error* temperr)
- (princ)
- )
|