# A3DAsmProductOccurrenceData

struct `A3DAsmProductOccurrenceData`

  A structure specifying product occurrence data.

  Global concepts definitions:

  - ModelFile: this is the top level of the assembly tree
  - ProductOccurrences: these are the intermediate nodes of the assembly tree. Each ProductOccurrence can hold a PartDefinition (see below), several ProductOccurrences as sons, a Prototype (see below) or an ExternalData (see below). Each one can carry its own unit.
  - Prototype: special case for a ProductOccurrence. A Prototype is a sub-assembly that might be modified outside the Modelfile. For instance, a CATProduct or a CATPart being referenced by a CATIA V5 assembly will be loaded as a Prototype, for the related physical file might change during design process. The whole internal hierarchy of this “file” can be explored from the Modelfile, as it was a classical ProductOccurrence, but any modification inside this sub-assembly will lead to an update of the whole Modelfile, in order to reference proper entities.
  - ExternalData: special case for a ProductOccurrence. an ExternalData is a sub-assembly that cannot be “managed” from the Modelfile. The corresponding Partdefinitions cannot be modified (color, visibility, position, etc.). For instance, this can be a IGES file being embedded in a CATproduct.
  - PartDefinition: this is the terminal level of an assembly. No “organized” hierarchy can be defined below that level. Only groups (refer to `A3DRiSet`definition) might be referenced as unorganized groups. A Partdefinition must be referenced in a Modelfile via a ProductOccurrence. Conversely, any terminal ProductOccurrence of a fully loaded Modelfile must refereence a PartDefinition.

  A product occurrence can have the following data:

  - PartDefinition: Pointer to the corresponding part definition. Can be NULL. See above.
  - ProductPrototype: Pointer to the corresponding product occurrence prototype. Can be NULL. See above.
  - ExternalData: Pointer to the corresponding external product occurrence. Can be NULL. See above.
  - Sons: Array of pointers to the son product occurrences. See above.
  - Location: Relative placement of the product occurrence in the father local coordinate system. Can be NULL.When applications interpret an assembly that uses subassemblies, they resolve links in the product prototype and external data entities and import the content described by those links. That is, those entities are resolved in the same way that software macros are resolved.

  In addition to the data described in the `A3DAsmProductOccurrenceData`structure, an `A3DAsmProductOccurrence`entity can have attributes specified through the `A3DRootBase`and `A3DMiscCascadedAttributes`entities.

  For version 2.1, new fields were added to the end of this structure. These new fields are identified with the tag “version 2.1.”

  > 2.0

  ## Sample code

  The following pseudocode demonstrates how to get the external data of a product occurrence.

      POccurrence*functionGetExternalData(POccurrence*pocc)
      {
      Ifpocc->pExternalDataisnullandpocc->pPrototypeisnotnull
      ReturnGetExternalData(pocc->pPrototype)
      Else
      Returnpocc->pExternalData
      }

  The following pseudocode demonstrates how to get the part definition of a product occurrence.

      POccurrence*GetPart(POccurrence*pocc)
      {
      Ifpocc->pPartisnotnull
      Returnpocc->pPart

      POccurrence*po=pocc->pPrototype
      Whilepoisnotnull
      Ifpo->pPartisnotnull
      Returnpo->pPart
      Else
      po=po->pPrototype

      Ifpocc->uiPOccurrencesSize=0andGetExternalData(pocc)isnotnull
      ReturnGetExternalData(pocc)->pPart

      Returnnull
      }

  The following pseudocode demonstrates how to get the location of a product occurrence.

      CartesianTransfo*GetLocation(POccurrence*pocc)
      {
      IfGetExternalData(pocc)isnotnull
      IfGetExternalData(pocc)->pLocationisnotnull
      ReturnGetExternalData(pocc)->pLocation
      Ifpocc->pLocationisnullandpocc->pPrototypeisnotnull
      ReturnGetLocation(pocc->pPrototype)
      Returnpocc->pLocation
      }

      In case of multi-units assemblies, the unit must be applied to the matrix of the transformations.

  ## Index

  Variables

  - `m_uiPOccurrencesSize`
  - `m_ppPOccurrences`
  - `m_pPart`
  - `m_pPrototype`
  - `m_pExternalData`
  - `m_ucBehaviour`
  - `m_pLocation`
  - `m_uiEntityReferenceSize`
  - `m_ppEntityReferences`
  - `m_uiAnnotationsSize`
  - `m_ppAnnotations`
  - `m_uiViewsSize`
  - `m_ppViews`
  - `m_pEntityFilter`
  - `m_uiDisplayFilterSize`
  - `m_ppDisplayFilters`
  - `m_uiSceneDisplayParameterSize`
  - `m_psSceneDisplayParameters`
  - `m_eProductLoadStatus`
  - `m_uiProductFlags`
  - `m_bUnitFromCAD`
  - `m_dUnit`
  - `m_dDensityVolumeUnit`
  - `m_dDensityMassUnit`
  - `m_eModellerType`
  - `m_bInactivateAnnotations`
  - `m_uiMaterialAndVisualisationSetupSize`
  - `m_psMaterialAndVisualisationSetup`
  - `m_uiCameraSize`
  - `m_ppCamera`
  - `m_uiFeatureBasedEntitiesSize`
  - `m_ppFeatureBasedEntities`
  - `m_uiConstraintsSize`
  - `m_ppConstraints`
  - `m_pPublicationSet`
  - `m_uiLayersSize`
  - `m_ppLayers`

