Object Hierarchy | Related C++ Class: ActionDeltaItem
ActionDeltaItem
v6.0
Delta|Action|RefModel
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.
| Application | AuditInfo | Categories | FullName
![]() |
| Help | Mute | Name ![]() |
NestedObjects |
| Origin | OriginPath | Parent | Type ![]() |
| Value | |||
/*
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 :
|
/*
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, "");
}
}
|