.. _group__a3d__feature__structure__module:

#########
Structure
#########

The feature structure allows to store information with various levels of complexity.

The hierarchy structures the data from a simple double/integer storage to a CAD feature information. It contains different types of sub-features grouped under feature parameters, depending of its family type. The family type (m_eFamily) specifies the way to interpret the type (m_uiType) as an enumeration value.

The following table shows the correspondence between the family type and the associated enum; and the expected data structure defined below.

**Feature type**

**Family** \| **Corresponding enum** \| **Description**


- Information \|  \| 
- Type \| :c:enum:`~A3DEFRMEnumDataType` \| Store a value of an enumeration (CAD type, depth type, ...)
- Double Data,Integer Data,String Data \| :c:enum:`~A3DEFRMDoubleDataType`\ , :c:enum:`~A3DEFRMIntegerDataType`\ , :c:enum:`~A3DEFRMStringDataType` \| Type of double data (unit, offset, diameter, ...)
- Value \| :c:enum:`~A3DEFRMValueType` \| Type of complex feature (Vector, Depth, ...)
- Definition \| :c:enum:`~A3DEFRMDefinitionType` \| Type of complex feature (Vector, Depth, ...)
- Definition Hole,Definition Pattern \| :c:enum:`~A3DEFRMDefinitionHoleType`\ , :c:enum:`~A3DEFRMDefinitionPatternType` \| Type of complex feature defining a hole (counter sunk, counter bore, ...) or pattern
- Feature Definition \| :c:enum:`~A3DEFRMFeatureDefinitionType` \| Store an information specific to a CAD feature (hole, pattern, extrusion, definition)
- Root \| :c:enum:`~A3DEFRMRoot` \| Corresponds to the CAD node

**Parameters**


   **pFeature**\ : feature pointer

   **pData**\ : feature data


**Returns**


   ``A3D_SUCCESS``\ on success, or an error code on failure


.. rst-class:: kind-group kind-topic

.. rubric:: Topics
   :class: kind-group-title


.. rst-class:: api-xref-list


* :ref:`Type and Specification <group__a3d__feature__type__module>`
* :ref:`Connection <group__a3d__feature__link__module>`
* :ref:`Data <group__a3d__feature__data__module>`

.. rst-class:: kind-group kind-record

.. rubric:: Structures
   :class: kind-group-title


.. rst-class:: api-xref-list


* :c:struct:`~A3DFRMFeatureData`
* :c:struct:`~A3DFRMGeomEntitiesData`

.. rst-class:: kind-group kind-function

.. rubric:: Functions
   :class: kind-group-title


.. rst-class:: api-xref-list


* :c:func:`~A3DFRMFeatureGet`
* :c:func:`~A3DFRMGeomEntitiesExtract`

.. toctree::
   :maxdepth: 1
   :hidden:

   a3d_feature_type_module
   a3d_feature_link_module
   a3d_feature_data_module
   ../structures/A3DFRMFeatureData
   ../structures/A3DFRMGeomEntitiesData
   ../functions/A3DFRMFeatureGet
   ../functions/A3DFRMGeomEntitiesExtract