Variables

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiPOccurrencesSize`
  `A3DUns32`

  The size of `m_ppPOccurrences`.

A3DAsmProductOccurrence **`A3DAsmProductOccurrenceData.``m_ppPOccurrences`
  `A3DAsmProductOccurrence`**

  Array of `A3DAsmProductOccurrence`references.

A3DAsmPartDefinition *`A3DAsmProductOccurrenceData.``m_pPart`
  `A3DAsmPartDefinition`*

  Pointer to an `A3DAsmPartDefinition`entity.

  May be NULL.

A3DAsmProductOccurrence *`A3DAsmProductOccurrenceData.``m_pPrototype`
  `A3DAsmProductOccurrence`*

  Pointer to a product prototype.

  May be NULL.

A3DAsmProductOccurrence *`A3DAsmProductOccurrenceData.``m_pExternalData`
  `A3DAsmProductOccurrence`*

  Pointer to an external product.

  May be NULL.

A3DUns8 `A3DAsmProductOccurrenceData.``m_ucBehaviour`

  deprecated

  `A3DUns8`

  Warning

  This member is deprecated. It will be removed in version 2027.1.0.

A3DMiscTransformation *`A3DAsmProductOccurrenceData.``m_pLocation`
  `A3DMiscTransformation`*

  Pointer to an `A3DMiscCartesianTransformation`or `A3DMiscGeneralTransformation`entity.

  May be NULL.

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiEntityReferenceSize`
  `A3DUns32`

  The size of `m_ppEntityReferences`.

A3DMiscEntityReference **`A3DAsmProductOccurrenceData.``m_ppEntityReferences`
  `A3DMiscEntityReference`**

  Entity references.

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiAnnotationsSize`
  `A3DUns32`

  The size of `m_ppAnnotations`.

A3DMkpAnnotationEntity **`A3DAsmProductOccurrenceData.``m_ppAnnotations`
  `A3DMkpAnnotationEntity`**

  Annotation entities stored under the current product occurrence.

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiViewsSize`
  `A3DUns32`

  The size of `m_ppViews`.

A3DMkpView **`A3DAsmProductOccurrenceData.``m_ppViews`
  `A3DMkpView`**

  Views stored under the current product occurrence.

A3DAsmFilter *`A3DAsmProductOccurrenceData.``m_pEntityFilter`
  `A3DAsmFilter`*

  Pointer to a `A3DAsmFilter`.

  Used to manage the properties, like visibility, of entities directly owned by the current product occurrence, like the geometry contained in its `m_pPart`. May be NULL.

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiDisplayFilterSize`
  `A3DUns32`

  The size of `m_ppDisplayFilters`.

A3DAsmFilter **`A3DAsmProductOccurrenceData.``m_ppDisplayFilters`
  `A3DAsmFilter`**

  Array of Filter references that specify the filters to use for display.

  Several filters can be specified but only one is active.

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiSceneDisplayParameterSize`
  `A3DUns32`

  The size of `m_psSceneDisplayParameters`.

