ClusterElementCollection

関連する C++クラス: CClusterElementArray

導入

v1.0

詳細

Cluster オブジェクトClusterまたはClusterPropertyオブジェクト上のクラスタエレメントのコレクションです。

このオブジェクトに保存されているデータの用途は、オブジェクトが Cluster または ClusterProperty のどちらに存在するのかにより異なります。

Cluster.Elements(およびEnvelope.Elements)によって戻される ClusterElementCollection は、クラスタ内コンポーネントのインデックスとGeometryのコンポーネントのインデックス間のマッピングを可能にします。たとえば、ポリゴン Cluster のインデックス 10 は、ジオメトリ上の Polygon 45を参照し、ClusterElementCollection.Item(10)は値45を持ちます。このフィールドは読み取り専用です。

特定のジオメトリコンポーネントがクラスタの一部であるかどうかを調べる場合は、この配列内を検索できます。ただし、Cluster.FindIndexを使用する方が便利で効率的です。

一方、ClusterProperty.Elements(またはEnvelope.Weights)によって戻される ClusterElementCollection は、ClusterProperty の実際のデータに対して読み取り/書き込みのアクセス権を与えます。たとえば、Vertex Color プロパティには、各コンポーネントに保存されている RGB 値に対するアクセス権が与えられます。この場合、1D は RGB 値に対応し、サイズ3を持ちます。2D はコンポーネントのインデックスに対応します。値は常にDouble値で表されます。

メソッド

FindIndex      
       

プロパティ

Arrayオペレータ Countオペレータ ItemsByIndexオペレータ  
       

VBScript の例

'
' This example demonstrates how to read and write the values on
' a weight map, using the ClusterElementCollection object.
' It also demonstrates how the indices on the cluster property
' correspond to the indices of the cluster, but that these indices do
' not directly correspond to the indices on the geometry.
NewScene ,false
set oSphere = ActiveSceneRoot.AddGeometry("Sphere","NurbsSurface")
' Create a weight map on a cluster that includes only a subset of the points
set oCluster = oSphere.ActivePrimitive.Geometry.AddCluster( _
        siVertexCluster, "MyFrontPoints", Array( 18,19,20,25,26,27) ) 
CreateWeightMap , oCluster.FullName, "MyWeightMap"
set oWM = oCluster.LocalProperties( "MyWeightMap" )
' Use the ClusterElementCollection.Array to access all the weights in a 
' single 2-dimensional array
ElArray = oWM.Elements.Array
' Set the weight on second item in the cluster, (which is point 19), to 100
ElArray(0,1) = 100
' Set the weight on point 25 to 99
ElArray(0,3) = 99
' Copy our altered array of values back onto the weight map
oWM.Elements.Array = ElArray
' Use ClusterElementCollection.Item to set an individual weight on the 
' Weight Map.  Notice how it is still using an array
'Create a 1 Dimensional array with 1 element    
dim myWeight(0)
myWeight(0) = 10
'Assign the value       
oWM.Elements.Item( 2 ) = myWeight
'Print out the contents 
set oCluster = oWM.Parent       
for i = 0 to oWM.Elements.Count - 1     
        indexOnGeometry = oCluster.Elements.Item(i)     
        logmessage "Weight at " & i & " (pnt" & indexOnGeometry  & _
                ") is " & oWM.Elements.Item(i)(0)
next
'Output of running this script is:      
'INFO : "Weight at 0 (pnt18) is 1"
'INFO : "Weight at 1 (pnt19) is 100"
'INFO : "Weight at 2 (pnt20) is 10"
'INFO : "Weight at 3 (pnt25) is 99"
'INFO : "Weight at 4 (pnt26) is 1"
'INFO : "Weight at 5 (pnt27) is 1"

関連項目

Cluster.Elements ClusterProperty.Elements Envelope.Weights