sergiu_ciuhnenc 发表于 2022-7-5 20:11:10

从维度中提取文本,

在随附的文件中,您将看到一个显示箍筋放置的平面图,因此我希望:
提取“x”变量之前的所有数字,并将其总和!!!
在这种情况下,我们应该获得1501。
马镫。图纸

pBe 发表于 2022-7-5 20:20:32

这很奇怪,我只得到1437个总数,在“x”字符串之前的数字。i、 e“15x100=1500”?

sergiu_ciuhnenc 发表于 2022-7-5 20:25:26

1501我手动再做一次,结果一样;您在“x”字符串之前说了正确的数字,例如“15x100=1500”;“5x90=450”

pBe 发表于 2022-7-5 20:29:04

我明白了,显然有多行文字字符格式,这就是为什么它丢失了大约6个值,总和为64
 
会一直是这样吗?有些已经格式化,有些没有格式化?
 
HYG[LM:非格式化
 
(defun c:summd (/ LM:UnFormat Total ss val)
(defun LM:UnFormat (str mtx / _Replace regex)
   (vl-load-com)
   ;; © Lee Mac 2010

   (defun _Replace (new old str)
   (vlax-put-property regex 'pattern old)
   (vlax-invoke regex 'replace str new)
   )
   (setq regex (vlax-get-or-create-object "VBScript.RegExp"))
   (mapcar
   (function
(lambda (x) (vlax-put-property regex (car x) (cdr x)))
   )
   (list (cons 'global actrue)
    (cons 'ignorecase acfalse)
    (cons 'multiline actrue)
   )
   )
   (mapcar
   (function
(lambda (x) (setq str (_Replace (car x) (cdr x) str)))
   )
   '(
("Ð" . "\\\\\\\\")
(" " . "\\\\P|\\n|\\t")
("$1"
.
"\\\\(\\\\)|\\\\[^\\\\;]*;|\\\\"
)
("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);")
("$1$2" . "\\\\(\\\\S)|[\\\\](})|}")
("$1" . "[\\\\]({)|{")
      )
   )
   (setq str
   (if mtx
   (_Replace
       "\\\\"
       "Ð"
       (_Replace "\\$1$2$3" "(\\\\)|({)|(})" str)
   )
   (_Replace "\\" "Ð" str)
   )
   )
   (vlax-release-object regex)
   str
)
(setq        aDoc(vla-get-ActiveDocument (vlax-get-acad-object))
Total 0
)
(if (ssget '((0 . "*DIMENSION")
       (-4 . "<OR")
       (1 . "*?*")
       (-3 ("ACAD"))
       (-4 . "OR>")
      )
   )
   (progn
   (vlax-for        e (setq ss (vla-get-ActiveSelectionSet aDoc))
(if
(vl-string-position
    88
    (strcase (setq val (LM:UNFORMAT (vla-get-textoverride e) t))
    )
)
   (setq total (+ (atoi val) total))
)
   )
   (vla-delete ss)
   (alert (itoa Total))
   )
)
)

sergiu_ciuhnenc 发表于 2022-7-5 20:33:57

如果它是一个通用的lisp,适用于所有类型的维度(格式化的、未格式化的),那么它会更好
但是关于你附加的Lisp程序,不起作用。
???

pBe 发表于 2022-7-5 20:36:55

在我这边有效。

sergiu_ciuhnenc 发表于 2022-7-5 20:42:05

我不知道我试了好几次allready It show me”命令:(LOAD“C:/Users/S\u C/Desktop/text find-коПиl.lsp”)C:SUMMD
命令:SUMMD
选择对象:指定对角点:108
选择对象:;错误:Ощибка
命令:“

pBe 发表于 2022-7-5 20:47:36

等等,我会去掉代码,这可能是RegExp的语言问题。
顺便问一下:这是什么意思?Ошибка
 
更新:与RegExp无关,显然它只是“unicode”编码的一种情况
 
LM的荣誉:非格式化函数

sergiu_ciuhnenc 发表于 2022-7-5 20:54:56

你可以附加lisp文件,当我的lisp文件中的代码复制它告诉我一些关于unicode文件的错误,对我来说是第一次出现这样的东西!!!

sergiu_ciuhnenc 发表于 2022-7-5 21:00:22

Обиббб平均误差!!!
页: [1] 2
查看完整版本: 从维度中提取文本,