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函数就可以了.