NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 13878|回复: 12
打印 上一主题 下一主题

[工作记录] C#鼠标监听(回应大川的python方法)

  [复制链接]
跳转到指定楼层
1m
发表于 2013-8-24 21:38:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Rhino.UI.MouseCallback 主要是用这个类来侦听
  Rhino.UI.MouseCallback是个虚类 所以需要做个实例 叫FeedBack  
正文:

private void RunScript(object x, bool y, ref object A)
  {
    Print(back.x.ToString() + "/" + back.y.ToString());
    Print(back.Item.ToString());
  }
  // <Custom additional code>

  FeedBack back= new FeedBack(this);
  public class FeedBack : Rhino.UI.MouseCallback
  {
    public int Item = 0;
    public Script_Instance parent;
    public int x;public int y;
    public FeedBack(Script_Instance p) : base()
    { this.Enabled = true;
      parent = p;
      x = 0;y = 0;
    }
    protected override void OnMouseMove(Rhino.UI.MouseCallbackEventArgs e)
    {
      x = e.ViewportPoint.X;y = e.ViewportPoint.Y;
      parent.owner.ExpireSolution(true);
      Item++;
      if(Item > 1000000)Item = 0;
    }
  }



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享
2m
 楼主| 发表于 2013-8-24 21:46:25 | 只看该作者
其实不用绕个大弯 直接从DrawEventArgs往回找 。很容易就找到一大堆类似的 比如MouseCallbackEventArgs
这个不用click来传递委托的。 不过最容易的方法还是继承已知的一个类 overides一些mouse事件相关的函数即可。
3m
发表于 2013-8-25 00:25:47 | 只看该作者
本帖最后由 tianrock2002 于 2013-8-25 00:28 编辑

4m
发表于 2013-8-25 07:28:14 | 只看该作者
牛,真心牛
5m
发表于 2013-8-25 11:51:41 | 只看该作者
好久不见大哥的神文
6m
 楼主| 发表于 2013-8-25 13:10:38 | 只看该作者
7m
发表于 2013-8-25 16:03:42 | 只看该作者
好像还是不行啊
8m
发表于 2013-8-25 22:52:35 | 只看该作者
谢潘浩,貌似我刚才在IronPython中尝试了一个小时不使用RhinoGet类调用Rhino.UI.MouseCallback也没成功。

9m
发表于 2013-8-25 22:59:30 | 只看该作者
wdc63 发表于 2013-8-25 22:52
谢潘浩,貌似我刚才在IronPython中尝试了一个小时不使用RhinoGet类调用Rhino.UI.MouseCallback也没成功。
...

倒是可以使用System.Windows.Forms.Cursor.Position和view.ActiveViewport
得到屏幕坐标和Viewport内的坐标
使用RhinoGet得到模型中坐标的方法貌似也不错。
Python的SDK和Common资料确实太少了哎。
10m
发表于 2013-8-26 01:10:10 | 只看该作者
这么做效果直接是根据视口像素了吧,还会被GH窗口与视口标签阻挡
我感觉还是得到模型坐标可以透视效果比较有用,真把rhino当p5玩了XD
11m
 楼主| 发表于 2013-8-26 11:35:34 | 只看该作者
wdc63 发表于 2013-8-25 22:59
倒是可以使用System.Windows.Forms.Cursor.Position和view.ActiveViewport
得到屏幕坐标和Viewport内的坐 ...

反编译问灰哥。。。
12m
 楼主| 发表于 2013-8-26 11:36:29 | 只看该作者
claudemit 发表于 2013-8-26 01:10
这么做效果直接是根据视口像素了吧,还会被GH窗口与视口标签阻挡
我感觉还是得到模型坐标可以透视效果比较 ...

那个可以通过求摄像机法线和鼠标平面的交线得到
13m
发表于 2013-8-26 13:59:23 | 只看该作者
神奇啊 学习了

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-4-26 12:19 , Processed in 0.202273 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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