对单行文字内的数字进行递增或递减
本帖最后由 winner108 于 2026-1-25 17:02 编辑[*];;对单行文字内的数字进行递增或递减
[*](defun c:tt2 ()
[*](xdrx_begin)
[*](if (not (or (= #wzmode "+")(= #wzmode "-"))) (setq #wzmode "+"))
[*];(setq tf t)
[*](while (and
[*] ;tf
[*] (xdrx_initssget (xdrx-prompt "[加模式(+)/减模式(-)]<退出><" #wzmode ">:" t)
[*] "+ -"
[*] ""
[*] ""
[*] ""
[*] )
[*] ;(setq ss (xdrx_ssget "_:e"))
[*] (setq ss (xdrx_entsel))
[*] )
[*] (setq tf1 (type ss))
[*] (cond
[*] ((= tf1 'STR)
[*] (cond
[*] ((= ss "+") (setq #wzmode "+" wz "+"))
[*] ((= ss "-") (setq #wzmode "-" wz "-"))
[*] )
[*] )
[*] ((= tf1 'list)
[*] (progn
[*] (setq edata (entget (car ent)))
[*] (setq numtxt (distof (cdr (assoc 1 edata))))
[*] (cond
[*] ((= #wzmode "+")
[*] (setq numtxt (+ numtxt 1.0))
[*] )
[*] ((= #wzmode "-")
[*] (setq numtxt (- numtxt 1.0))
[*] )
[*] )
[*] (setq numtxt (rtos numtxt))
[*] (setq edata (subst (cons 1 numtxt) (assoc 1 edata) edata))
[*] (entmod edata)
[*] )
[*] ;(setq tf nil)
[*] )
[*] )
[*])
[*]
[*](xdrx_end)
[*](princ)
[*])
[*]上述代码是简化版的,遇到的问题:不用(setq ss (xdrx_ssget "_:e")) 的原因是我需要有点选处坐标,以便后面判断点选的位置在单行文字中对应的是哪一个字符(这是后话,还未完成深化),所以改用(setq ss (xdrx_entsel)),但是xdrx_entsel不能传递关键字,请问我还如何实现能够连续的点击单行文字内数字进行递增或递减,并且在不退出的情况下,输入关键字调整递增或递减模式?
自动的递增递减吗?回头试一下。
页:
[1]