A3DAsmProductOccurrenceData

Fields

A3DUns32

m_uiPOccurrencesSize

A3DAsmProductOccurrence **

m_ppPOccurrences

A3DAsmPartDefinition *

m_pPart

A3DAsmProductOccurrence *

m_pPrototype

A3DAsmProductOccurrence *

m_pExternalData

A3DUns8

m_ucBehaviour

A3DMiscTransformation *

m_pLocation

A3DUns32

m_uiEntityReferenceSize

A3DMiscEntityReference **

m_ppEntityReferences

A3DUns32

m_uiAnnotationsSize

A3DMkpAnnotationEntity **

m_ppAnnotations

A3DUns32

m_uiViewsSize

A3DMkpView **

m_ppViews

A3DAsmFilter *

m_pEntityFilter

A3DUns32

m_uiDisplayFilterSize

A3DAsmFilter **

m_ppDisplayFilters

A3DUns32

m_uiSceneDisplayParameterSize

A3DGraphSceneDisplayParametersData *

m_psSceneDisplayParameters

A3DEProductLoadStatus

m_eProductLoadStatus

A3DUns32

m_uiProductFlags

A3DBool

m_bUnitFromCAD

A3DDouble

m_dUnit

A3DDouble

m_dDensityVolumeUnit

A3DDouble

m_dDensityMassUnit

A3DEModellerType

m_eModellerType

A3DBool

m_bInactivateAnnotations

A3DUns32

m_uiMaterialAndVisualisationSetupSize

A3DMaterialAndVisualisationInfos *

m_psMaterialAndVisualisationSetup

A3DUns32

m_uiCameraSize

A3DGraphCamera **

m_ppCamera

A3DUns32

m_uiFeatureBasedEntitiesSize

A3DFRMTree **

m_ppFeatureBasedEntities

A3DUns32

m_uiConstraintsSize

A3DAsmConstraint **

m_ppConstraints

A3DAsmPublicationSet *

m_pPublicationSet

Detailed Description

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” hierachy 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.”

Version

2.0

Sample code

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

POccurrence* function GetExternalData(POccurrence* pocc)
{
    If pocc->pExternalData is null and pocc->pPrototype is not null
        Return GetExternalData(pocc->pPrototype)
    Else
        Return pocc->pExternalData
}

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

POccurrence* GetPart(POccurrence* pocc)
{
    If pocc->pPart is not null
        Return pocc->pPart

    POccurrence* po = pocc->pPrototype
    While po is not null
        If po->pPart is not null
            Return po->pPart
        Else
            po = po->pPrototype

    If pocc->uiPOccurrencesSize = 0 and GetExternalData(pocc) is not null
        Return GetExternalData(pocc)->pPart

    Return null
}

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

CartesianTransfo* GetLocation(POccurrence* pocc)
{
    If GetExternalData(pocc) is not null
        If GetExternalData(pocc)->pLocation is not null
            Return GetExternalData(pocc)->pLocation
    If pocc->pLocation is null and pocc->pPrototype is not null
        Return GetLocation(pocc->pPrototype)
    Return pocc->pLocation
}

Note

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

Public Members

A3DUns32 m_uiPOccurrencesSize

The size of m_ppPOccurrences.

A3DAsmProductOccurrence **m_ppPOccurrences

Array of A3DAsmProductOccurrence references.

A3DAsmPartDefinition *m_pPart

Pointer to an A3DAsmPartDefinition entity.

May be NULL.

A3DAsmProductOccurrence *m_pPrototype

Pointer to a product prototype.

May be NULL.

A3DAsmProductOccurrence *m_pExternalData

Pointer to a external data product.

May be NULL.

A3DUns8 m_ucBehaviour

For a future use.

A3DMiscTransformation *m_pLocation

Pointer to an A3DMiscCartesianTransformation or A3DMiscGeneralTransformation entity.

May be NULL.

A3DUns32 m_uiEntityReferenceSize

The size of m_ppEntityReferences.

A3DMiscEntityReference **m_ppEntityReferences

Entity references.

A3DUns32 m_uiAnnotationsSize

The size of m_ppAnnotations.

A3DMkpAnnotationEntity **m_ppAnnotations

Annotation entities stored under the current product occurrence.

A3DUns32 m_uiViewsSize

The size of m_ppViews.

A3DMkpView **m_ppViews

Views stored under the current product occurrence.

A3DAsmFilter *m_pEntityFilter

Array of A3DAsmFilter references on entities that are kept by the occurrence.

A3DUns32 m_uiDisplayFilterSize

The size of m_ppDisplayFilters.

A3DAsmFilter **m_ppDisplayFilters

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

Several filters can be specified but only one is active.

A3DUns32 m_uiSceneDisplayParameterSize

The size of m_psSceneDisplayParameters.

A3DGraphSceneDisplayParametersData *m_psSceneDisplayParameters

Array of SceneDisplayParameters.

A3DEProductLoadStatus m_eProductLoadStatus

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

Version

2.1

A3DUns32 m_uiProductFlags

Refer to Bit field flag definitions for product occurrences for explanations.

Version

2.1

A3DBool m_bUnitFromCAD

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

Version

2.1

A3DDouble m_dUnit

Unit.

Version

2.1

A3DDouble m_dDensityVolumeUnit

Volume unit used for the physical material density.

1.0 refers to meter cube

A3DDouble m_dDensityMassUnit

Mass unit used for the physical material density.

1.0 refers to kilogram

A3DEModellerType m_eModellerType

The Modeller used to create the Model.

Used only in Get method.

A3DBool m_bInactivateAnnotations

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

Version

7.0

A3DUns32 m_uiMaterialAndVisualisationSetupSize

The size of m_psMaterialAndVisualisationSetup.

A3DMaterialAndVisualisationInfos *m_psMaterialAndVisualisationSetup

MaterialAndVisualisation Informations to apply in the assembly tree, modify by assembly.

A3DUns32 m_uiCameraSize

The size of m_ppCamera.

A3DGraphCamera **m_ppCamera

Array of camera.

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

Version

11.1

A3DUns32 m_uiFeatureBasedEntitiesSize

The size of m_ppFeatureBasedEntities.

A3DFRMTree **m_ppFeatureBasedEntities

Feature based entity, contains all information of feature.

A3DUns32 m_uiConstraintsSize

The size of m_ppConstraints.

Version

14.0

A3DAsmConstraint **m_ppConstraints

List of the constraints define in this assembly.

Version

14.0

A3DAsmPublicationSet *m_pPublicationSet

Published elements.

Version

24.0