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 GroupRelation, a new ActionDeltaItem is generated.
You can also create new ActionDeltaItems from a data set using one of these functions:
ActionDeltaItem objects of the same type (see siModificationDeltaType) are stored in an ActionDelta which is accessible via the ActionDelta::GetItems function.
using namespace XSI; Application app; // NewScene command CValueArray cargs; CValue oarg; cargs.Add( L"" ); cargs.Add( false ); app.ExecuteCommand( L"NewScene", cargs, oarg ); cargs.Clear(); //Add cube geometry and create the reference model Model root = app.GetActiveSceneRoot(); X3DObject myCube; root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube); // CreateModelAndConvertToRef command CString strFactPath = app.GetInstallationPath(siProjectPath) ; strFactPath += L"/Models/MyModel.emdl"; cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath ); app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg ); cargs.Clear(); Delta myDelta; // AddDelta command cargs.Add( L"Model" ); app.ExecuteCommand( L"AddDelta", cargs, oarg ); cargs.Clear(); myDelta = oarg; // Translate command cargs.Add(myCube.GetFullName()); cargs.Add(2.0); cargs.Add(1.3); cargs.Add(0.0); cargs.Add(L"siRelative"); cargs.Add(L"siView"); cargs.Add(L"siObj"); cargs.Add(L"siXYZ"); app.ExecuteCommand( L"Translate", cargs, oarg ); cargs.Clear(); ActionDelta ActionDelta0 = myDelta.GetActionDeltas().GetItem(0); CRefArray ActionDeltaItems = ActionDelta0.GetItems(); CString strmgs; for ( LONG i=0; i<ActionDeltaItems.GetCount(); ++i ) { ActionDeltaItem item = ActionDeltaItems[i]; // Print info about the current ActionDeltaItem strmgs = L"ActionSourceItem["; strmgs += CValue(i).GetAsText(); strmgs += L"]"; Application().LogMessage(strmgs); strmgs = L"Name: "; strmgs += item.GetName(); Application().LogMessage(strmgs); strmgs = L"Type: "; strmgs += item.GetType(); Application().LogMessage(strmgs); //Print the current value strmgs = L"Initiale Value: "; strmgs += item.GetValue(); Application().LogMessage(strmgs); // Change the value of the item item.PutValue ( 1.2 * i ); //Print the new value + some AuditInformation strmgs = L"New value: "; strmgs += item.GetValue(); strmgs+= L", "; strmgs += item.GetAuditInfo(); Application().LogMessage(strmgs); }
#include <xsi_actiondeltaitem.h>
Public Member Functions | |
ActionDeltaItem () | |
~ActionDeltaItem () | |
ActionDeltaItem (const CRef &in_ref) | |
ActionDeltaItem (const ActionDeltaItem &in_obj) | |
bool | IsA (siClassID in_ClassID) const |
siClassID | GetClassID () const |
ActionDeltaItem & | operator= (const ActionDeltaItem &in_obj) |
ActionDeltaItem & | operator= (const CRef &in_ref) |
CString | GetName () const |
CStatus | PutName (const CString &in_Name) const |
CString | GetType () const |
bool | GetMute () const |
CStatus | PutMute (const bool in_Mute) |
CValue | GetValue () const |
CStatus | PutValue (CValue in_value) |
CString | GetAuditInfo () |
ActionDeltaItem | ( | ) |
Default constructor.
~ActionDeltaItem | ( | ) |
Default destructor.
ActionDeltaItem | ( | const CRef & | in_ref | ) |
Constructor.
in_ref | constant reference object. |
ActionDeltaItem | ( | const ActionDeltaItem & | in_obj | ) |
Copy constructor.
in_obj | constant class object. |
bool IsA | ( | siClassID | in_ClassID | ) | const [virtual] |
Returns true if a given class type is compatible with this API class.
in_ClassID | class type. |
Reimplemented from SIObject.
siClassID GetClassID | ( | ) | const [virtual] |
ActionDeltaItem& operator= | ( | const ActionDeltaItem & | in_obj | ) |
Creates an object from another object. The newly created object is set to empty if the input object is not compatible.
in_obj | constant class object. |
ActionDeltaItem& operator= | ( | const CRef & | in_ref | ) |
Creates an object from a reference object. The newly created object is set to empty if the input reference object is not compatible.
in_ref | constant class object. |
Reimplemented from SIObject.
CString GetName | ( | ) | const |
Returns the name of the ActionDeltaItem.
Reimplemented from SIObject.
Sets the name of the ActionDeltaItem.
in_Name | New name for the object. |
CString GetType | ( | ) | const |
Returns the type of the ActionDeltaItem.
Reimplemented from SIObject.
bool GetMute | ( | ) | const |
Returns whether the ActionDeltaItem is muted or not.
CStatus PutMute | ( | const bool | in_Mute | ) |
Sets whether the ActionDeltaItem is muted or not.
in_Mute | True to mute the ActionDeltaItem is muted; false to make it active. |
using namespace XSI; Application app; // NewScene command CValueArray cargs; CValue oarg; cargs.Add( L"" ); cargs.Add( false ); app.ExecuteCommand( L"NewScene", cargs, oarg ); cargs.Clear(); //Add cube geometry and create the reference model Model root = app.GetActiveSceneRoot(); X3DObject myCube; root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube); // CreateModelAndConvertToRef command CString strFactPath = app.GetInstallationPath(siProjectPath) ; strFactPath += L"/Models/MyModel.emdl"; cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath ); app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg ); cargs.Clear(); Delta myDelta; // AddDelta command cargs.Add( L"Model" ); app.ExecuteCommand( L"AddDelta", cargs, oarg ); cargs.Clear(); myDelta = oarg; // Add an action of type siModificationDeltaStaticValue ActionDelta myDeltaAction = myDelta.AddAction(siModificationDeltaStaticValue); // Add the Static value item ActionDeltaItem myActionDeltaItem = myDeltaAction.AddStaticValueItem ( myCube.GetFullName() + L".kine.global.posx", 10.0); // Mute the Item myActionDeltaItem.PutMute (true); app.LogMessage(L"muting " + myActionDeltaItem.GetName()); // Apply modification myDelta.Apply(); // UpdateReferencedModel command cargs.Add( L"Model" ); app.ExecuteCommand( L"UpdateReferencedModel", cargs, oarg ); cargs.Clear();
CValue GetValue | ( | ) | const |
Returns the value of an ActionDeltaItem. Depending on the type of the ActionDeltaItem (see ActionDeltaItem::GetType) the returned CValue may contain several different types of data.
using namespace XSI; Application app; // NewScene command CValueArray cargs; CValue oarg; cargs.Add( L"" ); cargs.Add( false ); app.ExecuteCommand( L"NewScene", cargs, oarg ); cargs.Clear(); //Add cube geometry and create the reference model Model root = app.GetActiveSceneRoot(); X3DObject myCube; root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube); // CreateModelAndConvertToRef command CString strFactPath = app.GetInstallationPath(siProjectPath) ; strFactPath += L"/Models/MyModel.emdl"; cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath ); app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg ); cargs.Clear(); Delta myDelta; // AddDelta command cargs.Add( L"Model" ); app.ExecuteCommand( L"AddDelta", cargs, oarg ); cargs.Clear(); myDelta = oarg; // SaveKey command cargs.Add( L"Model.kine.local.posx,Model.kine.local.posy,Model.kine.local.posz" ); cargs.Add( 1 ); app.ExecuteCommand( L"SaveKey", cargs, oarg ); cargs.Clear(); FCurve myFCurve; ActionDelta ActionDelta0 = myDelta.GetActionDeltas().GetItem(0); ActionDeltaItem ActionDeltaItem0 = ActionDelta0.GetItems().GetItem(0); myFCurve = ActionDeltaItem0.GetValue(); LONG nbkeys = 100; myFCurve.BeginEdit(); for(LONG i = 0; i < nbkeys; i++ ) { double val = sin(1.0/(i+1.0) *10.0); myFCurve.AddKey(i, val); } myFCurve.EndEdit(); CValue MyFCValue(myFCurve); ActionDeltaItem0.PutValue(MyFCValue); // Apply modification myDelta.Apply();
Sets the value of an ActionDeltaItem. Depending on the type of the ActionDeltaItem (see ActionDeltaItem::GetType) you may specify several different types of data in in_value
.
in_value | CValue::m_t == CValue::siRef for item of type ::siModificationDeltaFCurves (CRef containing a reference to the FCurve). |
in_value | CValue::m_t == CValue::double for item of type siModificationDeltaStaticValue. |
in_value | CValue::m_t == CValue::string for item of any other type. |
using namespace XSI; Application app; // NewScene command CValueArray cargs; CValue oarg; cargs.Add( L"" ); cargs.Add( false ); app.ExecuteCommand( L"NewScene", cargs, oarg ); cargs.Clear(); //Add cube, cone and sphere geometries and create the reference model Model root = app.GetActiveSceneRoot(); X3DObject myCube, myCone, mySphere; root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube); root.AddGeometry( L"Cone", L"MeshSurface",L"",myCone); root.AddGeometry( L"Sphere", L"MeshSurface",L"",mySphere); // CreateModelAndConvertToRef command CString strFactPath = app.GetInstallationPath(siProjectPath) ; strFactPath += L"/Models/MyModel.emdl"; cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath ); app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg ); cargs.Clear(); Delta myDelta; // AddDelta command cargs.Add( L"Model" ); app.ExecuteCommand( L"AddDelta", cargs, oarg ); cargs.Clear(); myDelta = oarg; // Translate command cargs.Add(myCone.GetFullName()); cargs.Add(3.0); cargs.Add(3.0); cargs.Add(0.0); cargs.Add(L"siRelative"); cargs.Add(L"siView"); cargs.Add(L"siObj"); cargs.Add(L"siXYZ"); app.ExecuteCommand( L"Translate", cargs, oarg ); cargs.Clear(); // Translate command cargs.Add(mySphere.GetFullName()); cargs.Add(-2.0); cargs.Add(-2.0); cargs.Add(0.0); cargs.Add(L"siRelative"); cargs.Add(L"siView"); cargs.Add(L"siObj"); cargs.Add(L"siXYZ"); app.ExecuteCommand( L"Translate", cargs, oarg ); cargs.Clear(); // ApplyCns command cargs.Add( L"Position" ); cargs.Add(myCube.GetFullName()); cargs.Add(myCone.GetFullName()); app.ExecuteCommand( L"ApplyCns", cargs, oarg ); cargs.Clear(); ActionDelta ActionDelta0 = myDelta.GetActionDeltas().GetItem(0); CRefArray ActionDeltaItems = ActionDelta0.GetItems(); for ( LONG i=0; i<ActionDeltaItems.GetCount(); ++i ) { ActionDeltaItem item = ActionDeltaItems[i]; item.PutValue(L"Scene_Root." + mySphere.GetFullName()); } // Apply modification myDelta.Apply(); // UpdateReferencedModel command cargs.Add( L"Model" ); app.ExecuteCommand( L"UpdateReferencedModel", cargs, oarg ); cargs.Clear();
CString GetAuditInfo | ( | ) |
Returns the Audit Information on the ActionDeltaItem.