判断点在一个矩形形 是容易的。 如图图框是一个图块,那么就获得它的最大点,最小点,从而获得它的矩形,如 ...
没有理解你说的,如果能够获取到图框的最大点最小点,那不是先要选中图框?如果都选中了,那就不需要去通过点查找了。 xyp1964 发表于 2024-3-5 13:38
;; 大概的意思
先谢过,不过你好像理解错我的的意思了,你的操作正是我想避免的。我是通过一点选中其中的一个图框,其他的不能被选进来 本帖最后由 你有种再说一遍 于 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算你一万张图?那也飞一般速度...不需要做什么四叉树降低复杂度了.
liuhe 发表于 2024-3-5 09:38
一般是范围屏幕当前显示尺寸
有一种可能 他放大屏幕 导致 图框在屏幕外 需要zoom s1os5210 发表于 2024-3-5 18:10
果然牛,思路非常棒。但是会有小问题,如果两个图框离的非常近,第2点的距离就很难把握,会出现误选。总 ...
两点是水平或对角的两点 用来搜索 还有一个计算点击点是否在块的包围盒内 防止误选 逐渐扩大范围并zoom 为处理图框不在屏幕内的情况 如图框必然在屏幕内就直接用屏幕对角点即可 飞雪神光 发表于 2024-3-5 19:21
两点是水平或对角的两点 用来搜索 还有一个计算点击点是否在块的包围盒内 防止误选 逐渐扩大范围并zoom...
感谢,不过zoom会有卡顿。十分不舒服。现在的解决办法是设置SELECTIONOFFSCREEN变量。缺点是低版本不支持。现在的解决办法是先判断版本,低于2018设置zoom,高版本用SELECTIONOFFSCREEN变量 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=186350&highlight=%C6%C1%C4%BB%CD%E2
可以参考一下这个 我用了 频率大的时候 感觉卡顿
试试 ssnamex
还是7楼highflybird大师说得对
1 第一步,图框块(setq ss "X" '((0 . "insert")(2 . "GB_L,GB_H,tk_,tk_h"))))
2 第二步,图框块包围盒
3 第三步,判断P在哪个包围盒中
页:
1
[2]