This template class encapsulates ICEAttribute data as a 2D array. CICEAttributeDataArray2D objects are read-only and can be filled with the methods supplied with the ICEAttribute class. CICEAttributeDataArray2D is zero-based and can be one of the following types:
All types are associated to specific ICEAttribute 2D types. Therefore, you need to declare the right array object type that matches the ICEAttribute data type you want to access. Otherwise a runtime error will occur and the returned array will be empty.
using namespace XSI; X3DObject cone = CreatePrim( L"Cone", L"MeshSurface", L"", L""); Create2DSkeleton( 2.95, 3.34, -0.33, 4.73, 0.0, 0.0, -5.71, 0, 0, 4, CValue(""), CValue("")); AppendBone( L"eff", 3.70, -3.02, 0.30, L""); XSI::siConstructionMode mode = siConstructionModeModeling; ApplyFlexEnv( L"cone;bone,bone1,eff", true, mode ); SelectObj( L"cone.polymsh.cls.EnvelopWeightCls.Envelope_Weights", L"", L"" ); // Make sure to generate the data first cone.GetActivePrimitive().GetGeometry(0); Application xsi; ProjectItem envProp = xsi.GetSelection()[0]; ICEAttribute attr = envProp.GetICEAttributeFromName( L"EnvelopeWeightsPerDeformer" ); CICEAttributeDataArray2DFloat weight2D; attr.GetDataArray2D( weight2D ); for( ULONG i=0; i<weight2D.GetCount( ); i++ ) { CICEAttributeDataArray< float > weights; weight2D.GetSubArray( i, weights ); for( ULONG j=0; j<weights.GetCount( ); j++ ) { xsi.LogMessage( CString( weights[ j ] ) ); } } // Helpers CValue CreatePrim( const CString& in_presetobj, const CString& in_geometrytype, const CString& in_name, const CString& in_parent ) { CValueArray args(4); CValue retval; args[0]= in_presetobj; args[1]= in_geometrytype; args[2]= in_name; args[3]= in_parent; Application app; app.ExecuteCommand( L"CreatePrim", args, retval ); return retval; } CValue Create2DSkeleton( const CValue& in_rx, const CValue& in_ry, const CValue& in_rz, const CValue& in_ex, const CValue& in_ey, const CValue& in_ez, const CValue& in_nx, const CValue& in_ny, const CValue& in_nz, const CValue& in_viewtype, CValue& out_bone, CValue& out_effector ) { CValueArray args(12); CValue retval; args[0]= in_rx; args[1]= in_ry; args[2]= in_rz; args[3]= in_ex; args[4]= in_ey; args[5]= in_ez; args[6]= in_nx; args[7]= in_ny; args[8]= in_nz; args[9]= in_viewtype; Application app; app.ExecuteCommand( L"Create2DSkeleton", args, retval ); out_bone = args[10]; out_effector = args[11]; return retval; } CValue AppendBone( const CValue& in_inputobjs, const CValue& in_ex, const CValue& in_ey, const CValue& in_ez, bool in_pin ) { CValueArray args(5); CValue retval; args[0]= in_inputobjs; args[1]= in_ex; args[2]= in_ey; args[3]= in_ez; args[4]= in_pin; Application app; app.ExecuteCommand( L"AppendBone", args, retval ); return retval; } CValue ApplyFlexEnv( const CValue& in_connectionset, bool in_assignnewdeformers, XSI::siConstructionMode & io_constructionmode ) { CValueArray args(3); CValue retval; args[0]= in_connectionset; args[1]= in_assignnewdeformers; args[2]= io_constructionmode; Application app; app.ExecuteCommand( L"ApplyFlexEnv", args, retval ); io_constructionmode = (XSI::siConstructionMode)(LONG)args[2]; return retval; } void SelectObj( const CValue& in_selectionlist, const CString& in_hierarchylevel, bool in_checkobjectselectability ) { CValueArray args(3); CValue retval; args[0]= in_selectionlist; args[1]= in_hierarchylevel; args[2]= in_checkobjectselectability; Application app; CStatus st = app.ExecuteCommand( L"SelectObj", args, retval ); return; }
#include <xsi_iceattributedataarray2D.h>
Public Member Functions |
|
CICEAttributeDataArray2D () | |
~CICEAttributeDataArray2D () | |
CStatus | GetSubArray (ULONG in_index, CICEAttributeDataArray< T > &out_dataArray) const |
CICEAttributeDataArray2D | ( | ) | [inline] |
Constructor.
~CICEAttributeDataArray2D | ( | ) | [inline] |
Destructor.
CStatus GetSubArray | ( | ULONG | in_index, |
CICEAttributeDataArray< T > & | out_dataArray | ||
) | const [inline] |
Accessor to the encapsulated array. This operator is called when reading the data so the return value is read-only.
in_index | Index in the array. The index must be smaller than the number of elements in the array, otherwise the results are unpredictable. |
out_dataArray | A read-only reference to a
CICEAttributeDataArray<T> object at a specific
index. |
in_index
or
out_dataArray
is invalid.