明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3796|回复: 10

[提问] 求一个判断图元重叠的代码

[复制链接]
发表于 2014-2-26 12:36:16 | 显示全部楼层 |阅读模式
我想通过框选一些图元 如果有重叠在一起的图元就将这些图元显示成红色 请问如何做到?
发表于 2014-2-26 13:57:03 | 显示全部楼层
计算每个图元的包围盒,然后逐个比较包围盒的坐标来判断!
发表于 2014-2-26 14:07:13 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2014-2-26 14:12 编辑

比较(entget e)可以发现,重叠的两个对象只有很少的不同。去除这个不同,判断:如果其余相同,则说明了是重叠的。
  1. ;;8 删除重叠多段线、线、弧、块、文字
  2.   (DEFUN HH:delBLOCKs (ss / E EN K LIST1 S9 XY)
  3.     (repeat (setq k (sslength ss))
  4.      ;; (spin "重叠对象")
  5.       (if (and (setq e (ssname ss (setq k (1- k))))
  6.          (setq en (entget e))
  7.     )
  8.   (progn
  9.     (setq xy (cdr en))
  10.     (IF (SETQ S9 (ASSOC 5 XY))
  11.       (SETQ XY (subst '(5 . "ASD") S9 XY))
  12.     )
  13.     (if (member xy list1)
  14.       (entdel e)
  15.       (setq list1 (cons xy list1))
  16.     )
  17.   )
  18.       )
  19.     )
  20.   )

评分

参与人数 1明经币 +1 收起 理由
llsheng_73 + 1 觉得这程序应该不限于重叠的多段线、线、弧.

查看全部评分

 楼主| 发表于 2014-2-26 15:30:07 | 显示全部楼层
Gu_xl 发表于 2014-2-26 13:57
计算每个图元的包围盒,然后逐个比较包围盒的坐标来判断!

谢谢点拨 才疏学浅 包围盒刚准备学
 楼主| 发表于 2014-2-26 15:32:26 | 显示全部楼层
自贡黄明儒 发表于 2014-2-26 14:07
比较(entget e)可以发现,重叠的两个对象只有很少的不同。去除这个不同,判断:如果其余相同,则说明了是重 ...

请问这个ASD是什么意思? cdr en得到的是什么?望解答 谢谢

点评

(SUBST '(5 . "ASD") S9 XY)估计是因为组码5它是每个图源都不相同,为了保证判断而替换成一样的吧  发表于 2014-3-1 22:27
ASD是程序作者的记号,是谁我不记得了。这个就好象孙悟空在五台撒了一泡尿一样,做个记号,我想是这样  发表于 2014-2-26 15:36
发表于 2014-2-26 16:05:03 | 显示全部楼层
cdr 就是去掉表中第一个元素,如果你不知道的话,用就可以了。
发表于 2014-3-1 22:23:26 | 显示全部楼层

(setq xy (cdr en))
    (IF (SETQ S9 (ASSOC 5 XY))
      (SETQ XY (subst '(5 . "ASD") S9 XY))
    )
没看懂上边这几句为什么不是下边这样
(setq xy(vl-remove(assoc 5 (cdr en))))
发表于 2014-3-1 22:29:48 | 显示全部楼层
Gu_xl 发表于 2014-2-26 13:57
计算每个图元的包围盒,然后逐个比较包围盒的坐标来判断!

包容盒相同能够断定图元位置相同么?感觉不太能确定,改天试试看。。
发表于 2014-3-1 22:39:45 来自手机 | 显示全部楼层
llsheng_73 发表于 2014-3-1 22:23
(setq xy (cdr en))
    (IF (SETQ S9 (ASSOC 5 XY))
      (SETQ XY (subst '(5 . "ASD") S9 XY))

一回事,杀猪杀屁股,各有各的刀路
发表于 2014-3-1 23:07:09 来自手机 | 显示全部楼层
重叠和完全重叠概念是有区别的,楼主是啥意思呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 08:35 , Processed in 0.176553 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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