A3DGraphSceneDisplayParametersData *`A3DAsmProductOccurrenceData.``m_psSceneDisplayParameters`
  `A3DGraphSceneDisplayParametersData`*

  Array of SceneDisplayParameters.

A3DEProductLoadStatus `A3DAsmProductOccurrenceData.``m_eProductLoadStatus`
  `A3DEProductLoadStatus`

  Current load status for the ProductOccurrence, where values are defined by the `A3DEProductLoadStatus`enum.

  > 2.1

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiProductFlags`
  `A3DUns32`

  Refer to Bit field flag definitions for product occurrencesfor explanations.

  > 2.1

A3DBool `A3DAsmProductOccurrenceData.``m_bUnitFromCAD`
  `A3DBool`

  Indicates whether `m_dUnit`(below) was obtained from the native CAD file.

  > 2.1

A3DDouble `A3DAsmProductOccurrenceData.``m_dUnit`
  `A3DDouble`

  Unit.

  > 2.1

A3DDouble `A3DAsmProductOccurrenceData.``m_dDensityVolumeUnit`
  `A3DDouble`

  Volume unit used in the original CAD application for the physical material density `A3DMiscMaterialPropertiesData::m_dDensity`.

  1.0 refers to meter cube

A3DDouble `A3DAsmProductOccurrenceData.``m_dDensityMassUnit`
  `A3DDouble`

  Mass unit used in the original CAD application for the physical material density `A3DMiscMaterialPropertiesData::m_dDensity`.

  1.0 refers to kilogram

A3DEModellerType `A3DAsmProductOccurrenceData.``m_eModellerType`
  `A3DEModellerType`

  The Modeller used to create the Model.

  Used only in Get method.

A3DBool `A3DAsmProductOccurrenceData.``m_bInactivateAnnotations`
  `A3DBool`

  If set to true, annotations are defined but inactivated in the product.

  > 7.0

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiMaterialAndVisualisationSetupSize`
  `A3DUns32`

  The size of `m_psMaterialAndVisualisationSetup`.

A3DMaterialAndVisualisationInfos *`A3DAsmProductOccurrenceData.``m_psMaterialAndVisualisationSetup`
  `A3DMaterialAndVisualisationInfos`*

  MaterialAndVisualisation information to apply to the assembly tree, modified by assembly.

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiCameraSize`
  `A3DUns32`

  The size of `m_ppCamera`.

A3DGraphCamera **`A3DAsmProductOccurrenceData.``m_ppCamera`
  `A3DGraphCamera`**

  Array of camera.

  This camera are referenced in the scene display parameters and the views of this Product occurrence.

  > 11.1

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiFeatureBasedEntitiesSize`
  `A3DUns32`

  The size of `m_ppFeatureBasedEntities`.

A3DFRMTree **`A3DAsmProductOccurrenceData.``m_ppFeatureBasedEntities`
  `A3DFRMTree`**

  Feature based entity, contains all information of feature.

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiConstraintsSize`
  `A3DUns32`

  The size of `m_ppConstraints`.

  > 14.0

A3DAsmConstraint **`A3DAsmProductOccurrenceData.``m_ppConstraints`
  `A3DAsmConstraint`**

  List of the constraints define in this assembly.

  > 14.0

A3DAsmPublicationSet *`A3DAsmProductOccurrenceData.``m_pPublicationSet`
  `A3DAsmPublicationSet`*

  Published elements.

  > 24.0

A3DUns32 `A3DAsmProductOccurrenceData.``m_uiLayersSize`
  `A3DUns32`

  The size of `m_ppLayers`.

  > 25.4

A3DAsmLayer **`A3DAsmProductOccurrenceData.``m_ppLayers`
  `A3DAsmLayer`**

  Array of layers.

  > 25.4

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Exchange in your own language, or choose a sample question below to start a conversation:

What is HOOPS Exchange?
What are the latest release notes for HOOPS Exchange?
How do I start evaluating HOOPS Exchange?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...