Feature Tree
CAD model are represented by a feature tree.
A model tree is composed by nodes. Each of these nodes is a build step, whose definition parameters are stored in a feature. The following model is defined with construction entities, then a pad, and a hole.
The model trees are accessible through the product occurrence by using the function A3DAsmProductOccurrenceGet(), and the function A3DFRMTreeGet() will populate the data structure. An array of feature trees is stored in A3DAsmProductOccurrenceData, usually there is only one feature tree by model.
A3DUns32u;
A3DAsmProductOccurrenceDatasData;
A3D_INITIALIZE_DATA(A3DAsmProductOccurrenceData,sData);
if(A3DAsmProductOccurrenceGet(pOccurrence,&sData)==A3D_SUCCESS)
{
for(u=0;u<sData.m_uiFeatureBasedEntitiesSize;++u)
{
A3D_INITIALIZE_DATA(A3DFRMTreeData,sTreeData);
A3DFRMTreeGet(sData.m_ppFeatureBasedEntities[u],&sTreeData);
//...
A3DFRMTreeGet(NULL,&sTreeData);
}
A3DAsmProductOccurrenceGet(NULL,&sData);
}
In addition, the function A3DFRMGetSpecificNodes() allows to directly get a list of features with a specific cad type. For instance, to get all features HOLE defined in the tree. In this case,
A3DUns32iSize;
A3DFRMFeature**ppFeatureNodes;
A3DFRMGetSpecificNodes(pFRMFeatureTree,kA3DFRMEnumValue_CadType_Hole,&iSize,&ppFeatureNodes);
//...
A3DFRMGetSpecificNodes(NULL,kA3DFRMEnumValue_CadType_Hole,&iSize,&ppFeatureNodes);
Note that A3DFRMTree object is an abstraction of A3DRiSet, so it possible to directly call the function A3DFRMTreeGet() on a set
A3DEEntityTypeeType=kA3DTypeUnknown;
A3DEntityGetType(pRepresentationItem,&eType);
if(eType==kA3DTypeRiSet)
{
A3DFRMTreeDataoData;
A3D_INITIALIZE_DATA(A3DFRMTreeData,sTreeData);
if(A3DFRMTreeGet(pRepresentationItem,&sTreeData)==A3D_SUCCESS)
{
A3DFRMTreeGet(NULL,&sTreeData);
}
else
{
//regularRiSet
}
}
Parameters
pPartDefinition: part definition to query
puiSize: number of feature trees contained
pppFeatureTrees: feature tree array
Returns
A3D_SUCCESSon success, or an error code on failure
Structures
Functions