## 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 | IsEqualTo |  |

### Properties

Application | AuditInfo | Categories | FullName
Help | Mute | Name | NestedObjects
Origin | OriginPath | Parent | Type
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