![]() |
求助一个lisp代码要求替换文字
求助一个lisp代码要求替换文字
www.dimcax.com 求助一个lisp代码要求替换文字 例将选取的内容的文字进行替换要求如下 将“我们”换为“大家” 各位大侠,给我写下一个,十分感谢 cad本身不就有此功能吗 例如我说从cad中选取已经选取了文字“我们” 我想替代为“大家” (defun c:ss() (setq ss (ssadd)) (setq ss(ssget)) (setq aa (ssname ss 0)) (setq str (entget aa)) (setq bb (cdr(assoc 1 str))) (setq old "我们") (setq new "大家") (subst new old bb) (princ bb) ) 请问一下我们上述中代码为什么不能完成替换文字的动作, 请高手给予指点 非常感谢 修改了一下,楼主请试一下 (defun c:ss () (setq ss (ssget)) (setq aa (ssname ss 0)) (setq str (entget aa)) (setq bb (assoc 1 str)) (setq new (cons 1 "大家")) (setq entn (subst new bb str)) (entmod entn) (princ) ) 如果要改其他的文字,只要设置个变量(setq text (getstring"请输入要改为的文字:")代替“大家"即可 如果想要选已存在的文字也行,程序稍作改动(用entsel) 哈哈,就是想要这个,谢谢咯 我看了上面的程序,它只能替换,它在一组字中去替换,提供下面的程序,它能达到上面的两个目标. (defun c:ss () (setq aa1 "大家") (setq ss (ssget) n (sslength ss) i 0) (repeat n (setq aa (ssname ss i) i (+ i 1)) (setq en (entget aa) txt (cdr (assoc 1 en)) ) (setq l (strlen txt) ii 1) (while l ; (setq txtt (substr txt ii 4)) (prompt txtt)(terpri) (if (= txtt "我们") (progn (setq l nil b (substr txt 1 (- ii 1)) b (strcat b aa1) b1 (substr txt (+ ii 4)) b (strcat b b1)) (setq en (subst (cons 1 b)(assoc 1 en) en)) (entmod en) ) (progn (setq ii (+ ii 1)) (if (= ii (- l 3))(setq l nil)) )) ) ) ) gbg |
所有的时间均为北京时间。 现在的时间是 01:01 AM. |