jsnjwang 发表于 2005-12-6 13:21:00

关于LISP选择集排序的求教!

本帖最后由 作者 于 2005-12-8 17:16:31 编辑 <br /><br /> <P>我有个LISP程序,请各位帮我看看</P>
<P>(defun c:writepolygon()<BR>&nbsp; (setvar "cmdecho" 0)<BR>&nbsp; (setq s (ssget '((0 . "text"))))<BR>&nbsp; (if (/= nil s)<BR>&nbsp;&nbsp;&nbsp; (progn<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq fname (getfiled "输出文件" "" "" 1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (/= nil fname)<BR>&nbsp;(progn<BR>&nbsp;(setq fp (open fname "w")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl (sslength s)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i 0)<BR>&nbsp;(command "-boundary" "_a" "_o" "_p" "" "")<BR>&nbsp;(repeat sl<BR>&nbsp;&nbsp; (setq ename (ssname s i))<BR>&nbsp;&nbsp; (setq zb (car (fvertex ename)))<BR>&nbsp;&nbsp; (setq text (cdr (assoc 1 (entget ename))))<BR>&nbsp;&nbsp; (command "zoom" "_c" zb 3000)<BR>&nbsp;&nbsp; (command "-boundary" zb "")<BR>&nbsp;&nbsp; (setq lename (entlast))<BR>&nbsp;&nbsp; (setq zbb (fvertex lename))<BR>&nbsp;&nbsp; (write-line text fp)<BR>&nbsp;&nbsp; (setq ii 0)<BR>&nbsp;&nbsp; (repeat (length zbb)<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq nzb (nth ii zbb))<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq line (strcat (itoa ii) "," (rtos (nth 0 nzb) 2 3) "," (rtos (nth 1 nzb) 2 3)))<BR>&nbsp;&nbsp;&nbsp;&nbsp; (write-line line fp)<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq ii (+ ii 1))<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp; (entdel lename)<BR>&nbsp;&nbsp; (setq i (+ i 1))<BR>&nbsp;&nbsp; )<BR>&nbsp;)<BR>&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (close fp)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n******ok*******")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; (princ)<BR>&nbsp; )</P>
<P>实现的功能是在CAD图中框选文字,然后得到文字所在封闭多段线的坐标,但是每次输出的顺序不是按文字大小排序的,现在希望能够按大小顺序输出到文本文件里头,哪位大侠能帮帮忙啊!</P>

ZZXXQQ 发表于 2005-12-6 22:57:00

将(setq s (ssget '((0 . "text"))))改成(setq s "X" (ssget '((0 . "text"))))即可。

jsnjwang 发表于 2005-12-8 17:11:00

<P>不行啊.提示&nbsp;&nbsp; &nbsp;错误: 语法错误</P>
<P>关键是排序,要能够对选择集的表排序,要根据多义线里的文本的大小排序.<BR></P>

xyp1964 发表于 2005-12-8 19:52:00

(setq s (ssget "X" '((0 . "TEXT"))))

北斗七星 发表于 2005-12-9 13:22:00

这样只是将文字选出来了,并不能按大小进行排序,还要加些程序才行

狂刀无痕 发表于 2005-12-9 21:13:00

<P>文字的大小?</P>

jsnjwang 发表于 2005-12-16 15:13:00

我自己已经用VBA实现了,但还是要谢谢大家.
页: [1]
查看完整版本: 关于LISP选择集排序的求教!