NCF参数化建筑论坛

标题: C#鼠标监听(回应大川的python方法) [打印本页]

作者: panhao1    时间: 2013-8-24 21:38
标题: C#鼠标监听(回应大川的python方法)
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;
    }
  }




作者: panhao1    时间: 2013-8-24 21:46
其实不用绕个大弯 直接从DrawEventArgs往回找 。很容易就找到一大堆类似的 比如MouseCallbackEventArgs
这个不用click来传递委托的。 不过最容易的方法还是继承已知的一个类 overides一些mouse事件相关的函数即可。
作者: tianrock2002    时间: 2013-8-25 00:25
本帖最后由 tianrock2002 于 2013-8-25 00:28 编辑

[attach]39813[/attach]好像代码有点问题
作者: 寂寞的人看花    时间: 2013-8-25 07:28
牛,真心牛
作者: 月之眼    时间: 2013-8-25 11:51
好久不见大哥的神文
作者: panhao1    时间: 2013-8-25 13:10
tianrock2002 发表于 2013-8-25 00:25
好像代码有点问题

FeedBack back= new FeedBack(this);
改成下面的
FeedBack back;
public Script_Instance{
back= new FeedBack(this);
}


作者: tianrock2002    时间: 2013-8-25 16:03
好像还是不行啊
作者: wdc63    时间: 2013-8-25 22:52
谢潘浩,貌似我刚才在IronPython中尝试了一个小时不使用RhinoGet类调用Rhino.UI.MouseCallback也没成功。


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

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

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

那个可以通过求摄像机法线和鼠标平面的交线得到
作者: changray_7    时间: 2013-8-26 13:59
神奇啊 学习了




欢迎光临 NCF参数化建筑论坛 (http://bbs.ncf-china.com/) Powered by Discuz! X3.2