Functions | |
A3DStatus | A3DAsmGetFixedComponents (const A3DAsmProductOccurrence *pOwnerNode, A3DUns32 *puiNumberOfFixedSubNodes, A3DAsmProductOccurrence ***pppFixedSubNodes) |
This function gives a list of components with locked position in a specific level. The fixed sub nodes can be direct sons or nodes defined in below levels. More... | |
A3DStatus | A3DAsmGetFixedTogetherComponents (const A3DAsmProductOccurrence *pOwnerNode, A3DUns32 *ppuiSizeCount, A3DUns32 **ppuiSizeArray, A3DAsmProductOccurrence ***pppFixedTogetherNodes) |
This function gives a list of bodies rigidly connecting. More... | |
A3DStatus | A3DAsmGetFlexibleComponents (const A3DAsmProductOccurrence *pOwnerNode, A3DUns32 *puiNumberOfFlexibleSubNodes, A3DAsmProductOccurrence ***pppFlexibleSubNodes) |
By default, all members defined in a sub assembly are considered as fix together and it is not possible to move one of them without moving the others. A Flexible node is a sub assembly that allows new position for his sons defined by one of his father node. More... | |
Detailed Description
Through the assembly there are constraints of fixity, of a component regarding the upper node or of between several components, can be exploited to regroup the components in body. A body being a set of components rigidly linked together. The following three functions provide this information.
Function Documentation
A3DStatus A3DAsmGetFixedComponents | ( | const A3DAsmProductOccurrence * | pOwnerNode, |
A3DUns32 * | puiNumberOfFixedSubNodes, | ||
A3DAsmProductOccurrence *** | pppFixedSubNodes | ||
) |
This function gives a list of components with locked position in a specific level. The fixed sub nodes can be direct sons or nodes defined in below levels.
- Version
- 11.2
- Returns
- A3D_INVALID_DATA_STRUCT_SIZE
-
A3D_INVALID_DATA_STRUCT_NULL
-
A3D_SUCCESS.
- A3DAsmGetFixedComponents called with POA1 as owner will get POB1 as fixed node
- A3DAsmGetFixedComponents called with PO root as owner will get POB2 as fixed node
A3DStatus A3DAsmGetFixedTogetherComponents | ( | const A3DAsmProductOccurrence * | pOwnerNode, |
A3DUns32 * | ppuiSizeCount, | ||
A3DUns32 ** | ppuiSizeArray, | ||
A3DAsmProductOccurrence *** | pppFixedTogetherNodes | ||
) |
This function gives a list of bodies rigidly connecting.
- Version
- 11.2
With the following model, there will be two arrays: {POA1; POA2} and {POA4; POA5; POA6}. The function has to be recalled with no owner to desallocate arrays.

The following code show how to use the function.
- A3DUns32 t = 0, u, v, uiSizeCount = 0;A3DUns32* puiSizeArray = nullptr;A3DAsmProductOccurrence** ppFixedTogetherNodes = nullptr;if ( A3DAsmGetFixedTogetherComponents(pOwnerNode, &uiSizeCount, &puiSizeArray, &ppFixedTogetherNodes) == A3D_SUCCESS && uiSizeCount != 0){for (u = 0; u < uiSizeCount; u++){for (v = 0; v < puiSizeArray[u]; v++)// new set of components fixed together{ppFixedTogetherNodes[t];t++;}}A3DAsmGetFixedTogetherComponents(nullptr, &uiSizeCount, &puiSizeArray, &ppFixedTogetherNodes)); //to free arrays}
A3DStatus A3DAsmGetFlexibleComponents | ( | const A3DAsmProductOccurrence * | pOwnerNode, |
A3DUns32 * | puiNumberOfFlexibleSubNodes, | ||
A3DAsmProductOccurrence *** | pppFlexibleSubNodes | ||
) |
By default, all members defined in a sub assembly are considered as fix together and it is not possible to move one of them without moving the others. A Flexible node is a sub assembly that allows new position for his sons defined by one of his father node.
- Version
- 11.2
- Returns
- A3D_INVALID_DATA_STRUCT_SIZE
-
A3D_INVALID_DATA_STRUCT_NULL
-
A3D_SUCCESS.
- POA1 not flexible / Rigid The sub assembly is considered as one body, so all positions are fixed by the lock POROOT on POA2/POB1POA1/POB2
- POA2 flexible POA2 / POB1 is fixed by the lock POA2 on POB1 POA2/POB2 is fixed, by the lock POROOT on POA2/POB2 POA2/POB3 is movable