如何使用max 2015 sdk枚举嵌套层的层次结构。 示例:我有3个简单地命名为" 1"," 2"和" 3"。 1和2位于根,3属于1。
如何使用sdk查找此信息。
我可以找到节点所属的图层:
layer = (ILayer*)(node->GetReference(NODE_LAYER_REF));
在ILayer界面中,我找不到任何有关它的父母的信息。 我可以得到一些"扩展" (?)图层的属性:
props = (ILayerProperties*)layer->GetInterface(LAYERPROPERTIES_INTERFACE);
我的问题也没有任何相关信息。
我可以访问图层管理器:
manager = (ILayerManager*) GetCOREInterface()->GetScenePointer()->GetReference(10);// don't remember where did I dig out the magic number 10
在这里,我可以按索引枚举所有图层,但不能按层次结构进行枚举。
任何帮助将不胜感激。感谢。
米兰
答案 0 :(得分:0)
文件说明了这一点:
按索引迭代图层:IFPLayerManager类也是一个 管理3ds Max中场景图层的接口类。这个班 然而,它是一个功能发布的界面,因此是完全不同的 来自前面讨论过的层管理器。这个类是C ++ MAXScript LayerManager类的接口。这堂课有一个 通过整数索引返回图层的有用方法。因此你可以 迭代场景图层而不知道图层的名称。至 获取一个指向此对象的指针,调用GetCOREInterface()函数。
IFPLayerManager* layer_manager = static_cast< IFPLayerManager*> GetCOREInterface( LAYERMANAGER_INTERFACE);
LAYERMANAGER_INTERFACE标识IFPLayerManager接口。使用结果指针,您可以通过整数索引获取场景图层。
ILayerProperties* hLayer = layer_manager->getLayer(i);
此IFPLayerManager :: getLayer()方法返回ILayerProperties 指针的功能比ILayer少得多。
要获得ILayer指针,您可以获得指向其上任何对象的指针 图层,并从中提取ILayer指针。
ILayerProperties类具有子\父层的功能:
virtual ILayerProperties* getChildLayerProperties ( int n ) const
纯虚拟
备注 返回指向此图层的第N个子图层属性的指针。 参数: int n 子图层属性的索引。 返回 返回指向第N个子图层属性的指针。
virtual ILayerProperties* getParentLayerProperties ( ) const
pure virtual
备注返回父图层。这可能是NULL,意味着图层 处于最高水平。
这意味着您可以循环遍历所有索引,然后检查它是否为父层,如果它是循环遍历所有它的子层,则转到下一个。
这些功能记录在&lt; ILayerProperties Class Reference&#39;在3dsmax SDK文档中。