明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 啵浪鼓

[讨论] 将矩形排序

  [复制链接]
发表于 2011-5-27 04:20:22 | 显示全部楼层
;;时间关系,只可用于个例

(defun C:TT (/ get-Polyline-Vertexs GET-PTS-BOX RecTang-P SS I EN BOX BOXS)
;;获取多段线顶点列表
(defun get-Polyline-Vertexs (E / I V LST)
  (setq I -1)
  (while (setq V (vlax-curve-getpointatparam E (setq I (1+ I))))
    (setq LST (cons V LST))
  )
)
;;获取点集范围 by 王咣生
(defun GET-PTS-BOX (PTL)
  (list        (apply 'mapcar (cons 'MIN PTL))
        (apply 'mapcar (cons 'MAX PTL))
  )
)
;;判断多段线是否是矩形,是则返回其范围(左下角点和右上角点)
(defun RecTang-P (EN / LST)
  (setq LST (get-Polyline-Vertexs EN))
  (if (apply '= (mapcar '(lambda (A B) (distance A B)) LST (cddr LST)))
    (GET-PTS-BOX LST)
  )
)
;;求中点
(defun midpoint (p1 p2) (mapcar '(lambda (x y) (/ (+ x y) 2.0)) p1 p2))
(if (setq SS (ssget '((0 . "*POLYLINE"))))
  (progn
    (repeat (setq I (sslength SS))
      (setq EN   (ssname SS (setq I (1- I))))
               ;;排除非矩形对象
      (if (and (setq BOX (RecTang-P EN))
               ;;如该矩形中不包含对象则被忽略
               (> (sslength (apply 'ssget (cons "W" BOX))) 1)
          )
        (setq BOXS (cons BOX BOXS))
      )
    )
    (foreach X BOXS (grvecs (cons 1 X)))
    (setq LST (mapcar '(lambda (X) (apply 'midpoint X)) BOXS)
         LST (vl-sort LST '(lambda (X Y) (< (car X) (car Y)))
    ))
    (setq I 0)
    (repeat (/ (length LST) 2)
      (foreach X
       (vl-sort (list (nth I LST) (nth (1+ I) LST))
                '(lambda (X Y) (< (cadr X) (cadr Y)))
       )
       (entmake (list '(0 . "text")
               (cons 10 X)
               '(40 . 20)
               (cons 1 (itoa (setq I (1+ I))))
               )
       )
     )
   )
)))
 楼主| 发表于 2011-5-28 01:34:45 | 显示全部楼层
回复 caoyin 的帖子

C版太强了,就是这种效果了,厉害,膜拜啊!
发表于 2011-5-31 14:08:14 | 显示全部楼层
回复 caoyin 的帖子

这个程序对于我来说也很实用.谢谢.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-10 10:28 , Processed in 0.207744 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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