ICECompoundNode.ExposedPorts

ICECompoundNode.ExposedPorts

説明

2 つ ICENodePortCollection のオブジェクトの Array を戻します。最初のコレクションには、外部公開されたポートと、プロキシポートと呼ばれる関連コンパウンドノードポートの 1 つが含まれます。このコレクションは、ペアで機能します。たとえば、最初のコレクションでポジション0 にある外部に公開されたポートは、2 番目のコレクションのポジション0 にあるノードポートと一致します。

外部に公開されたポートは、コンパウンドに含まれるノードポートであり、外側のポートへの接続ポイントとして動作します。これらのポートは、ICENodeInputPort または ICENodeOutputPort オブジェクトのいずれかになります。このプロパティおよび AddExposedParamToICECompoundNode コマンドは、一般的に含まれるノードポートを他のグラフノードに外部公開する場合にペアで使用されます。

C#構文

// get accessor

Object rtn = ICECompoundNode.ExposedPorts;

Python の例

# Sample code to access the exposed ports on the compound nodes of 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 * '.'

	if in_node.IsClassOf( constants.siICECompoundNodeID ):

		# Log the visited compound node name	

		xsi.LogMessage( indent + in_node.Name )

		# Get the exposed port info for the compound node

		ports = in_node.ExposedPorts

		# The exposed ports

		exposedPorts = ports[0]

		exposedPortsCount = exposedPorts.Count

		# The compound node ports

		nodePorts = ports[1]

		for i in range(exposedPortsCount):

			xsi.LogMessage( indent + "Node port " + str(i) + ": " + str(nodePorts[i]) )

			xsi.LogMessage( indent + "Exposed port " + str(i) + ": " + str(exposedPorts[i]) )			

	nodeCount = 0

	nodes = ()

	if in_node.IsClassOf( constants.siICENodeContainerID ):	

		# The input node is a ICENodeContainer, let's get its inner compound nodes

		nodes = in_node.CompoundNodes

		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.NewScene("", "")

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", "Compound1")

xsi.CreateICECompoundNode("cube.polymsh.ICETree.Compound1.ScalarToRotationNode,cube.polymsh.ICETree.Compound1.MultiplyNode", "Compound2")

xsi.CreateICECompoundNode("cube.polymsh.ICETree.Compound1", "CompoundTop")

# Get the ICETree off the cube primitive and start iterating the graph

cube = xsi.Selection(0)

cubeICETree = cube.ActivePrimitive.ICETrees[0]

level = 0

TraverseNodeGraph( cubeICETree, level )