sakrado 发表于 2022-7-6 06:43:44

只需要lisp代码对num求和

大家好
我只想对文本或多行文字中的数字求和
例如
->EBA 12(21)NDBR(25.56)=0.2这是多行文字
->FD 12(102)这是多行文字
->NDBR 21(2个管道)它是MTEXT
->(X1=25.32)是文本(X2=54.21)也是文本
 
我想得到结果
->12+21+25.56+0.2=...
->12+102=...
->21+2=...
->文本和文本1+25.32+2+54.21之和=。。。
->多行文字和文字之和
->多行文字和多行文字之和
我想让它按对象选择。适用于所有图纸。
 
有人能帮我吗?
 
请参见下面的“我的DWG文件”
需要LISP对该文件求和。图纸

ReMark 发表于 2022-7-6 06:54:34

有一些自定义lisp例程可以实现这一点。快速的互联网搜索应该可以很容易地找到其中一些。

Costinbos77 发表于 2022-7-6 06:58:06

收集并比较每个字符,如果它们是数字,则将其存储并添加。
 
(defun c:test()(或(vl load com))(if(setq i 0 sel(ssget(list)(0.TEXT,MTEXT))));“_X”(cons 8 layer)(progn(setq lsel(sslength sel))(princ(strcat”\n Texts:”(itoa lsel))(while(<i lsel)(setq nmo(vlax ename->vla object(ssname sel i))txt(vla get TextString nmo))(if(=(vla get ObjectName nmo)“AcDbMText”)(setq txt([颜色=红色]LM:UnFormat[/颜色]txt nil));if(setq ltxt(strlen txt)j 1 no“ts”s 0)(而(

ReMark 发表于 2022-7-6 07:01:42

在我第一次尝试时,我发现了这个。向下滚动到CarlB的回复,他在回复中修改了发布的例程,将文本和多行文字都包括在内。
 
http://www.eng-tips.com/viewthread.cfm?qid=336013

pBe 发表于 2022-7-6 07:09:39

 
我也会这么做,但后来我意识到,对于像“NBDR 50(2PIPE)”这样的文本字符串,它会给你50+2。等待OP给出更多解释。

Costinbos77 发表于 2022-7-6 07:14:37

pBe,检查OP的详细信息:
 
 
 
 
在我看来,同样的问题也会出现在:
 
 
但它是特定的。
 
它可以制定一个标准,只考虑按顺序书写的数字:(nomber)例如(2),
或避免“nomber=”(X1=或X2=)

ReMark 发表于 2022-7-6 07:18:55

嗯,有时候一个人必须小心自己的要求。当瓶子里的精灵给你三个愿望时,仔细想想,记住意外后果法则。

pBe 发表于 2022-7-6 07:24:54

 
这就是我要说的。不知怎的,这没有意义。我想这不仅仅是数字相加。
 
 
确实如此。

Costinbos77 发表于 2022-7-6 07:30:37

正如我所说,你可以做一些限制。

marko_ribar 发表于 2022-7-6 07:32:59

 
OP的有线请求。。。pBe,这也可以是5+0+2=7(我们怎么知道50是50而不是5,0。。。
 
M、 R。
页: [1] 2
查看完整版本: 只需要lisp代码对num求和