消除前面的0
怎么框先所有数字把前面的0去掉呀?(float 005.26)
返回 5.26 (defun c:TT (/ P1 P2 SS I TXT TXT1 E)
(SETQ P1(GETPOINT "\n选择第一点")
p2(getcorner p1 "\n选择第二点")
)
(setq ss (ssget "c" P1 P2 '((0 . "*TEXT"))))
(IF (NOT SS)
(VL-EXIT-WITH-VALUE 0)
)
(setvar 'QAFLAGS 1)
(command "explode" ss "")
(setvar 'QAFLAGS 0)
(setq ss (ssget "c" P1 P2 '((0 . "*TEXT"))))
(SETQ I 0)
(IF (NOT SS)
(VL-EXIT-WITH-VALUE 0)
)
(repeat (sslength ss)
(setq e (SSNAME SS I)
txt(cdr (ASSOC 1 (entget e)))
txt1 txt
i (1+ I)
)
(WHILE (= "0" (SUBSTR TXT1 1 1))
(SETQ TXT1 (vl-string-left-trim "0" TXT1))
)
(ENTMOD (SUBST (CONS 1 TXT1) (CONS 1 TXT) (ENTGET E)))
)
(PRINC)
)
应该问题不大了 (defun c:tt ()
(if (setq ss (ssget '((0 . "TEXT"))))
(repeat (setq i (sslength ss))
(setq ent (entget(ssname ss (setq i (1- i)))))
(setq txt (cdr(assoc 1 ent)))
(setq j 1)
(while (= (substr txt j 1) "0") (setq j (1+ j)))
(entmod (subst (cons 1 (substr txt j)) (assoc 1 ent) ent))
)
)
(princ)
)
刚才试了一下,简单的查找替换就可以了。
编辑-查找,查找内容:00,替换为:空着不填,就可以了。
然后如果还有,就是那个0-6.31的,查找内容:0-,再替换一次就行了。 不用程序的,find更好用,因为你这是mtext,如果是text单行文本,写个插件还简单点 liuhe 发表于 2023-6-5 14:25
不用程序的,find更好用,因为你这是mtext,如果是text单行文本,写个插件还简单点
如果数值中间有0的也会被替换掉,这样数值的大小值就变了 liuhe 发表于 2023-6-5 14:25
不用程序的,find更好用,因为你这是mtext,如果是text单行文本,写个插件还简单点
如果数值中间有0的也会被替换掉,这样数值的大小值就变了 戏男 发表于 2023-6-5 14:53
如果数值中间有0的也会被替换掉,这样数值的大小值就变了
你这更麻烦了,先确定能不能改成单行文本吧,多行文本更复杂 liuhe 发表于 2023-6-5 15:26
你这更麻烦了,先确定能不能改成单行文本吧,多行文本更复杂
这是单行文字的呀 戏男 发表于 2023-6-5 16:13
这是单行文字的呀
你的文字是多行的,全是mtext,只是把宽度缩小,看着是单行,dxf码显示是多行文字
页:
[1]
2