戏男 发表于 2023-6-5 13:43:42

消除前面的0

怎么框先所有数字把前面的0去掉呀?

mokson 发表于 2023-6-5 14:42:54

(float 005.26)
返回 5.26

liuhe 发表于 2023-6-5 17:10:40

(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)
)



应该问题不大了

ZZXXQQ 发表于 2023-6-6 13:18:48

(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)
)

ahsxxu 发表于 2023-6-5 14:22:36

刚才试了一下,简单的查找替换就可以了。
编辑-查找,查找内容:00,替换为:空着不填,就可以了。
然后如果还有,就是那个0-6.31的,查找内容:0-,再替换一次就行了。

liuhe 发表于 2023-6-5 14:25:59

不用程序的,find更好用,因为你这是mtext,如果是text单行文本,写个插件还简单点

戏男 发表于 2023-6-5 14:52:05

liuhe 发表于 2023-6-5 14:25
不用程序的,find更好用,因为你这是mtext,如果是text单行文本,写个插件还简单点

如果数值中间有0的也会被替换掉,这样数值的大小值就变了

戏男 发表于 2023-6-5 14:53:26

liuhe 发表于 2023-6-5 14:25
不用程序的,find更好用,因为你这是mtext,如果是text单行文本,写个插件还简单点

如果数值中间有0的也会被替换掉,这样数值的大小值就变了

liuhe 发表于 2023-6-5 15:26:25

戏男 发表于 2023-6-5 14:53
如果数值中间有0的也会被替换掉,这样数值的大小值就变了

你这更麻烦了,先确定能不能改成单行文本吧,多行文本更复杂

戏男 发表于 2023-6-5 16:13:29

liuhe 发表于 2023-6-5 15:26
你这更麻烦了,先确定能不能改成单行文本吧,多行文本更复杂

这是单行文字的呀

liuhe 发表于 2023-6-5 16:30:47

戏男 发表于 2023-6-5 16:13
这是单行文字的呀

你的文字是多行的,全是mtext,只是把宽度缩小,看着是单行,dxf码显示是多行文字
页: [1] 2
查看完整版本: 消除前面的0