winner108 发表于 5 天前

对单行文字内的数字进行递增或递减

本帖最后由 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不能传递关键字,请问我还如何实现能够连续的点击单行文字内数字进行递增或递减,并且在不退出的情况下,输入关键字调整递增或递减模式?

g372145 发表于 昨天 07:38

自动的递增递减吗?回头试一下。
页: [1]
查看完整版本: 对单行文字内的数字进行递增或递减