soan 发表于 2022-7-5 18:06:51

Lisp用于查找和替换单词t

你好
 
我在寻找一个在任何地方都找不到的Lisp程序。
 
1-我将选择的第一个文本,它将找到文本“XX”,并自动替换为数字“01”
 
2-我将选择第二个文本,它将找到文本“XX”,并自动替换为数字“02”
 
3-继续步骤1和2(编号“03”、“04”、“05”…)直到我停止Lisp程序
 
4-打开LISP时,我不必选择要替换的文本(始终是单词“XX”),也不必选择第一个数字(始终是数字“01”)
 
我希望你能理解我(我是法裔加拿大人)
谢谢!!!

ketxu 发表于 2022-7-5 18:15:11

我在考虑express工具中的Tcount命令^

soan 发表于 2022-7-5 18:21:54

你好
 
感谢您的快速回复!
 
Tcount命令不会一次选择一个块,每次都必须配置设置。使用Tcount命令将每个设备编号更改为手动编号会更快。

Cad64 发表于 2022-7-5 18:33:41

Soan,这是我第二次不得不把你的问题转移到Autolisp部分。请在此处发布您的lisp问题:http://www.cadtutor.net/forum/forumdisplay.php?21-AutoLISP Visual LISP amp DCL

soan 发表于 2022-7-5 18:38:47

对不起,我在同一天发布了两个问题,这是我第一次在这个网站上。。。

BIGAL 发表于 2022-7-5 18:47:43

这是一个简单的任务,但我现在没有时间拿起文本检查,如果“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)
)

BIGAL 发表于 2022-7-5 18:53:34

代码现在更新了,唯一的问题是如果你有abcdXX-52-b它会做abcd08等需要一个版本2,检查行尾字符,Soan如果需要有一个去代码就在那里。

soan 发表于 2022-7-5 19:04:49

非常感谢您的回复,为了回答您的问题,我需要版本2。非常感谢您的帮助

BIGAL 发表于 2022-7-5 19:10:29

我们在这里帮助(strlen“abcdxx1234”)返回10,(substr txtstr 7 10)=“1234”
页: [1]
查看完整版本: Lisp用于查找和替换单词t