[求助]如何简化LISP的“回车”操作?
<div style="FONT-SIZE: 14px;">如何简化LISP的“回车”操作?<br/>如附件所示意的LISP是网上找的,是用来改变文字的图层的。<br/>但是每次使用的时候,选取源文字,再选取目标文字后,目标文字不能马上改变图层,必须等再按一次回车或者空格才能完成。<br/>请问,应该如何做,才能简化操作,取消这个”回车“的步骤?<br/><br/><br/>(defun c:tll (/ key ent1 el en n ss th val vt) <br/> (setq val 8);设置为图层匹配<br/> (prompt "\n当前匹配设置: 文字图层")<br/> (while (/= "TEXT" (cdr (assoc 0 en)))<br/> (initget "Set")<br/> (setq ent1 (entsel "\n选择源文字对象 :"))<br/> (if (= 'STR (type ent1))<br/> (progn <br/> (initget " L ")<br/> (setq key (getkword)) <br/> (cond<br/> ((= key "L") (setq val 8 vt "文字图层"))<br/> (t (setq val 1 vt "文字内容"))<br/> );;;end cond<br/> ;;;(setq ent1 nil)<br/> (prompt (strcat "\n当前匹配设置: " vt))<br/> );;;end progn<br/> (if ent1 (setq en (entget (car ent1))))<br/> );;;end if<br/> );;;end while<br/> ;;;(setq en (entget ent1))<br/> (setq th (cdr (assoc val en)))<br/> (prompt "\n点取要修改的文字:")<br/> (setq ss (ssget '((0 . "TEXT"))))<br/> (if ss<br/> (progn<br/> (setq n 0)<br/> (command "undo" "group")<br/> (while (< n (sslength ss))<br/> (setq el (entget (ssname ss n)))<br/> (entmod<br/> (subst<br/> (cons (car (assoc val el)) th)<br/> (assoc val el)<br/> el<br/> )<br/> )<br/> (setq n (1+ n))<br/> );;;end while<br/> (command "undo" "end")<br/> (prompt "\n匹配成功!(CS制作)")<br/> (princ)<br/> );;;end progn<br/> (progn<br/> (prompt "\n没有选到任何文本,退出!")<br/> (princ)<br/> )<br/> );;;end if<br/>)</div> <p>把<br/>(setq ss (ssget '((0 . "TEXT"))))<br/>改成<br/>(setq ss (ssget ":S" '((0 . "TEXT"))))</p><p></p> sailorcwx发表于2008-7-8 19:33:00static/image/common/back.gif把(setq ss (ssget '((0 . \"TEXT\"))))改成(setq ss (ssget \":S\" '((0 . \"TEXT\"))))<p></p><p><strong><font face="Verdana" color="#61b713">sailorcwx</font></strong><strong><font face="Verdana" color="#61b713">兄的修改,是使得每次选取源文字后,只能匹配一个文字图层,我是希望能够想MASSPROP命令一样,可以连续匹配特性。</font></strong></p><p><strong><font face="Verdana" color="#61b713">也就是说,运行一次命令,可以连续匹配多个文字,而选择每个文字的过程中,都无需按回车</font></strong></p> <p>那你加一个循环咯</p>
页:
[1]