找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 767|回复: 5

[求助] [求助]:请问选择一组文字,怎样按Y坐标排序?

[复制链接]
发表于 2004-2-14 14:11:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
如题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-2-14 15:49:28 | 显示全部楼层
按坐标排序本版已经讨论很多,你可以搜索一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-14 15:52:46 | 显示全部楼层
用文字大师试试,这个程序论坛上有。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2004-2-18 22:30:38 | 显示全部楼层
下面是我以前写的一个程序,功能是将”DATA“层的文字取出,并按照先X轴坐标,后Y轴坐标的顺序排序,再写入文件中。你可以看看我的程序,应该会有所帮助。

  1.   [FONT=courier new]
  2. (defun c:getdata ()
  3.   (command "ucs" "w")
  4.   (setq ss (ssget "x" '((8 . "data"))))
  5.   (setq l (sslength ss))
  6.   (setq datalist nil)
  7.   (setq i 0)
  8.   (while (< i l)
  9.     (setq entdata (entget (ssname ss i)))
  10.     (setq entlist (append (cdr (assoc '10 entdata))
  11.                           (list (cdr (assoc '1 entdata)))
  12.                   )
  13.     )
  14.     (setq datalist (append datalist (list entlist)))
  15.     (setq i (1+ i))
  16.   )
  17.   (setq l (length datalist))
  18.   (setq i 1)
  19.   (while (< i l)
  20.     (setq j i)
  21.     (while (< j l)
  22.       (setq y1 (cadr (nth (1- i) datalist)))
  23.       (setq y2 (cadr (nth j datalist)))
  24.       (if (and (< y1 y2) (> (abs (- y2 y1)) 1))
  25.         (progn
  26.           (setq m 0)
  27.           (setq datalist2 nil)
  28.           (while (< m l)
  29.             (if        (= m (1- i))
  30.               (setq
  31.                 datalist2 (append datalist2 (list (nth j datalist)))
  32.               )
  33.               (progn
  34.                 (if (= m j)
  35.                   (setq        datalist2 (append datalist2
  36.                                           (list (nth (1- i) datalist))
  37.                                   )
  38.                   )
  39.                   (setq        datalist2
  40.                          (append datalist2 (list (nth m datalist)))
  41.                   )
  42.                 )
  43.               )
  44.             )
  45.             (setq m (1+ m))
  46.           )
  47.           (setq datalist datalist2)
  48.         )
  49.         (progn
  50.           (setq x1 (car (nth (1- i) datalist)))
  51.           (setq x2 (car (nth j datalist)))
  52.           (if
  53.             (and (< x2 x1) (> (abs (- x1 x2)) 2) (< (abs (- y2 y1)) 1))
  54.              (progn
  55.                (setq m 0)
  56.                (setq datalist2 nil)
  57.                (while (< m l)
  58.                  (if (= m (1- i))
  59.                    (setq datalist2
  60.                           (append datalist2 (list (nth j datalist)))
  61.                    )
  62.                    (progn
  63.                      (if (= m j)
  64.                        (setq
  65.                          datalist2 (append datalist2
  66.                                            (list (nth (1- i) datalist))
  67.                                    )
  68.                        )
  69.                        (setq datalist2 (append datalist2
  70.                                                (list (nth m datalist))
  71.                                        )
  72.                        )
  73.                      )
  74.                    )
  75.                  )
  76.                  (setq m (1+ m))
  77.                )
  78.                (setq datalist datalist2)
  79.              )
  80.           )
  81.         )
  82.       )
  83.       (setq j (1+ j))
  84.     )
  85.     (setq i (1+ i))
  86.   )
  87.   (setq fn (open (strcat (getvar "dwgprefix") "gtdata.txt") "r"))
  88.   (if fn
  89.     (progn
  90.       (close fn)
  91.       (setq fn (open (strcat (getvar "dwgprefix") "gtdata.txt") "a"))
  92.     )
  93.     (setq fn (open (strcat (getvar "dwgprefix") "gtdata.txt") "w"))
  94.   )
  95.   (setq i 0)
  96.   (while (< i l)
  97.     (setq one "")
  98.     (setq str (cadddr (nth i datalist)))
  99.     (if        (= i 0)
  100.       (progn
  101.         (setq strl (strlen str))
  102.         (setq j 1)
  103.         (while (<= j strl)
  104.           (if (or (= ":" (substr str j 1)) (= "-" (substr str j 1)))
  105.             (setq one (strcat one "",""))
  106.             (setq one (strcat one (substr str j 1)))
  107.           )
  108.           (setq j (1+ j))
  109.         )
  110.         (setq str one)
  111.       )
  112.       (progn
  113.         (setq strl (strlen str))
  114.         (setq j 1)
  115.         (while (<= j strl)
  116.           (if (= "%%D" (substr str j 3))
  117.             (progn
  118.               (setq one (strcat one "°"))
  119.               (setq j (1+ strl))
  120.             )
  121.             (setq one (strcat one (substr str j 1)))
  122.           )
  123.           (setq j (1+ j))
  124.         )
  125.         (setq str one)
  126.       )
  127.     )
  128.     (princ (strcat """ str """) fn)
  129.     (if (< i (1- l)) (princ "," fn))
  130.     (setq i (1+ i))
  131.   )
  132.   (princ "\n" fn)
  133.   (close fn)
  134.   (prompt "\n该图中的高低腿配置数据已写入文件gtdata.txt中!")
  135.   (princ)
  136. )
  137.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-19 09:12:11 | 显示全部楼层
取出程序要求的点(dxf或包围盒的特征点)
然后用 (vl-sort ptlst '(lambda (x y) (<(cadr x)(cadr y))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-5 08:57:32 | 显示全部楼层

Re: [求助]:请问选择一组文字,怎样按Y坐标排序?

最初由 yinzhenyu 发布
[B]如题 [/B]


请参考: for X坐标的.
(defun c:test ()
  (vl-load-com)
  (initget "Left Middle Right")
  (setq kw (getkword "\nAlgnment Style[Left/Middle/Right]:"))
  (setq ent0 (car (entsel "\nSelect Source Text:")))
  (pttext ent0)
  (setq pl pt1 pr pt2)
  (prompt "\Select Alignment Text:")
  (setq ss (ssget) n 0)
  (while (< n (sslength ss))
    (setq obj (vlax-ename->vla-object (ssname ss n)))
    (pttext (ssname ss n))
    (cond
      ((= kw "Left")
        (vla-put-alignment obj 6)
        (vla-put-TextAlignmentPoint obj (vlax-3d-point (list (car pl)(cadr pt2)))))
      ((= kw "Middle")
        (vla-put-alignment obj 10)
        (setq dx (/ (- (car pr)(car pl)) 2))
        (vla-put-TextAlignmentPoint obj (vlax-3d-point (list (+ (car pl) dx)(cadr pt2)))))
      ((= kw "Right")
        (vla-put-alignment obj 8)
        (vla-put-TextAlignmentPoint obj (vlax-3d-point (list (car pr)(cadr pt2)))))
    );c
    (setq n (1+ n))
  )
)
;
(defun pttext (ent)
  (setq obj (vlax-ename->vla-object ent))
  (vla-getboundingbox obj 'pt1 'pt2)
  (setq pt1 (vlax-safearray->list pt1)
        pt2 (vlax-safearray->list pt2))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 00:18 , Processed in 0.281927 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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