DataModifierNodes (ICENodeContainer)

Description

Returns an ICEDataModifierNodeCollection containing all ICEDataModifierNode objects in this container. This differs from ICENodeContainer.Nodes, which only returns the immediate ICEDataModifierNode objects. See ICENodeContainer.Nodes for more information.

C# Syntax

// get accessor
ICEDataModifierNodeCollection rtn = ICENodeContainer.DataModifierNodes;

Examples

Python Example

# Sample code to log all the data modifier nodes in a graph
import win32com.client
from win32com.client import constants

xsi = Application
xsi.NewScene( "", 0 )

# Recursive function for traversing a node graph
def TraverseNodeGraph( in_node, level ):
   indent = level * '.'

   # Log the visited node name
   xsi.LogMessage( indent + in_node.Name )
   nodeCount = 0
   nodes = ()

   if in_node.IsClassOf( constants.siICENodeContainerID ):
       # The input node might be a ICETree or ICECompoundNode, let's get their ICEDataModifierNodes 
       nodes = in_node.DataModifierNodes
       nodeCount = nodes.Count

   # Recursively traverse the graph
   for i in range(nodeCount):
       TraverseNodeGraph( nodes[i], level+2 )

# Create a sample twist deformer graph first
xsi.CreatePrim( "Cube", "MeshSurface" )
xsi.SetValue( "cube.polymsh.geom.subdivu", 15 )
xsi.SetValue( "cube.polymsh.geom.subdivv", 14 )
xsi.ApplyOp( "ICETree", "cube", None, None, None, 0 )
xsi.AddICENode( "GetDataNode", "cube.polymsh.ICETree" )
xsi.SetValue( "cube.polymsh.ICETree.SceneReferenceNode.Reference", "cube.polymsh.PointPosition" )
xsi.AddICENode( "RotateVectorNode", "cube.polymsh.ICETree" )
xsi.AddICENode( "3DVectorToScalarNode", "cube.polymsh.ICETree" )
xsi.AddICENode( "SetData", "cube.polymsh.ICETree" )
xsi.SetValue( "cube.polymsh.ICETree.SetData.PredefinedAttributeName", "PointPosition" )
xsi.AddAttributeToSetDataICENode( "cube.polymsh.ICETree.SetData", "PointPosition", constants.siComponentDataTypeVector3, constants.siComponentDataContextComponent0D, constants.siComponentDataStructureSingle )
xsi.ConnectICENodes( "cube.polymsh.ICETree.port1", "cube.polymsh.ICETree.SetData.set" )
xsi.ConnectICENodes( "cube.polymsh.ICETree.RotateVectorNode.vector", "cube.polymsh.ICETree.SceneReferenceNode.value" )
xsi.ConnectICENodes( "cube.polymsh.ICETree.SetData.pointposition", "cube.polymsh.ICETree.RotateVectorNode.result" )
xsi.ConnectICENodes( "cube.polymsh.ICETree.3DVectorToScalarNode.vector", "cube.polymsh.ICETree.SceneReferenceNode.value" )
xsi.AddICENode( "MultiplyNode", "cube.polymsh.ICETree" )
xsi.ConnectICENodes( "cube.polymsh.ICETree.MultiplyNode.value1", "cube.polymsh.ICETree.3DVectorToScalarNode.y" )
xsi.AddICENode( "ScalarToRotationNode", "cube.polymsh.ICETree" )
xsi.ConnectICENodes( "cube.polymsh.ICETree.ScalarToRotationNode.angle", "cube.polymsh.ICETree.MultiplyNode.result" )
xsi.ConnectICENodes( "cube.polymsh.ICETree.RotateVectorNode.rotation", "cube.polymsh.ICETree.ScalarToRotationNode.rotation" )
xsi.SetValue( "cube.polymsh.ICETree.ScalarToRotationNode.y", 1 )
xsi.SetValue( "cube.polymsh.ICETree.ScalarToRotationNode.x", 0 )
xsi.SetValue( "cube.polymsh.ICETree.MultiplyNode.value2", 20 )
xsi.CreateICECompoundNode("cube.polymsh.ICETree.3DVectorToScalarNode,cube.polymsh.ICETree.MultiplyNode,cube.polymsh.ICETree.ScalarToRotationNode", "")

# Get the ICETree off the cube primitive and start iterating in the graph
cube = xsi.Selection(0)
cubeICETree = cube.ActivePrimitive.ICETrees[0]

level = 0
TraverseNodeGraph( cubeICETree, level )


# Expected results:
# INFO : ICETree
# INFO : ..Set Data

See Also

ICENodeContainer.CompoundNodes

ICENodeContainer.Nodes

ICENodeContainer.DataProviderNodes



Autodesk Softimage v7.5