ConstructionHistory

Object Hierarchy

継承

SIObject

ConstructionHistory

説明

このオブジェクトは、PrimitiveオブジェクトのOperatorスタックです。Primitive.ConstructionHistoryプロパティを使用して ConstructionHistory オブジェクトのリストを取得することにより、1 つずつスタックにオペレータを表示できます。

プリミティブのオペレータスタックは、オペレータの順序がオペレータが作成されたときの順序と通常一致するため、「コンストラクションヒストリ」と呼ばれます。ただし、siConstructionModeの概念から、オペレータは既存のオペレータの下に追加される場合があります。

コンストラクションヒストリは、「接続スタック」の概念を一般的にした例の 1 つです(詳細は「DataRepository.GetConnectionStackInfo」を参照)。

注:パフォーマンスを維持するために Item プロパティと Count プロパティは実装されていないため、スタック全体のリストを表示しておき、そのオペレータが目的のオペレータであるかどうかを 1 つずつ確認してください。

メソッド

Filter Find IsClassOfオペレータ IsEqualToオペレータ

プロパティ

Application Categories FullNameオペレータ Help
Nameオペレータ NestedObjects Origin OriginPath
Parent Typeオペレータ    
       

1. VBScript の例

' Set up the scenario (a cylinder with two operators)
Set oObj = CreatePrim( "Cylinder", "MeshSurface" )
ApplyOp "Bulge", oObj, 3, siPersistentOperation
ApplyOp "Twist", oObj, 3, siPersistentOperation
' First find the cylinder with the operators on it
Set oRoot = ActiveSceneRoot
Set oCyl = oRoot.FindChild(,,siMeshFamily)
' Now get the primitive from the cylinder and then the 
' operator stack as the construction history object
Set oPrim = oCyl.ActivePrimitive
Set oOpStack = oPrim.ConstructionHistory
' This isn't a normal collection, so Count and Item 
' do not work, as you can see if you uncomment these lines:
REM LogMessage "The stack contains " & oOpStack.Count & " operators."
REM LogMessage "...and the first one is: " & oOpStack.Item(0)
' Since you cannot indicate which one you want with Item,
' you need to enumerate each one to check to see whether it
' is the one you are looking for 
For Each o in oOpStack
        If (o = oPrim & ".bulgeop") Then
                ' You found it!
                Set oBulgeOp = o
                ' Find the DeformAlong settings and toggle Y and Z
                For Each p in oBulgeOp.Parameters
                        Select Case p.ScriptName
                                Case "defy"
                                        LogMessage "Original value for DeformAlongY = " & p.Value
                                        p.Value = not( p.Value )
                                        LogMessage "New value = " & p.Value
                                Case "defz"
                                        LogMessage "Original value for DeformAlongZ = " & p.Value
                                        p.Value = not( p.Value )
                                        LogMessage "New value = " & p.Value
                                Case Else
                        End Select
                Next
        End If
Next
REM Output of above script is:
'INFO : "Original value for DeformAlongY = False"
'INFO : "New value = True"
'INFO : "Original value for DeformAlongZ = True"
'INFO : "New value = False"

2. VBScript の例

' The following code illustrates how to get a ConstructionHistory 
' object and how to iterate the construction history using the 
' For Each...Next statement: 
Set oObject = Application.ActiveProject.ActiveScene.Root.AddGeometry("Sphere","MeshSurface")
ApplyOp "Twist", oObject
ApplyOp "Bend", oObject
ApplyOp "Taper", oObject
LogMessage "The " & oObject.Name & " has the following operators applied:"
For Each oOperator in oObject.ActivePrimitive.ConstructionHistory
        LogMessage vbTab & oOperator.Name 
Next
REM The output of the above script is:
'INFO : "The sphere has the following operators applied:"
'INFO : "       Taper Op"
'INFO : "       Bend Op"
'INFO : "       Twist Op"
'INFO : "       Geometry"

3. JScript の例

//jscript example showing how to 
//enumerate the Operators on a geometry
var oGrid = ActiveProject.ActiveScene.Root.AddGeometry( "Sphere", "MeshSurface" ) ;
ApplyOp("Bulge", oGrid.Name, 3, siPersistentOperation);
ApplyOp("Bend", oGrid.Name, 3, siPersistentOperation);
oEnum = new Enumerator( oGrid.ActivePrimitive.ConstructionHistory );
for (;!oEnum.atEnd();oEnum.moveNext())           
{
        // Print the name of the operator
        logmessage( oEnum.item().fullname ) ;
}
// Output of this script is:
//INFO : "sphere.polymsh.bendop"
//INFO : "sphere.polymsh.bulgeop"
//INFO : "sphere.polymsh.geom"

関連項目

Primitive.ConstructionHistory Operator