抓取mtext文字 遇到新的问题
本站高手写的抓取mtext文字(defun c:tyu ()
(setq ent (car (entsel "\n选择MTEXT文字:")))
(setq dxf (entget ent))
(setq str0 "")
(setq txt (cdr (assoc 1 dxf)))
(setq txt (vl-string-subst "" "{" txt))
(setq txt (vl-string-subst "" "}" txt))
(while (setq n (vl-string-search ";" txt))
(if (= (setq str (substr txt 1 1)) "\\")
(setq txt (substr txt (+ n 2)))
(progn
(setq str0 (strcat str0 (substr txt 1 1)))
(setq txt (substr txt 2))
)
)
)
(setq str0 (strcat str0 txt))
(princ (strcat "当前MTEXT中的文本为: " str0))
(princ)
)
可是有个小问题
例如:mtext里有
A:1111111
B:2222222
C:3333333
我想抓取C里面的文字
用(setq txt (substr txt (+ n 2))) 修改可以
但是一旦 A跟B 的文字改变长短
抓取C里面的文字 就会不正确
要如指定抓取? 请高手帮帮忙
(setq txt (cdr (assoc 1 dxf)))
(setq Czfc (substr txt (+ (vl-string-search "C:" txt) 1)) 获取“:”前面的所有字符怎么写。 (setq txt (cdr (assoc 1 dxf)))
(setq Czfc (substr txt 1 (vl-string-search "C:" txt) )) yshf 发表于 2017-8-26 09:29
(setq txt (cdr (assoc 1 dxf)))
(setq Czfc (substr txt 1 (vl-string-search "C:" txt) ))
非常感谢你…再跟你请教如果只要获取B:里面的内容 而其他内容不出现
要怎么修改
(setq n1 (vl-string-search "B:" txt))
(setq n2 (vl-string-search "C:" txt))
(setq Bzfc (substr txt (1+ n1) (- n2 n1)))
(setq Bzfc (vl-string-subst "" "\\P" Bzfc))
页:
[1]