关于LISP选择集排序的求教!
本帖最后由 作者 于 2005-12-8 17:16:31 编辑 <br /><br /> <P>我有个LISP程序,请各位帮我看看</P><P>(defun c:writepolygon()<BR> (setvar "cmdecho" 0)<BR> (setq s (ssget '((0 . "text"))))<BR> (if (/= nil s)<BR> (progn<BR> (setq fname (getfiled "输出文件" "" "" 1))<BR> (if (/= nil fname)<BR> (progn<BR> (setq fp (open fname "w")<BR> sl (sslength s)<BR> i 0)<BR> (command "-boundary" "_a" "_o" "_p" "" "")<BR> (repeat sl<BR> (setq ename (ssname s i))<BR> (setq zb (car (fvertex ename)))<BR> (setq text (cdr (assoc 1 (entget ename))))<BR> (command "zoom" "_c" zb 3000)<BR> (command "-boundary" zb "")<BR> (setq lename (entlast))<BR> (setq zbb (fvertex lename))<BR> (write-line text fp)<BR> (setq ii 0)<BR> (repeat (length zbb)<BR> (setq nzb (nth ii zbb))<BR> (setq line (strcat (itoa ii) "," (rtos (nth 0 nzb) 2 3) "," (rtos (nth 1 nzb) 2 3)))<BR> (write-line line fp)<BR> (setq ii (+ ii 1))<BR> )<BR> (entdel lename)<BR> (setq i (+ i 1))<BR> )<BR> )<BR> )<BR> (close fp)<BR> (princ "\n******ok*******")<BR> )<BR> )<BR> (princ)<BR> )</P>
<P>实现的功能是在CAD图中框选文字,然后得到文字所在封闭多段线的坐标,但是每次输出的顺序不是按文字大小排序的,现在希望能够按大小顺序输出到文本文件里头,哪位大侠能帮帮忙啊!</P> 将(setq s (ssget '((0 . "text"))))改成(setq s "X" (ssget '((0 . "text"))))即可。 <P>不行啊.提示 错误: 语法错误</P>
<P>关键是排序,要能够对选择集的表排序,要根据多义线里的文本的大小排序.<BR></P> (setq s (ssget "X" '((0 . "TEXT")))) 这样只是将文字选出来了,并不能按大小进行排序,还要加些程序才行 <P>文字的大小?</P> 我自己已经用VBA实现了,但还是要谢谢大家.
页:
[1]