找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2040|回复: 19

[求助]:怎么样让光标只沿固定轨迹移动?

[复制链接]
发表于 2007-3-18 19:54:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
怎么样实现无论怎么样移动鼠标,而光标却只在固定的曲线轨迹上移动(这个曲线是由我自己的函数式计算出来的)?? 只是曲线的长短随着鼠标的移动而变化???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-18 20:03:02 | 显示全部楼层
这个从理论上讲是可以做到的
加载一个HOOK拦截鼠标的移动消息,然后计算当前鼠标到你的轨迹线的最近点,
最后强制用一个API设置鼠标到那个最近点就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-18 20:18:41 | 显示全部楼层
难道没有人做过这种效果吗? 就像CAD里面先画一个圆 再点击绘制直线,在鼠标没有落下之前,当光标接近圆弧时,圆弧上会有一个红色的漏斗标记,我要的就是这个效果
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-19 17:00:22 | 显示全部楼层
我觉得你想实现的并不是光标轨迹的锁定,而是根据光标位置获取希望得到的点的位置,比如某实体的最近点,然后在该点处做一个标记,比如漏斗

这种操作并不需要控制光标的实际位置,只需要 jig 中 acquirepoint 后对获取的点进行分析并绘制标记即可。

To RedCAD:
呵呵,好久不见了,打算重回组织:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-19 21:50:09 | 显示全部楼层
是啊,我说估计有半年多没见到你了,你是不是到外面赚外快去了。
最近论坛人气一点都不旺,大家还要努力呀。楼上的同志是不是把问题描述错了呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-20 09:15:03 | 显示全部楼层
多谢两位相助,我后面举的例子可能有点让大家迷糊,但是我的实际意图确实是要控制光标的显示位置. 我是想做一个布线工具,在每种线形模式下,光标沿线的起点向后延伸时,是安照我所给的曲线方程所描述的轨迹运行的,而不是可以在屏幕上随意移动.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-20 09:37:01 | 显示全部楼层
那就对了呀,就是我上面所说的方法,用JIG来做是可以的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-20 11:05:55 | 显示全部楼层
RedCAD是高手, 加了HOOK 如果鼠标挪出CAD绘图区域怎么处理,? 求到曲线的最近点有什么好的函数 或者方法吗? 我用的曲线函数比较复杂,如果自己做的话可能就只能用迭代 逼近的方法了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-20 14:10:59 | 显示全部楼层
是啊,RedCAD是高手,还要多多向他请教呢~
哪里有去赚外块的机会通知我哦,我这半年辛辛苦苦勤勤恳恳上班下班,除了死工资什么钱也没赚到,呜呜~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-20 14:30:53 | 显示全部楼层
用HWND SetCapture(
  HWND hWnd   // handle of window to receive mouse capture
);函数来锁定鼠标,hWnd是锁定鼠标在那个窗体中移动,这样就不怕鼠标移到窗体外面去了。记得最后调用BOOL ReleaseCapture(VOID),否则你的鼠标永远都移动不出这个窗体了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-20 18:53:43 | 显示全部楼层
多谢各位抬举,其实我也是东拼西凑,好多也都是向大家学习的。
当鼠标移出绘图区域,那绘图区就失去了焦点,你根本就不用去处理,就象你画一条直线,
当你确定了第一点,然后在确定第二点的时候鼠标移到工具条上晃动但未做任何操作,当再次将鼠标移到绘图区不是又可以继续画线了吗?光标到自定义的曲线的最近点的计算确实是个难点,关键是如何优化提高计算效率,这估计还得从图形学和几何方面去研究了。我也曾自己去开发过按数学方程建立的曲线,但由于胆小,风险大而放弃了,还是从AcDbSpline类进行派生的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-20 20:21:42 | 显示全部楼层
我有一个想法是 当鼠标挪动时,给曲线长度一个很小的步进值, 然后由变化了的曲线总长去重新计算曲线终点坐标(曲线函数为曲线长的参数方程),然后将鼠标设置到这点去, 这样可以避免去求最近点,不知道可不可以,我先试试看,如果可以的话再跟大家分享.
大家有什么好的想法也望不吝赐教.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-20 20:31:03 | 显示全部楼层
从理论上讲是存在问题的,是做不到的。如果鼠标是沿你的曲线的延长方向移动一个步进长度,那或许没问题,但如果鼠标是反向移动或延曲线的法向或其他方向移动呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-20 20:40:33 | 显示全部楼层
这个我也想过 我会保存曲线前一终点处的切线向量, 并计算它与( 当鼠标移动时,鼠标所在位置与曲线前一终点之间所成向量 ) 之间的夹角, 来判断鼠标是在往曲线增长的方向移动还是曲线缩短的方向移动, 鼠标的瞬时移动量应该是一个比较小的值,而且我需要的只是一个长度值, 用鼠标当前位置与曲线上一终点的距离来作为这个增量,加到原曲线长上得到当前曲线长,然后计算曲线新终点坐标,并把光标设在到该点处, RedCAD你觉得这个可以行得通不? 感谢回帖.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-21 12:32:55 | 显示全部楼层
我觉得还是有问题,其实大可不必这样,就用常规的逐点逼近法比较好,这里面你可以考虑使用一些优化技术来提高效率,比如你不同对整个曲线上的点进行比较,迅速排除不用处理的曲线段,然后对最近最有可能存在的区域进行精确分析。比如我们要查某一个人,我们总不可能对中国13亿人口都去研究一片吧,总是首先确定他是哪个省的,然后是哪个市的,依次类推就可以迅速找到这个人了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-11 04:05 , Processed in 0.546944 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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