ICENodeContainer.DataModifierNodes

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.

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