3ds Max:如何在C#中向rootNode添加自定义属性

时间:2016-07-21 11:42:51

标签: c# 3dsmax

我一直在撞击这个特殊的砖墙一段时间,并且真的可以使用一些帮助!

我可以测试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#中执行此操作的示例。

感激不尽的任何帮助或指示。

|西蒙

0 个答案:

没有答案