申请编文字倒排列LISP程序
<p>比如CAD有文字:"明经社区"</p><p>如何通过LISP程序,实现"区社经明"这一功能?!!!</p><p>谢谢!</p> <p>(setq txt "123456789")<br/>(setq lis (vl-string->list txt))<br/>(setq tt (vl-list->string (reverse lis)))<br/></p><p>"987654321"</p><p>不能处理中文</p><p></p><p></p> <p>试试看</p><p> </p> <strong><font face="Verdana" color="#da2549">ZZXXQQ,加载后,怎么不能使用?</font></strong> <p>程序没有问题,你没有加参数吧</p><p>这个不是直接执行的程序,需要输入字符串参数,例如:</p><p>(reverch "代替")</p><p>转换为"替代"</p> <p>2楼那个的升级版</p><p>(defun c:zz(/ txt lis n lis_tmp)<br/> (setq txt "任意字符串")<br/> (setq lis (vl-string->list txt))<br/> (setq n 0)<br/> (setq lis_tmp '())<br/> (while (< n (length lis))<br/> (if (> (nth n lis) 128) ;任何字符ascii码超过128都是分两字节存放<br/> (setq lis_tmp (cons (list (nth n lis) (nth (setq n (1+ n)) lis)) lis_tmp))<br/> (setq lis_tmp (cons (list (nth n lis)) lis_tmp))<br/> )<br/> (setq n (1+ n))<br/> )<br/> (setq txt "")<br/> (foreach n lis_tmp<br/> (setq txt (strcat txt (vl-list->string n)))<br/> ) <br/>)</p> <p>不错的程序<br/>利害喔</p><p></p> 谢谢大家!!! 本帖最后由 作者 于 2007-7-7 19:24:13 编辑6楼的升级版!!谢谢各位了,我改了一下,可以直接对CAD中的单行或多行文字进行操作!
(defun c:rtt( / en_data lis lis_tmp n txt txt_list txt_list2)
(setq en_data (entget (car (entsel "select:"))))
(setq txt_list (assoc 1 en_data))
(setq txt (cdr txt_list))
(setq lis (vl-string->list txt))
(setq n 0)
(setq lis_tmp '())
(while (< n (length lis))
(if (> (nth n lis) 128) ;任何字符ascii码超过128都是分两字节存放
(setq lis_tmp (cons (list (nth n lis) (nth (setq n (1+ n)) lis)) lis_tmp))
(setq lis_tmp (cons (list (nth n lis)) lis_tmp))
)
(setq n (1+ n))
)
(setq txt "")
(foreach n lis_tmp
(setq txt (strcat txt (vl-list->string n)))
)
(setq txt_list2 (cons 1 txt))
(setq en_data (subst txt_list2 txt_list en_data))
(entmod en_data)
(prin1)
)
<p><strong><font face="Verdana" color="#da2549">ZZXXQQ老大的程序我没试</font></strong></p><p><strong><font face="Verdana" color="#da2549">不过看算法,他的比我的简单多了,我是受自己二楼程序的影响走弯路了</font></strong></p><p>建议楼主研究一下</p>
页:
[1]
2