669423907 发表于 2019-9-20 13:49:54

哪位大师帮弄一个咯

wyl219 发表于 2019-9-25 18:27:13

1.grread获取当前光标位置pt1
2.用polar向右延伸合适的长度获取第二个点pt2
3.根据pt1和pt2栏选找到所有多段线,排除pt1在外面或者不是矩形的对象.
4.根据pt1和矩形的中点排序,找到离的最近的矩形.
5.用redraw亮显对象.
我的思路是这样,不知道第二步有没有更好的解决方案

llsheng_73 发表于 2019-9-26 09:10:13

根据光标位置O计算上下左右四个无限远点p1,p2,p3,p4,   用这四个方向进行对0层4个点的多段线进行“F”选择,判断选中的多段线中矩形,排除O点在外的矩形,比较O离哪个矩形最近就亮显哪个矩形
不知道说清楚没有

wyl219 发表于 2019-9-26 11:42:58

4.根据pt1和矩形的中点排序,找到离的最近的矩形.
用矩形的中点(质点)判断不太合适,应该用pt1到矩形四个顶点的和排序比较合适.

669423907 发表于 2019-9-27 18:38:01

llsheng_73 发表于 2019-9-26 09:10
根据光标位置O计算上下左右四个无限远点p1,p2,p3,p4,   用这四个方向进行对0层4个点的多段线进行“F”选择 ...

大师说的没错

669423907 发表于 2019-9-27 18:39:43

wyl219 发表于 2019-9-26 11:42
4.根据pt1和矩形的中点排序,找到离的最近的矩形.
用矩形的中点(质点)判断不太合适,应该用pt1到矩形四个顶 ...

矩形中点不行,应该是点到矩形的边

wyl219 发表于 2019-9-29 08:02:55

669423907 发表于 2019-9-27 18:39
矩形中点不行,应该是点到矩形的边

到顶点不比到边容易点

wyl219 发表于 2019-9-29 08:05:33

llsheng_73 发表于 2019-9-26 09:10
根据光标位置O计算上下左右四个无限远点p1,p2,p3,p4,   用这四个方向进行对0层4个点的多段线进行“F”选择 ...

没必要上下左右,朝任一方向就可以了,因为点在矩形内,那么四个方向任一方向都能找到这个矩形.
不过可以向四个方向获取四个集合,然后取交集,其他的就是点不在矩形内的矩形

669423907 发表于 2019-9-29 08:36:06

wyl219 发表于 2019-9-29 08:02
到顶点不比到边容易点

图中例子,光标点到小矩形的中点与4个顶点都比大矩形的近,但是到边,则大矩形的近

wyl219 发表于 2019-9-29 19:54:59

669423907 发表于 2019-9-29 08:36
图中例子,光标点到小矩形的中点与4个顶点都比大矩形的近,但是到边,则大矩形的近

那是我理解错了,我以为这种情况下应该选中小的那个方块.
如果是这样,直接用vlax-curve-getClosestPointTo函数就可以了.
页: 1 [2] 3
查看完整版本: 如何自动选中并亮显包围光标点的矩形?