iCAx开思工具箱
标题:
截获UG中的mousemove事件
[打印本页]
作者:
Patton_icax
时间:
2004-11-10 11:22
标题:
截获UG中的mousemove事件
想在开发中获得mousemove时的x,y坐标值
作者:
acoka
时间:
2004-11-10 11:26
UG的不懂,caa的倒知道几种
作者:
Patton_icax
时间:
2004-11-10 11:50
说说CATIA的看看,好吗?谢了
作者:
acoka
时间:
2004-11-10 13:35
做个CATIndicationAgent,设定平面,
然后当这个Agent(event)发生的时候
CATBoolean test::PlaneIndicationFilter( CATIndicationAgent* iAgent, void *data )
{
HRESULT rc = E_FAIL;
do{
if ( !_pPlaneIndicationAgent ) {
break;
}
CATMathPoint2D p2DPoint = _pPlaneIndicationAgent->GetValue( );
...
}
就可以得到鼠标的2D坐标
然后用你先前设的平面的坐标做转换,得到当前part的3D坐标
如果需要,再转绝对坐标
作者:
Patton_icax
时间:
2004-11-10 19:33
谢谢了,不过UG中好像没有这样的API。。。。。
作者:
Patton_icax
时间:
2004-11-11 09:19
"用你先前设的平面的坐标做转换,得到当前part的3D坐标 "什莫意思?
得到的不是软件的坐标吗?坐标转换,怎末做?
作者:
acoka
时间:
2004-11-11 09:56
屏幕是2D的,当然只能得到某特定平面的2D坐标,比如形状的面,或view的平面
这个面自然是定义在某个坐标系上,这样2D坐标就可以转到3D
作者:
Patton_icax
时间:
2004-11-11 11:03
也就是由2D坐标转3D了。那转换的算法怎末办?
作者:
acoka
时间:
2004-11-11 11:11
你用的软件的API应该有这个界面
或你自己去求面的方程
一般都是平面,所以乘2轴的坐标矢量,加原点坐标不就出来了
再复杂的面也是以这个原理为出发点的
作者:
Patton_icax
时间:
2004-11-11 11:18
但是我没有可以截获mousemove的函数
作者:
acoka
时间:
2004-11-11 14:04
UG有没有就不知道了
作者:
Patton_icax
时间:
2004-11-11 23:03
仍然谢谢仁兄,常联系:qq:297122380
作者:
深夜摔键盘
时间:
2004-11-13 02:11
当初也是有这个想法,想得到鼠标点的信息,自己写了一个,方法就不说了,因为采用的方式有些变态,不太适合用在二次开发上。
看看图吧:
作者:
Patton_icax
时间:
2004-11-13 20:27
很想知道仁兄是怎末实现的?可一赐教吗?谢谢
作者:
Patton_icax
时间:
2004-11-17 00:29
???
作者:
深夜摔键盘
时间:
2004-11-17 22:00
鼠标钩子+投影变换。
不管你用什么方法,首先要得到鼠标指针在WINDOWS窗口中的设备坐标,这就得用鼠标钩子。
然后想方设法把它还原到UG的场景坐标系中。这个就是投影变换的逆过程。可以想想,UG的图形不正是由3D经过投影变换到窗口坐标中的么?
无论是用鼠标钩子,还是投影变换,都是开发中不稳定的因素!
如果你不是非得需要这个功能的话,就别在这上面浪费时间了。毕竟是做二次开发。除非是做一些非常规的开发,比如做一些UG所不具备的功能时。
作者:
Patton_icax
时间:
2004-11-18 22:28
有同感,曾经想过你的思路,但是觉得不太好,怕在截获消息的时候对UG有影响,所以就没实行.....现在看来是不完善,要是有内部开发的技术支持就好了,呵呵,谢谢了
作者:
zhjb113
时间:
2004-11-20 15:24
我用的是timer,定时查询鼠标的位置
作者:
深夜摔键盘
时间:
2004-11-20 17:24
啊。。。
zhjb兄说的极是,没从这个角度考虑过。
作者:
lightshining
时间:
2009-5-27 21:24
请问如何将鼠标的位置和ug窗口联系起来呢?
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3