.. _group__a3d__rootbase:

###########
Entity Base
###########

Creates and accesses a hierarchy of descriptive names and modeller data that can be applied to any PRC entity.

Entity type is :c:enumerator:`~kA3DTypeRootBase`

This module lets you create a hierarchy of descriptive names and modeller data (called *root-level attributes*\ ) that can be applied to any PRC entity. These attributes are packaged as an :c:type:`~A3DRootBase`\ entity that is referenced from the PRC entity they describe.

The following sample code shows how to create root-level attributes for any PRC entity. In this case, the attributes include modeller data. For restrictions on specifying modeller data, see :c:struct:`~A3DMiscAttributeData`\ .


::

   A3DVoidsetAttributes(A3DEntity*p)
   {
   A3DMiscAttribute*pAttr[3];
   
   A3DMiscSingleAttributeDataSingle=A3D_MAKE_DATA(A3DMiscSingleAttributeData);
   
   Single.m_eType=kA3DModellerAttributeTypeString;
   Single.m_pcTitle="Title";
   Single.m_pcData="SimpleB-repbuildingdemonstration";
   
   A3DMiscAttributeDatasAttribs=A3D_MAKE_DATA(A3DMiscAttributeData);
   
   sAttribs.m_pcTitle=Single.m_pcTitle;
   sAttribs.m_asSingleAttributesData=&Single;
   sAttribs.m_uiSize=1;
   A3DInt32iRet=A3DMiscAttributeCreate(&sAttribs,&pAttr[0]);
   
   Single.m_pcTitle="Author";
   Single.m_pcData="HOOPSExchange";
   sAttribs.m_pcTitle=Single.m_pcTitle;
   iRet=A3DMiscAttributeCreate(&sAttribs,&pAttr[1]);
   
   Single.m_pcTitle="Company";
   Single.m_pcData="TechSoft3D";
   sAttribs.m_pcTitle=Single.m_pcTitle;
   iRet=A3DMiscAttributeCreate(&sAttribs,&pAttr[2]);
   
   A3DRootBaseDatasRootData=A3D_MAKE_DATA(A3DRootBaseData);
   
   sRootData.m_pcName="Trimmedsurface";
   sRootData.m_ppAttributes=pAttr;
   sRootData.m_uiSize=3;
   iRet=A3DRootBaseSet(p,&sRootData);
   
   //cleaninguptheallocatedattributes
   for(A3DUns32i=0;i<sRootData.m_uiSize;++i)
   {
   A3DEntityDelete(sRootData.m_ppAttributes[i]);
   }
   }

The following illustration shows the result of the sample code.

The sample code creates an :c:type:`~A3DRootBase`\ entity that houses three :c:type:`~A3DMiscAttribute`\ entities, each of which reference an :c:struct:`~A3DMiscSingleAttributeData`\ structure. Each :c:struct:`~A3DMiscSingleAttributeData`\ structure provides modeller data of type :c:enumerator:`~kA3DModellerAttributeTypeString`\ .




   :ref:`Root Type Declarations <group__a3d__root__types>`


**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:`Miscellaneous Attribute Entity <group__a3d__attribute>`

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

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


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


* :c:struct:`~A3DRootBaseData`

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

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


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


* :c:func:`~A3DRootBaseGet`
* :c:func:`~A3DRootBaseSet`
* :c:func:`~A3DRootBaseAttributeRemoveAll`
* :c:func:`~A3DRootBaseAttributeRemove`
* :c:func:`~A3DRootBaseAttributeRemoveAt`
* :c:func:`~A3DRootBaseAttributeAppend`
* :c:func:`~A3DRootBaseAttributeAdd`

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

   a3d_attribute
   ../structures/A3DRootBaseData
   ../functions/A3DRootBaseGet
   ../functions/A3DRootBaseSet
   ../functions/A3DRootBaseAttributeRemoveAll
   ../functions/A3DRootBaseAttributeRemove
   ../functions/A3DRootBaseAttributeRemoveAt
   ../functions/A3DRootBaseAttributeAppend
   ../functions/A3DRootBaseAttributeAdd


