讨论 --- 【已解答】物件 TextureMapping 修改事件

[复制链接]
跳转到指定楼层
19595 设计好爱者 发表于 2016-4-9 00:57:37 楼主
本帖最后由 Jorin 于 2016-4-9 09:44 编辑

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

mapping表,mapping。现在的问题是,如何通过这mapping对象去找到是哪object用了这对象,我还没找到相关方法,只有一个笨方法去历遍所有的object看谁用了。但这显然不是好方法,有没高效点的办法,指点下
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
关于大陆地区Rhino原厂培训中心
Jorin 发表于 2016-4-9 09:43:01
2
哈哈,楼主肯定是思路错了,使用了 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:56
3
Jorin 发表于 2016-4-9 09:43
哈哈,楼主肯定是思路错了,使用了 TextureMappingEvent 事件,这个事件的 TextureMappingEventArgs 中不包 ...

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

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

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

嗯 好 的
您需要登录后才可以回帖 登录 | 注册成为会员

本版积分规则