明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8556|回复: 13

[讨论] 根据选择集对象的坐标排序选择集

[复制链接]
发表于 2013-10-18 01:13 | 显示全部楼层 |阅读模式
20明经币





根据选择集对象XY坐标排序,左右左优先,上下上优先。
A1 A2 A3 A4 A5 从左到右 ,所以排序是A1~5   A6在A5 下边 所以 A1~6  
A7最右边 所以 在最后。
要求代码是 ,根据对象坐标来排序。






-----------------------------

想要的结果是:



附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

http://bbs.mjtd.com/thread-107489-1-1.html (HH:ssPts:Sort (ssget) "xY" 0.01);1 小x表示从左到右,2 Y表示从上到下,3 xY表示先排序x坐标,然后排序y坐标
"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2013-10-18 01:13 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2013-10-19 09:13 编辑

http://bbs.mjtd.com/thread-107489-1-1.html
(HH:ssPts:Sort (ssget) "xY" 0.01);1 小x表示从左到右,2 Y表示从上到下,3 xY表示先排序x坐标,然后排序y坐标

点评

自贡兄V5  发表于 2013-10-19 14:04
回复

使用道具 举报

发表于 2013-10-18 09:00 | 显示全部楼层
本帖最后由 Andyhon 于 2013-10-18 09:31 编辑

For test only

  1. (defun x+y- (Lst3)
  2.    (vl-sort
  3.      (vl-sort
  4.        Lst3
  5.        (function (lambda (x y) (< (caaddr x) (caaddr y))))
  6.      )
  7.      (function (lambda (x y) (< (caadr x) (caadr y))))
  8.    )
  9. )

  10. (defun c:AA (/ ssLst)
  11.   (setq xza1 (ssget (list (cons 0 "TEXT,MTEXT"))))
  12.   (setq pt (getpoint "\n输出基点:"))
  13.   (setq len1 (sslength xza1)
  14.         i1   (1- (sslength xza1))
  15.   )
  16.   (repeat len1
  17.     (setq en1 (ssname xza1 i1)
  18.           dat (entget en1)
  19.         ssLst (cons (list (dxf 1 dat) (dxf 10 dat)) ssLst)
  20.            i1 (1- i1)
  21.     )
  22.   )
  23.   
  24.   (foreach txt (mapcar 'car (x+y- ssLst))
  25.     (entmake
  26.       (list
  27.         '(0 . "TEXT")
  28.         (cons 1 txt)
  29.         (cons 10 pt)
  30.         '(7 . "HZ")
  31.         '(62 . 110)
  32.         '(8 . "AA")
  33.         '(40 . 400.000)
  34.       )
  35.     )
  36.     (setq pt (list (car pt) (- (cadr pt) 500) (caddr pt)))
  37.   )
  38. )

点评

输出基点:; 错误: no function definition: DXF 不行噢  发表于 2013-10-18 20:32

评分

参与人数 1明经币 +1 金钱 +50 收起 理由
weiqi + 1 + 50 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2013-10-18 22:17 | 显示全部楼层
回复

使用道具 举报

发表于 2013-10-18 23:55 | 显示全部楼层
  1. (defun c:tt ()
  2.   (if (and (setq ss (ssget '((0 . "text"))))
  3.            (setq p1 (getpoint "\n基点<退出>: "))
  4.       )
  5.     (progn
  6.       (setq lst        (xyp-Sort ss 10 "Y-max")
  7.             lst        (xyp-Sort-Plist lst 5)
  8.             lst        (mapcar 'cdr lst)
  9.       )
  10.       (foreach s1 lst
  11.         (xyp-copymove s1 (xyp-9pt s1 5) p1)
  12.         (setq p1 (polar p1 (* pi 1.5) 600))
  13.       )
  14.     )
  15.   )
  16.   (princ)
  17. )
回复

使用道具 举报

发表于 2013-10-19 09:00 | 显示全部楼层
很好的帖子,顶一下!
回复

使用道具 举报

 楼主| 发表于 2013-10-19 14:46 | 显示全部楼层
自贡黄明儒 发表于 2013-10-18 01:13
http://bbs.mjtd.com/thread-107489-1-1.html
(HH:ssPts:Sort (ssget) "xY" 0.01);1 小x表示从左到右,2 Y ...


自贡兄~这样怎么排成 A1 ~A9呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2013-10-19 15:28 | 显示全部楼层
(HH:ssPts:Sort (ssget) "Yx" 0.01);大Y表示y坐标从大到小,Y在前表示优先
回复

使用道具 举报

 楼主| 发表于 2013-10-19 15:37 | 显示全部楼层
自贡黄明儒 发表于 2013-10-19 15:28
(HH:ssPts:Sort (ssget) "Yx" 0.01);大Y表示y坐标从大到小,Y在前表示优先



不行哦~~


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2013-10-19 15:43 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2013-10-19 15:47 编辑
weiqi 发表于 2013-10-19 15:37
不行哦~~


误差取大一些,满足你的需求
从你的截图来看,误差应为字高的1倍多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 19:01 , Processed in 2.709584 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表