jiang82040 发表于 2005-1-13 11:07:00

[LISP]编了两个小程序,但不现想,有需要的来下,请各位指教一下!

这两天糊乱编了两个小程序,文本内加特殊符号的程序对于MTEXT不起作用,小弟我经验有限,请各位前辈帮忙看一下,另一个,读入文本的程序,因在字符串连接时出错,所以运行不了,有心的朋友帮忙修改一下,谢谢!


(源程序代码无限制共享)


程序1


;;;数字前加特殊符号程序<BR>;;;程序清单如下<BR>(defun c:tsfh( / p p1 p2 k k1 k2 ss1 index num name ent oldlist newlist<BR>                                               gs strs str1 str2 str3 conlist cmd)<BR>       (setvar "cmdecho" 0)<BR>       (setq p 1)<BR>       (setq p1 3)<BR>       (setq p2 4)<BR>                                       <BR>       (princ "\n选择要编辑的数字:")<BR>       (setq ss1 (ssget (list (cons 0 "text"))))<BR>       (setq index 0)<BR>       (setq num (sslength ss1))<BR>       <BR>       (repeat num<BR>                       (setq name(ssname ss1 index))<BR>                       (setq ent(entget name))<BR>                       (setq oldlist(assoc 1 ent))<BR>                       (setq str (cdr oldlist))<BR>                       (setq gs (strlen str)) ;;;求出字符串长度<BR>                       (setq k(- gs p2))<BR>                       (setq k1(- gs p1))<BR>                       (setq k2(- gs p))<BR>                                               <BR>                       (setq str1(substr str 1 k));;;划分出度的位数及字符串<BR>                       (setq str2(substr str k1 2));;;划分出分的位数及字符串<BR>                       (setq str3(substr str k2 2)) ;;;划分出秒的位数及字符串


                       (setq strs (strcat "α=" str1 "°" str2 "′" str3 "″"))<BR>                       ;;;连接字符串<BR>                       (setq conlist (cons (car oldlist) strs)) ;;;新建元素表<BR>                       (setq newlist (subst conlist oldlist ent));;;替换文本内容<BR>                       (entmod newlist);;;刷新<BR>                       (setq index(1+ index))<BR>               )<BR>       (setvar "cmdecho" 1)<BR>       (princ)<BR>       )<BR>       



程序2


;;;请入文本内容程序<BR>(defun c:readtxt (/ oldcmd oldblip oldsnap fle f str strs) <BR>       (setq oldcmd (getvar "cmdecho")) <BR>       (setvar "cmdecho" 0) <BR>       (setq oldblip (getvar "blipmode")) <BR>       (setvar "blipmode" 0) <BR>       (setq oldsnap (getvar "osmode")) <BR>       (setvar "osmode" 0)<BR>       <BR>       (setq fle (findfile "txt1.txt")) <BR>       (if (not fle) <BR>                       (setq fle (getfiled "请选择要读入的文件" "txt1" "txt;dat;*" 0)) <BR>       ) <BR>       (if fle <BR>                       (progn <BR>                                       (setq f (open fle "r"))<BR>                                       (setq strs "")<BR>                                       (while (setq str(read-line f))<BR>                                       (setq str(read str))<BR>                                       (setq strs (strcat strs str))<BR>                                       );;;while<BR>        );;;progn<BR>                       (princ "\n未选择数据文件,退出") <BR>       );;;end if<BR>       (command "Mtext" pause pause 0 strs)<BR>       (setvar "cmdecho" oldcmd) <BR>       (setvar "blipmode" oldblip) <BR>       (setvar "osmode" oldsnap) <BR>       (princ) <BR>)

f5612140 发表于 2005-1-13 11:40:00

1.(setq ss1 (ssget (list (cons 0 "text"))))--&gt;(setq ss1 (ssget '((0 . "*TEXT"))))


2. (while (setq str(read-line f))<BR>                        ;               (setq str(read str))       去掉<BR>                                       (setq strs (strcat strs str))


                               (close fle);有open-&gt;有close

jiang82040 发表于 2005-1-17 11:05:00

谢谢了!明白!
页: [1]
查看完整版本: [LISP]编了两个小程序,但不现想,有需要的来下,请各位指教一下!