ICEDataProviderNode
 
 
 

ICEDataProviderNode

Object Hierarchy | Related C++ Class: ICEDataProviderNode

Inheritance

SIObject

ProjectItem

ICENode

ICEDataProviderNode

Introduced

v7.0

Description

The ICEDataProviderNode represents the GetData node in an ICE tree. The responsibility of an ICEDataProviderNode is to read the data from Softimage objects and is typically used to initiate the data flow of an ICE tree.

Methods

AddCustomOp AddICEAttribute AddScriptedOp AddScriptedOpFromFile
AnimatedParameters2 BelongsTo operator EvaluateAt GetGroupInstanceCount
GetICEAttributeFromName GetPortCount GetPortFromIndex GetPortFromIndex2
GetPortFromName GetPortFromName2 IsA IsAnimated2
IsClassOf operator IsEqualTo operator IsKindOf IsLocked operator
IsSelected operator LockOwners RemoveICEAttribute SetAsSelected operator
SetCapabilityFlag operator SetLock TaggedParameters UnSetLock

Properties

Application BranchFlag operator Capabilities operator Categories
EvaluationID Families operator FullName operator Help
HierarchicalEvaluationID ICEAttributes InputPorts IsConnected
LockLevel operator LockMasters operator LockType operator Model
Name operator NestedObjects ObjectID Origin
OriginPath OutputPorts Owners PPGLayout operator
Parameters operator Parent Parent3DObject PortGroupCount
RootNodeContainer Selected operator Type operator  
       

Examples

Python Example

# Sample code to log all the data provider nodes in a graph
import win32com.client
from win32com.client import constants
xsi = Application
# 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 DataProviderNodes 
                nodes = in_node.DataProviderNodes 
                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.ActivePrimitive2.ICETrees[0]
level = 0
TraverseNodeGraph( cubeICETree, level )

See Also

ICEDataModifierNode