帮忙弄个以数字开头文本,开头数字统一加减某数的lsp
帮忙弄个以数字开头文本,开头数字统一加减某数的lsp如1AT----2AT
谢谢
(setq a "1AT"
b (substr a 1 1)
c (strcat (itoa (1+ (atoi b)))(substr a 2))
)
也可以考虑用 vl-string-subst 函数 .....
(defun c:tt(/ ss add en txt enl num)
(while(not (setq add (getint "\n同一加减数值:"))))
(princ "\n选择文字:")
(while (setq ss (ssget '((-4 . "<or")(-4 . "<and")(0 . "text") (1 . "#*")(-4 . "and>")(-4 . "<and")(0 . "text") (1 . "-#*")(-4 . "and>")(-4 . "or>"))))
(repeat (setq n (sslength ss))
(setq en (ssname ss (setq n (1- n))))
(setq txt (cdr (assoc 1 (setq enl (entget en)))))
(setq num (atoi txt)
txt (substr txt (1+ (strlen (itoa num))))
num (+ num add)
txt (strcat (itoa num) txt)
enl (subst (cons 1 txt) (assoc 1 enl) enl)
)
(entmod enl)
)
)
)
;第四行可以改成:
(while (setq ss (ssget '((0 . "TEXT") (1 . "#*,-#*"))))
本帖最后由 xiaxiang 于 2011-2-21 15:08 编辑
花了很长时间揣摩楼主的用意。若是要像“1AT---->2AT"那么简单,就是Gu_xl版主的程序最好,简洁明了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一。若是修改如原件号7或10-2,因加入或删除某件号而改变原件号成为10或10-5,可以用如下一段代码。
使用方法:
1.数字的增值分前后,增值可为正数负数和0。
2.有后数字的前数字是否要增值(n)y你回车前数不变,当你输入y前数字要加增值,如你后数字要求不变你把后数字增值输入为0
3.前数字后加.你输入y软件会在前数字后加. 如你要前后数字不变输入增值可为0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二。若是技术要求,技术要求的序号后面必须加"."(大写字母状态下点),序号与技术要求在一起是一条文字,如“7.本件按................”,可以用如下一段代码。它可自动的去区分识别是否是技术要求并可自动去加点。
使用方法同上。
希望对您有所帮助。
本帖最后由 yinzhun22 于 2011-2-22 12:39 编辑
谢谢,各位帮忙,目前就要前面最简单的,能否帮忙加一个默认值1,省的每次都要输,如果有其他数字就再输入,不输入就默认1
其他的先下载,留以后需要再用…… (defun c:tt(/ ss add en txt enl num)
(while(not (setq add (getint "\n同一加减数值:<1>"))))
默认为1,接受输入其他值 本帖最后由 ZZXXQQ 于 2011-2-22 22:17 编辑
(defun c:tt(/ ss add en txt enl num)
(setq add (getint "\n同一加减数值:<1>"))
(setq add (if add add 1))
……
页:
[1]