我一直在撞击这个特殊的砖墙一段时间,并且真的可以使用一些帮助!
我可以测试rootNode上是否存在IICustAttribContainer,如果找不到则创建一个新的。我可以测试IICustAttribContainer中是否存在ICustAttrib,但我找不到向它添加新ICustAttrib的方法。这是我目前的方法:
public Boolean writeProp()
{
log( "writeProp()..." );
getRootNode();
IICustAttribContainer ICustAttrCont = rootNode.CustAttribContainer;
if (ICustAttrCont == null) {
rootNode.AllocCustAttribContainer();
ICustAttrCont = rootNode.CustAttribContainer;
}
ICustAttrib ICustAttr = getParamBlockByName(ICustAttrCont, "myProp");
if (ICustAttr == null) {
// Create the new ICustAttrib here but how do I do it??
ICustAttrCont.AddNewProp( new ICustAttrib() );
}
return true;
}
getRootNode()返回rootNode。 getParamBlockByName()查找自定义属性,如果找到则返回它。
我深入研究了3ds Max文档,似乎我必须使用ClassDesc2来描述自定义属性和子类ICustAttrib以及ParamBlockDesc2来定义每个参数。
我的问题是文档和示例都是用C ++编写的,我找不到如何在C#中执行此操作的示例。
感激不尽的任何帮助或指示。
|西蒙