Feature Tree

Parent module: Feature module

group a3d_feature_tree_module

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. ../_images/frm_tree.png

The model trees are accessible through the product occurence 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.

A3DUns32 u;
A3DAsmProductOccurrenceData sData;
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,

A3DUns32 iSize;
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

A3DEEntityType eType=kA3DTypeUnknown;
if(eType == kA3DTypeRiSet)
    A3DFRMTreeData oData;
    A3D_INITIALIZE_DATA(A3DFRMTreeData, sTreeData);
    if (A3DFRMTreeGet(pRepresentationItem, &sTreeData) == A3D_SUCCESS)
        A3DFRMTreeGet(NULL, &sTreeData);
        //regular RiSet

Data Structures


Feature tree data Populates the A3DFRMTreeData structure.



Populates the A3DFRMTreeData structure.


Build a List of Features corresponding to a node with specific CAD type.


Get all feature trees defined in the part definition.



Enumerate the possible types of mode type.