你是对的,第二部分的文本不是一个表(我们要用块计数和我们需要的信息创建表还有很长的路要走,但这是另一篇文章)。我们使用了以下lisp(作者未知),但它既不放置文本,也不适用于多行文字和多重引线。
- ;;;add selected numbers. highlight numbers that cannot convert.
- (defun c:add (/ txtss badset total cntr ent elist str nstr)
- (setvar "cmdecho" 0)
- (setq total 0
- cntr 0
- nstr (list))
- (princ "\nSelect numbers to add: ")
- (setq txtss (ssget '((0 . "TEXT")) ))
- (while (< cntr (sslength txtss))
- (setq ent (ssname txtss cntr)
- elist (entget ent))
- (setq str (cdr (assoc 1 elist)))
- (if (and (> (strlen str) 3) (wcmatch str "*`,*"))
- (repeat (/ (strlen str) 4)
- (setq nstr (cons (substr str (- (strlen str) 2) 3) nstr))
- (setq str (substr str 1 (- (strlen str) 4)))
- );repeat
- );if
- (if nstr
- (foreach v nstr
- (setq str (strcat str v)))
- );if
- (setq total (+ total (atof str)))
- (setq cntr (1+ cntr))
- (setq nstr (list))
- );while
- (princ (strcat "\nTotal: " (rtos total 2 2)))
- (setvar "cmdecho" 0)
- (princ)
- );eof
这里是我们过去使用的另一个(作者不详),它几乎满足了我们的需要(适用于多行文字),但不适用于逗号或多重引线。当我使用lisp例程时,我是一个新手,只会有足够的危险性,我曾尝试在某种程度上将两者结合起来,但运气不好,我不确定我是否能够让它们与MLEADER一起工作。如果我只是运气不好,想得到mleaders的总数,那么我很乐意让这两个一起工作。
- ; ADDN04.LSP - ADDS NUMBER STRINGS AND CONVERTS TO SQUARE FOOT AND ACRES with 4 decimal places
- ;
- (defun C:ADDNO4 ()
- (SETQ CMD (GETVAR "CMDECHO"))
- (SETVAR "CMDECHO" 0)
- (SETQ SS NIL)
- (PRINC "/nSELECT TEXT:")(PRINC)
- (SETQ SS (SSGET))
- (SETQ NO -1)
- (setq TX 0)
- (REPEAT (SSLENGTH SS)
- (SETQ NO (1+ NO))
- (SETQ ENT (ENTGET (SSNAME SS NO)))
- (SETQ OLDL (ASSOC 1 ENT))
- (SETQ TXX (CDR OLDL))
- (SETQ TXX (ATOF TXX))
- (SETQ TX (+ TX TXX))
- )
- [color="red"] (CLUF)
- (SETQ TX (* TX LUF))
- (SETQ MID (GETPOINT "\nSELECT MIDDLE POINT OF TEXT:"))
- (SETQ TXT (RTOS TX 2 4))
- (COMMAND "TEXT" "M" MID "" "0" TXT)
- (PRIN1)
- (SETVAR "CMDECHO" CMD)
- )[/color]
- (DEFUN CLUF ()
- (SETQ LUN (GETVAR "LUNITS"))
- (IF (OR (= LUN 3) (= LUN 4))
- (SETQ LUF 0.00694444)
- (SETQ LUF 1)
- )
- )
|