linshiyin2 发表于 2012-5-15 16:02:19

自动编号

(defun C:xgxh ( / be h h1 hh j k lx n names sa shzi ss str str1 tc xh ys yusf zg)
(initget 1)
(setq be (entsel "\n选取要修改的序号:")
be (car be)
be (entget be);获取数据
lx (assoc '0 be);对象类型
tc (assoc '8 be);所在图层
xh (atof (cdr (assoc '1 be)));序号
ys (assoc '62 be);颜色
zg (assoc '40 be);字高
)
(if ys
    (setq ss (ssget "x" (list lx tc zg ys)))
    (setq ss (ssget "x" (list lx tc zg )))
    )
(setq str (getstring "\n 输入四则运算及数值<默认+1>:"))
(if (= str "")
    (setq str "+1")
    )
(setq yusf (substr str 1 1)
       shzi (atof (substr str 2))
       n (sslength ss)
       k 0
       j 0)
(while (< k n)
   (setq names (ssname ss k)
      sa (entget names)
       h (assoc '1 sa)
      hh (atof(cdr h));对象序号
      )
   (if (>= hh xh)
   (progn
       (if (= yusf "+")(setqstr1 (rtos (+ hh shzi) 2)))
       (if (= yusf "-")(setqstr1 (rtos (- hh shzi) 2)))
       (if (= yusf "*")(setqstr1 (rtos (* hh shzi) 2)))
       (if (= yusf "/")(setqstr1 (rtos (/ hh shzi) 2)))
       (if (= yusf "^")(setqstr1 (rtos (expt hh shzi) 2)))
       (setq h1 (cons 1 str1))
       (setq sa (subst h1 h sa))
       (setq j (+ 1 j))
       (entmod sa)
       )
   )
   (setq k (+ k 1))
   )
(print (strcat "修改文字数:" (itoa j)))
(princ)
)
修改的一个网友的源码,改了一下发上来大家可以补充

s678z 发表于 2012-5-25 09:53:23

试了下没反应

liuzh99860 发表于 2015-1-9 11:09:40

工具只对单一数字修改没有框选能力

柴月二号 发表于 2015-11-15 23:30:11

kankan,,,,,,,,,,

1227588 发表于 2016-1-6 16:51:42

试着运行 提示错误: 参数太少: (IF YS)
_$错误: 参数类型错误: lselsetp nil
_$

shcvip 发表于 2018-1-25 21:14:15

没有点选的,可以自动叠加了。
页: [1]
查看完整版本: 自动编号