登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Antonieo's

Life is not wonderful , therefor it is .

 
 
 

日志

 
 

通过脚本用名称查询并获得一个场景中的物体  

2012-06-06 14:55:49|  分类: Dev Mem |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
这两天有人在群里一直问怎么通过脚本查询当前场景中是否存在某个物体,这个问题,如果身边没有直接能回答的人,那么不妨查阅XSI的SDK,像这种基本的问题,是很容易找到答案的。
下面,我例举一下最常见的2种方法

方法1:
模型对象的FindChild方法
这个方法的好处是,使用物体的对象模型的方法,可以实现基于选择对象的子物体查询,并且,通过此方法的第二个形参,还可以定义只针对某一类型物体进行查询,因为model类型物体拥有独立的命名空间,因此,不同模型下,可能存在名称完全相同的物体。另外FindChild只会返回查询过程中第一个匹配的对象,如果想要发挥多个同名或复合名称规则的对象,那么可以考虑使用FindChildren方法。具体细节参见SDK。

App = Application
Log = App.LogMessage

o_SceneRoot = App.ActiveProject.ActiveScene.Root
o_Obj = o_SceneRoot.FindChild("Cube")
Log(o_Obj)


方法2:
场景字典GetObject方法
这个方法只通过名称在场景中查询,并且只返回第一个查询到的匹配对象,另外,如果没有查询到匹配的结果,函数默认会抛出异常,所以下面的代码我做了异常处理。输入False作为第二形参,可关闭异常抛出。这个方法查询时无视层级关系,相比起第一种方法,缺乏灵活性。但是代码很好写。

App = Application
Log = App.LogMessage

try:
    o_Obj = App.Dictionary.GetObject("Cube")
    Log(o_Obj)
except:
    Log("Not Exist")

  评论这张
 
阅读(598)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018