ActionDeltaItem

Object Hierarchy | Related C++ Class: ActionDeltaItem

Inheritance

SIObject

ActionDeltaItem

Introduced

v6.0

Description

The ActionDeltaItem object tracks changes made on a parameter that is part of a reference model. Each ActionDeltaItem represents a single change, or modification, to a referenced parameter. So each time there a change to a static value, an fcurve, a constraint, an expression or a group relation, a new ActionDeltaItem is generated.

You can also create new ActionDeltaItems from a data set using one of these methods: ActionDelta.AddConstraintItem, ActionDelta.AddExpressionItem, ActionDelta.AddFCurveItem, or ActionDelta.AddStaticValueItem.

ActionDeltaItem objects of the same type (see siModificationDeltaType) are stored in an ActionDelta (ActionDeltaItemCollection) which is accessible via the ActionDelta.Items property.

Methods

IsClassOf operator IsEqualTo operator    
       

Properties

Application AuditInfo Categories FullName operator
Help Mute Name operator NestedObjects
Origin OriginPath Parent Type operator
Value      
       

Examples

1. JScript Example

/*

	This example demonstrates how to assign a new value to an ActionDeltaItem

*/

NewScene(null, false);

// Create a reference model from a cube

var oRoot = Application.ActiveProject.ActiveScene.Root;

var oCube = oRoot.AddGeometry("Cube", "MeshSurface");

var emdlFileRefModel = XSIUtils.BuildPath(Application.InstallationPath(siProjectPath), "Models", "MyModel.emdl"); 

CreateModelAndConvertToRef(oCube, emdlFileRefModel );

// Translate the cube that also generate a delta

Translate(oCube, 2.0, 1.3, 0, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 0, null);

// Get the Delta object

var oDelta = Dictionary.GetObject("Model.Delta");

// Get the ActionDeltaItem collection of the first ActionDelta

var oActionDeltaItemsColl = oDelta.ActionDeltas(0).Items;

for (var i=0; i<oActionDeltaItemsColl.Count; i++) {

	 // Print info about the current ActionDeltaItem

	 Application.LogMessage("ActionSourceItem[" + i + "]");

	 Application.LogMessage("Name: " + oActionDeltaItemsColl(i).Name)

	 Application.LogMessage("Type: " + oActionDeltaItemsColl(i).Type)

	 //Print the current value

	 Application.LogMessage("Initiale Value: " +oActionDeltaItemsColl(i).Value)

	 // Change the value of the item

	 oActionDeltaItemsColl(i).Value = 1.2 * i

	 // Print the new value

	 Application.LogMessage("New Value: "+ oActionDeltaItemsColl(i).Value)

	 Application.LogMessage("");

}

// Apply modification on the target reference asset container (the reference model)

oDelta.Apply()

// Output of above script:

//INFO : ActionSourceItem[0]

//INFO : Name: cube.kine.local.posx

//INFO : Type: siModificationDeltaStaticValue

//INFO : Initiale Value: 2

//INFO : New Value: 0

//INFO : 

//INFO : ActionSourceItem[1]

//INFO : Name: cube.kine.local.posy

//INFO : Type: siModificationDeltaStaticValue

//INFO : Initiale Value: 1.3

//INFO : New Value: 1.2

//INFO : 

//INFO : ActionSourceItem[2]

//INFO : Name: cube.kine.local.posz

//INFO : Type: siModificationDeltaStaticValue

//INFO : Initiale Value: 0

//INFO : New Value: 2.4

//INFO :

2. JScript Example

/*

	This example demonstrates how to set the name of the item

*/

NewScene(null, false);

// Create a reference model from a cube

var oRoot = Application.ActiveProject.ActiveScene.Root;

var oCube = oRoot.AddGeometry("Cube", "MeshSurface");

var emdlFileRefModel = XSIUtils.BuildPath(Application.InstallationPath(siProjectPath), "Models", "MyModel.emdl"); 

CreateModelAndConvertToRef(oCube, emdlFileRefModel );

// Add the Delta object

var oDelta = AddDelta(oCube.Model);

// Add an action of type siModificationDeltaStaticValue

var oDeltaAction = oDelta.AddAction(siModificationDeltaStaticValue)

// Add the Static value item	

var oActionDeltaItem = oDeltaAction.AddStaticValueItem(oCube + ".kine.global.posx", 10);

// Get the relative name for the sclx parameter

var rp = GetRelativeNameForTarget(oCube.sclx);

// Replace posx parameter by sclx

oActionDeltaItem.name = rp;

// Apply modification on the target reference asset container (the reference model)

oDelta.Apply()

// Reload the reference model to reset cube.kine.local.posx value

UpdateReferencedModel("Model");

// Convenience function

function GetRelativeNameForTarget(in_param) {

	var mdlname = in_param.Model.FullName;

	if (mdlname == "Scene_Root") {

		return in_param.FullName;

	} else {

		var tmp = in_param.FullName;

		var re = new RegExp(mdlname + ".", "i");

		return tmp.replace(re, "");

	}

}

See Also

ActionDelta ActionDelta.Items ActionDelta.AddFCurveItem ActionDelta.AddStaticValueItem ActionDelta.AddExpressionItem