wedg 发表于 2009-3-10 17:42:00

[求助]如果求出单行文本中前半部分相同,后半部分的和?

<p>哪位大虾帮小弟编写一个小lisp程序:基本内容如下:</p><p>在一张图纸中有很多这样的文字:(以下文字为单行文本,即D=200 L=53为单行文本)</p><p>D=200 L=52;D=100 L=20;D=300 L=36;D=100 L=30;D=100 L=58;D=200 L=53……</p><p>要求,求出&nbsp;&nbsp; D=200时,所有L=?(D表示管径,L表示长度)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D=100时,所有L=?</p>

ZZXXQQ 发表于 2009-3-10 21:16:00

本帖最后由 作者 于 2009-3-18 21:17:12 编辑


;计算管长 明经 ZZXXQQ 2009.3.10 - 2009.3.13
(defun c:tt ()
(setvar "CMDECHO" 0)
(setvar "DIMZIN" 0)
(setq dl (list))
(if (and
      (princ "\n选择文本 :")
      (setq ss (ssget '((0 . "TEXT") (1 . "D*"))))
   ) (progn
(setq i 0)
(repeat (sslength ss)
   (setq txt (cdr(assoc 1 (entget(ssname ss i))))
         i (1+ i))
   (setq d (atoi (substr txt 3))
         j 3)
   (while (and (< j (strlen txt)) (/= (substr txt j 2) "L=")) (setq j (1+ j)))
   (setq l (atof (substr txt (+ j 2))))
   (if (assoc d dl)
    (setq l (+ (cdr(assoc d dl)) l)
             dl (subst (cons d l) (assoc d dl) dl))
    (setq dl (cons (cons d l) dl))
   )
)
(setq i 0)
(if (setq pt (getpoint "\nInsert Point :")) (progn
   (setq ttx (strcat "\nD=" (itoa (car(nth i dl))) " L=" (rtos (cdr(nth i dl)) 2 1)))
   (setq i (1+ i))
   (command ".text" pt "" "" ttx)
   (repeat (length dl)
    (setq ttx (strcat "\nD=" (itoa (car(nth i dl))) " L=" (rtos (cdr(nth i dl)) 2 1)))
    (setq i (1+ i))
    (command ".text" "" ttx)
   )
))
))
(setvar "CMDECHO" 1)
(princ)
)

wedg 发表于 2009-3-11 08:59:00

<p>谢谢zzxxqq斑竹,试试先,如有什么问题,再行请教。</p>

wedg 发表于 2009-3-11 09:16:00

<p>版主,好像不能使用。请看图片。我需要求出D=200时,所有D=200后面所带的L的和。即下面图片中D=200 总的L=1500。最好能用文本显示出来。</p>

ljttjl 发表于 2009-3-11 19:18:00

<p>可以用程序实现,联系:ljttjl@ tom.com</p>

ZZXXQQ 发表于 2009-3-11 20:25:00

一个函数写错了。二楼已改,再试试。

wedg 发表于 2009-3-12 09:24:00

<p>好像还是不行。</p>

ZZXXQQ 发表于 2009-3-12 12:45:00

<p>二楼又改了。</p>

wedg 发表于 2009-3-13 14:19:00

<p>好的,基本上可以使用了。版主,能否留个QQ给我?以后有什么事情,我可以直接和你联系吗?</p><p></p>

wedg 发表于 2009-3-13 14:49:00

<p>版主,我觉得这个lisp程序使用范围太小,如果出现这样的文字,如图。出现这样的文字以后,程序就无法计算。能否想到别的方法处理?或者,一张图中同时出现了“D=、DN、DN+文字”,怎么处理?</p><p></p><p>&nbsp;</p>
页: [1] 2
查看完整版本: [求助]如果求出单行文本中前半部分相同,后半部分的和?