rln007 发表于 2009-11-25 15:57:00

排序

<font color="#006600">求助:按s形顺序提取点坐标程序,如图</font>

rln007 发表于 2009-11-25 18:10:00

有高手出来帮助下

xianaihua 发表于 2009-11-25 18:49:00

不知你要在保存之前排序,还是在保存后重新排列?

rln007 发表于 2009-11-25 20:17:00

保存之前排序,先排序,再写入文件

rln007 发表于 2009-11-25 21:56:00

顶一下

xianaihua 发表于 2009-11-25 23:04:00

本帖最后由 作者 于 2009-11-26 0:40:19 编辑

以下程序是对含整数子列表的列表的排序(按照子列表第一单元从小到大),具体到你的程序中可做些修改
(defun vl-sort-list (lst / index_lst e1 e2 lst1)
(setq index_lst (vl-sort-i lst
      (function (lambda (e1 e2)
      (< (car e1) (car e2))
         )
      )
    )
)
(setq lst1 '())
(foreach item index_lst
    (setq lst1 (cons (nth item lst) lst1))
)
(reverse lst1)
)
(setq lst (vl-sort-list'((1 3 2 3) (3 2 3 5) (2 1 2 3))))

luyu9635 发表于 2009-11-26 00:32:00

<p>请教<strong><font face="Verdana" color="#61b713">xianaihua,也是排序问题, 见附件图,左边的图,想变成右边的效果,谢谢</font></strong></p><p>&nbsp;</p>

xianaihua 发表于 2009-11-26 00:37:00

<strong><font face="Verdana" color="#61b713">luyu9635:不明白你的意思。是标号排序还是,图形变换?</font></strong>

rln007 发表于 2009-11-26 09:21:00

<p>此排序不是单纯x或y排序,有些类似最短路径,由起点找下一点</p>

liu_kunlun 发表于 2009-11-26 11:19:00

<p>为007编一个</p><p>(defun c:ttt ( / ss pt ss1 out n fid x y h)<br/>(if (and (setq ss (ssget '((0 . "CIRCLE"))))<br/>&nbsp; (setq pt (getpoint "起点:"))<br/>&nbsp; (setq h (getdist pt "文字高度:"))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ss1 nil out nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n -1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength ss) (setq ss1 (cons (ssname ss (setq n (+ n 1)) ) ss1)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ss1 (mapcar '(lambda (x) (cdr (assoc 10 (entget x)))) ss1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq out (list (cons 0 pt)) n 0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while ss1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ss1 (vl-sort ss1 '(lambda (x y) (&lt; (distance (cdr (car out)) (list (car x)(cadr x) 0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (distance (cdr (car out)) (list (car y)(cadr y) 0)))))<br/>&nbsp;&nbsp;out (cons (cons (setq n (+ n 1)) (car ss1)) out)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ss1 (cdr ss1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq out (cdr (reverse out)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq fid (open "c:\\test.txt" "w"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (foreach x out<br/>&nbsp;&nbsp; (entmake (list '(0 . "TEXT") (cons 10 (cdr x)) (cons 1 (itoa (car x))) (cons 40 h)))<br/>&nbsp;&nbsp; (write-line (strcat (itoa (car x)) "," (rtos (cadr x) 2 3) "," (rtos (caddr x) 2 3)&nbsp; "," (rtos (cadddr x) 2 3)) fid)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (close fid)<br/>)&nbsp; )<br/>)</p>
页: [1] 2 3
查看完整版本: 排序