明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2326|回复: 8

如何高亮显示polyline中鼠标选择的那一段?

[复制链接]
发表于 2010-9-21 11:39:00 | 显示全部楼层 |阅读模式
我遇到这样的问题,我们单位的图大多数都是PL线,我的程序计算的时候只能用直线,所以需要在选择的时候高亮显示鼠标选择的那一段,例如:有PL线:A-B-C-D-E-F,我的鼠标点在C-D上,那么C-D就要高亮显示出来,以方便用户判断选择的那段线对不对,请问高手这个怎么解决?
发表于 2010-9-21 16:04:00 | 显示全部楼层
简单啊,首先建数组存放多段线各个顶点,然后判断位于哪条线上,用addline绘制一条一般直线设置属性为Highlight,完成程序之后删掉那条加的线段就行
 楼主| 发表于 2010-9-21 16:32:00 | 显示全部楼层
chmenf087发表于2010-9-21 16:04:00简单啊,首先建数组存放多段线各个顶点,然后判断位于哪条线上,用addline绘制一条一般直线设置属性为Highlight,完成程序之后删掉那条加的线段就行

兄台所言极是,但我所烦恼的就是如何确定鼠标点在哪段线上,有没有比较好的方法?我个人的理解就是,计算鼠标光标P(X0,Y0)位置到每段线两端点的距离之和S1,S2,S3,S4……取S最小的那段为被选中的线段,但是这种方法始终觉得不严谨。还请兄台不吝赐教!

发表于 2010-9-21 17:08:00 | 显示全部楼层
从头开始每两个点+你点的那个点一算,三点一线数学不是有个公式么,如果公式等于零那么三点是共线的,再判断点选的点是不是位于那两个顶点之间,就用Xi≤x≤Xi+1||Xi≥x≥Xi+1判断,要是位于两共线顶点之间,OK了确定了定点
 楼主| 发表于 2010-9-21 17:49:00 | 显示全部楼层
兄台说的方法就是我上面说的那种方法,作为一款生产中使用的软件,首先,我不能强制要求用户非常精确的把鼠标点在线上面,只能取个阈值,即便精确的点在线上面了,按照CAD的精度取值等于0也是不科学的,所以我说是取最小值,而且因为用户较多,操作水平良莠不齐,选取的时候还可能有多种特殊情况出现,比如:选在端点上,或者PL线自身相交时出现的交点,这些都会造成误判。所以,我希望有更好更严谨的方法来提取选中的线段。兄台看有别的方法没呢,弟在线乞盼,呵呵!
发表于 2010-9-21 23:13:00 | 显示全部楼层
那你可以在点选的时候改修系统境变量开启最近点捕捉不就完了么,至于你说的精度本来浮点的数据就不可能完全相等你设定一个相对能接受的就好了啊
 楼主| 发表于 2010-9-27 15:41:00 | 显示全部楼层

就没有别的更好的方法了?

发表于 2012-3-15 10:25:42 | 显示全部楼层
可以用鼠标的坐标来计算你选的是哪一段线,然后再得到这段线...
发表于 2012-3-15 18:02:26 | 显示全部楼层
那只亮显某一段,怎么操作?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:23 , Processed in 0.190831 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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