明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: s1os5210

[提问] 通过一点寻找被包围的块

[复制链接]
 楼主| 发表于 2024-3-5 18:17:23 | 显示全部楼层
highflybird 发表于 2024-3-5 12:30
判断点在一个矩形形 是容易的。 如图图框是一个图块,那么就获得它的最大点,最小点,从而获得它的矩形,如 ...

没有理解你说的,如果能够获取到图框的最大点最小点,那不是先要选中图框?如果都选中了,那就不需要去通过点查找了。
 楼主| 发表于 2024-3-5 18:19:28 | 显示全部楼层

先谢过,不过你好像理解错我的的意思了,你的操作正是我想避免的。我是通过一点选中其中的一个图框,其他的不能被选进来
发表于 2024-3-5 18:29:55 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-3-5 18:48 编辑

想通过一点选中图框?就算暴力算法也没多慢吧.
遍历全部图框块,获取包围盒,点在包围盒内.
包围盒就是矩形,所以特别快.
if(rect.Min.X<pt.X && pt.X<rect.Max.X
    && rect.Min.Y<pt.Y && pt.Y<rect.Max.Y)
这样速度已经非常块了,一个dwg算你一万张图?那也飞一般速度...不需要做什么四叉树降低复杂度了.
发表于 2024-3-5 19:09:05 | 显示全部楼层
liuhe 发表于 2024-3-5 09:38
一般是范围屏幕当前显示尺寸

有一种可能 他放大屏幕 导致 图框在屏幕外 需要zoom
发表于 2024-3-5 19:21:09 | 显示全部楼层
s1os5210 发表于 2024-3-5 18:10
果然牛,思路非常棒。但是会有小问题,如果两个图框离的非常近,第2点的距离就很难把握,会出现误选。总 ...

两点是水平或对角的两点 用来搜索 还有一个计算点击点是否在块的包围盒内 防止误选 逐渐扩大范围并zoom 为处理图框不在屏幕内的情况 如图框必然在屏幕内就直接用屏幕对角点即可
 楼主| 发表于 2024-3-5 20:48:14 | 显示全部楼层
飞雪神光 发表于 2024-3-5 19:21
两点是水平或对角的两点 用来搜索 还有一个计算点击点是否在块的包围盒内 防止误选 逐渐扩大范围并zoom  ...

感谢,不过zoom会有卡顿。十分不舒服。现在的解决办法是设置SELECTIONOFFSCREEN变量。缺点是低版本不支持。现在的解决办法是先判断版本,低于2018设置zoom,高版本用SELECTIONOFFSCREEN变量
发表于 2024-3-5 22:23:20 | 显示全部楼层
http://bbs.mjtd.com/forum.php?mo ... =%C6%C1%C4%BB%CD%E2
可以参考一下这个 我用了 频率大的时候 感觉卡顿
发表于 2024-3-5 23:13:35 | 显示全部楼层


试试 ssnamex

本帖子中包含更多资源

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

x
发表于 2024-3-6 07:12:38 | 显示全部楼层
还是7楼highflybird大师说得对
1 第一步,图框块(setq ss "X" '((0 . "insert")(2 . "GB_L,GB_H,tk_,tk_h"))))
2 第二步,图框块包围盒
3 第三步,判断P在哪个包围盒中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 00:29 , Processed in 0.144493 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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