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