Rhino(犀牛)中国技术支持与推广中心

标题: 【已解答】物件 TextureMapping 修改事件 [打印本页]

作者: 设计好爱者    时间: 2016-4-9 00:57
标题: 【已解答】物件 TextureMapping 修改事件
本帖最后由 Jorin 于 2016-4-9 09:44 编辑

大家好,问题是这样的,手动操控一个物体的mapping,然后通过事件获得这个信息。能得到以下信息:

mapping表,mapping。现在的问题是,如何通过这mapping对象去找到是哪object用了这对象,我还没找到相关方法,只有一个笨方法去历遍所有的object看谁用了。但这显然不是好方法,有没高效点的办法,指点下

作者: Jorin    时间: 2016-4-9 09:43
哈哈,楼主肯定是思路错了,使用了 TextureMappingEvent 事件,这个事件的 TextureMappingEventArgs 中不包含物件信息的。

其实应该订阅修改物件属性的事件,很简单,在你初始化插件的时候添加事件订阅:
  1. Rhino.RhinoDoc.ModifyObjectAttributes += RhinoDoc_ModifyObjectAttributes;
复制代码
RhinoDoc_ModifyObjectAttributes 方法里这样写就可以看到修改了哪个物件的 TextureMapping:
  1. private void RhinoDoc_ModifyObjectAttributes(object sender, Rhino.DocObjects.RhinoModifyObjectAttributesEventArgs e)
  2.         {
  3.             if (e.NewAttributes.HasMapping!=e.OldAttributes.HasMapping)
  4.             {
  5.                 Rhino.RhinoApp.WriteLine("物件 {0} 的 TextureMapping 被修改。", e.RhinoObject.Id.ToString());
  6.             }
  7.             
  8.         }
复制代码



作者: 设计好爱者    时间: 2016-4-9 09:56
Jorin 发表于 2016-4-9 09:43
哈哈,楼主肯定是思路错了,使用了 TextureMappingEvent 事件,这个事件的 TextureMappingEventArgs 中不包 ...

呀呀,我真是糊涂到一根筋,真是个好办法,多谢指教
作者: 设计好爱者    时间: 2016-4-12 14:23
Jorin 发表于 2016-4-9 09:43
哈哈,楼主肯定是思路错了,使用了 TextureMappingEvent 事件,这个事件的 TextureMappingEventArgs 中不包 ...

我遇到了些问题,当增加一个物体的贴图轴时,可用ModifyObjectAttributes捕捉,但修改贴图轴,好像不会触发属性事件。
作者: Jorin    时间: 2016-4-13 11:06
设计好爱者 发表于 2016-4-12 14:23
我遇到了些问题,当增加一个物体的贴图轴时,可用ModifyObjectAttributes捕捉,但修改贴图轴,好像不会触 ...

你找找看能不能把 HasMapping 内部的信息提取出来进行比对判断。
作者: 设计好爱者    时间: 2016-4-14 20:38
Jorin 发表于 2016-4-13 11:06
你找找看能不能把 HasMapping 内部的信息提取出来进行比对判断。

嗯 好 的




欢迎光临 Rhino(犀牛)中国技术支持与推广中心 (http://bbs.rhino3d.asia/) Powered by Discuz! X3.2