ICENode

Object Hierarchy | Related C++ Class: ICENode | Supported Parameter List: nodeobject

Inheritance

SIObject
   ProjectItem
       ICENode

Introduced

7.0

Description

The ICENode class represents a built-in or custom effect node in the Softimage ICE graph. ICENodes can be assembled in sub-graphs called compound nodes, which are represented as ICECompoundNode objects.

The ICENode class API is convenient for accessing the different components of an effect node such as ports, port groups and port group instances. The node ports are organized in groups similar to the Softimage operator Ports, where groups are logical groupings of multiple port connections. Other ICENode objects can connect to an ICENode object via its ports represented as ICENodeInputPort and ICENodeOutputPort.

Methods

AddCustomOp

AddScriptedOp

AddScriptedOpFromFile

AnimatedParameters2

BelongsTo

EvaluateAt

GetGroupInstanceCount

GetICEAttributeFromName

GetPortCount

GetPortFromIndex

GetPortFromName

IsA

IsAnimated2

IsClassOf

IsEqualTo

IsKindOf

IsLocked

IsSelected

LockOwners

SetAsSelected

SetCapabilityFlag

SetLock

TaggedParameters

UnSetLock

Properties

Application

BranchFlag

Capabilities

Categories

Families

FullName

Help

ICEAttributes

InputPorts

IsConnected

LockLevel

LockMasters

LockType

Model

Name

NestedObjects

ObjectID

Origin

OriginPath

OutputPorts

Owners

Parameters

Parent

Parent3DObject

PortGroupCount

PPGLayout

RootNodeContainer

Selected

Type

 

 

 

Examples

Python Example

# Sample code to show how to access the ICENode elements.
import win32com.client
from win32com.client import constants

xsi = Application

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

   # Log info on the visited node 
   xsi.LogMessage( "* * *" )

   # Node info
   xsi.LogMessage( indent + "node: " + node.FullName );
   xsi.LogMessage( indent + "node type: " + node.Type );
   xsi.LogMessage( indent + "node proxy class: " + xsi.ClassName(node) );
   xsi.LogMessage( indent + "node connected: " + str(node.IsConnected) );
   xsi.LogMessage( indent + "node parent: " + str(node.Parent.Name) )
   xsi.LogMessage( indent + "node root: " + str(node.RootNodeContainer.Name) )

   # Node port group info
   portGroupCount = node.PortGroupCount
   xsi.LogMessage( indent + "number of groups: " + str(portGroupCount) )
   for iGroup in range(portGroupCount):
       nPortsInGroup = node.GetPortCount(iGroup)
       xsi.LogMessage( indent + "number of ports in group " + str(iGroup) + ": " + str(nPortsInGroup) )

       nGroupInst = node.GetGroupInstanceCount(iGroup)
       xsi.LogMessage( indent + "number of instances of group " + str(iGroup) + ": " + str(nGroupInst) )

       for iInst in range( nGroupInst ):
          for iPort in range( nPortsInGroup ):
              xsi.LogMessage( indent + "port " + str(iPort) + "," + str(iGroup) + "," + str(iInst) )
              p = node.GetPortFromIndex(iPort,iGroup,iInst)
              xsi.LogMessage( indent + "port name: " + p.Name )
              xsi.LogMessage( indent + "output port: " + str(p.IsOutput) )

   # Node input port info
   inPorts = node.InputPorts
   inputPortCount = inPorts.Count
   xsi.LogMessage( indent + "node input ports: " + str(inputPortCount) )

   # Node output port info
   outPorts = node.OutputPorts
   outputPortCount = outPorts.Count
   xsi.LogMessage( indent + "node output ports: " + str(outputPortCount) )

   nodeCount = 0
   nodes = ()

   if node.IsClassOf( constants.siICENodeContainerID ):
       # The input node might be a ICETree or ICECompoundNode, let's get their ICENodes
       nodes = node.Nodes
       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 navigating the graph
cube = xsi.Selection(0)
cubeICETree = cube.ActivePrimitive.ICETrees[0]

level = 0
TraverseNodeGraph( cubeICETree, level )

See Also

ICENodeInputPort

ICENodeOutputPort

ICENodeContainer

ICETree

ICECompoundNode

 

 

 



Autodesk Softimage v7.5