Lisp用于查找和替换单词t
你好我在寻找一个在任何地方都找不到的Lisp程序。
1-我将选择的第一个文本,它将找到文本“XX”,并自动替换为数字“01”
2-我将选择第二个文本,它将找到文本“XX”,并自动替换为数字“02”
3-继续步骤1和2(编号“03”、“04”、“05”…)直到我停止Lisp程序
4-打开LISP时,我不必选择要替换的文本(始终是单词“XX”),也不必选择第一个数字(始终是数字“01”)
我希望你能理解我(我是法裔加拿大人)
谢谢!!! 我在考虑express工具中的Tcount命令^ 你好
感谢您的快速回复!
Tcount命令不会一次选择一个块,每次都必须配置设置。使用Tcount命令将每个设备编号更改为手动编号会更快。 Soan,这是我第二次不得不把你的问题转移到Autolisp部分。请在此处发布您的lisp问题:http://www.cadtutor.net/forum/forumdisplay.php?21-AutoLISP Visual LISP amp DCL 对不起,我在同一天发布了两个问题,这是我第一次在这个网站上。。。 这是一个简单的任务,但我现在没有时间拿起文本检查,如果“XX”存在使用wcmatch然后读取字符串到XX添加数字。
找到一些时间。
; replace XX with a number
; By Alan H jan 2016
(defun c:add01 ( / obj ans x newstr)
(setq x (getint "\nEnter start number press <Cr> to exit "))
(while (/= (setq obj (vlax-ename->vla-object(car (entsel "\nPick text")))) nil) ; no errork check for text
; if less than 10 01-09 10+
(if (< x 10.0)
(setq newstr (strcat "0" (rtos x 2 0)))
(setq newstr (rtos x 2 0))
)
(setq txtstr (vla-get-textstring obj)) ;return string val
(if (> (setq pos (vl-string-search "XX" (strcase txtstr))) 1) ; return the position of XX
(progn
(setq num (strlen txtstr)) ; how many caharcters is string re abcdexxhjkl problem
(setq ans (Strcat (substr txtstr 1 pos) newstr)) ; combine characters up to xx+01
)
)
(vla-put-textstring obj ans) ; update text
(setq x (+ x 1)) ; next number
)
(princ)
)
代码现在更新了,唯一的问题是如果你有abcdXX-52-b它会做abcd08等需要一个版本2,检查行尾字符,Soan如果需要有一个去代码就在那里。 非常感谢您的回复,为了回答您的问题,我需要版本2。非常感谢您的帮助 我们在这里帮助(strlen“abcdxx1234”)返回10,(substr txtstr 7 10)=“1234”
页:
[1]