FAQ: How ProE/Creo family tables, flexible components and boolean operations are handled by HOOPS?

It is possible to specify several ProE/Creo specific options (in A3DRWParamsProEData) while importing such CAD files with the HOOPS Exchange API, including the following ones:

Table of Contents

  • Family tables (m_eFamilyTables):
  • Flexible components (m_bFlexCompUseGenericIfNoTess) :
  • Boolean operations (m_bBoolOpUseGenericIfNoTess):
  • Recommendations

Family tables (m_eFamilyTables):

A family table represents a component with a variable representation

For example a Screw can be part of a family table: that means for the same component, Creo has a variety of representations where the screw length and/or diameter change.

A component from a family table always has a generic representation (i.e. the default model), but the designer will usually use an element with specific parameters.

This is what it looks like in Creo:

A family table for screws

Generic representation 20mm

10mm variation

100mm variation

HOOPS Exchange supports of Family Tables depends on what data are available in the native Creo file.
Depending on the model, the representation of the family table components can be:

  • Stored as a tessellated body.
  • Stored in a Creo accelerator files (.xpr, .xas), provided with the model files by the model designer. BRep may be available.
  • Not available (no tessellation, no accelerator file). In this case the generic representation is used by HOOPS Exchange to represent the component.

A family table import option impacts the behavior of HOOPS Exchange.

Further information regarding accelerator files and their generation from Creo software can be found on the official Creo documentation

Example

Creo import options used:

A3DProEFamTabAccelesratorFileOnly

Result:

If accelerator files are provided, the correct component is used

If no accelerator file is found, nothing is loaded

Creo import options used:

A3DProEFamTabOrUseTessellation

Result:

If accelerator files are provided, the correct component is loaded

If no accelerator file is available, the tessellated representation is displayed (if available)

If no accelerator file is available and no tessellation is stored, nothing is loaded

Creo import options used:

A3DProEFamTabOrUseWireAndGeneric

If no accelerator file is provided and no tessellation is stored, HOOPS Exchange fall back to the generic representation (tessellated)

Flexible components (m_bFlexCompUseGenericIfNoTess):

In Creo, a flexible is a part that can have several states, with a variety of dimensions, tolerances or materials. For example, a spring can be represented as a flexible component.

A flexible component in Creo

In HOOPS Exchange, flexible components are not fully supported. A flexible component can be loaded only in the state it was saved in Creo, and it depends on the data stored in the native file.

  • If the tessellation of the flexible component is stored, it will be loaded by default
    • The tessellation is the representation of the flexible component in the state it was saved in Creo.
  • If no tessellation is available the setting m_bFlexCompUseGenericIfNoTess adapts HOOPS Exchange behavior:
    • If the value is set to true a generic representation is loaded.
    • If the value is set to false , no representation is loaded. The component won’t be displayed.

Note: if the tessellation is stored in the file, m_bFlexCompUseGenericIfNoTess won’t have any effect.

Example

Situation:

Model saved in Creo

Result:

Situation

The tessellation is stored in the Creo file

Result:

Tessellated body corresponding to Creo

Situation

The tessellation is NOT stored in the Creo file

m_bFlexCompUseGenericIfNoTess is true

Result:

Tessellated body corresponding to the generic state. (no compression on the spring)

Situation

The tessellation is NOT stored in the Creo file

m_bFlexCompUseGenericIfNoTess is false

Result:

No body loaded

Boolean operations (m_bBoolOpUseGenericIfNoTess):

In CAD software, boolean operations are a way to define geometrical elements by performing unions or ,intersections or difference of 2 or more sub-elements.

For example, here is the result of a boolean intersection between a cube and a sphere:

Depending on the Creo version used, boolean operations may not be fully supported by HOOPS Exchange

  • For older versions, only the tessellation generated by Creo will be loaded if available
  • If no tessellation is available, the setting m_bBoolOpUseGenericIfNoTess adapts HOOPS Exchange behavior:
    • If the value is set to true a generic representation is loaded.
    • If the value is set to false , no representation is loaded. The component won’t be displayed.

Note: if the Creo version used is too recent, or if the tessellation is stored in the file then m_bBoolOpUseGenericIfNoTess won’t have any effect.

Example

Situation

Model saved in Creo

Result

Situation

The tessellation is stored in the Creo file

Result


Tessellated body corresponding to Creo

Situation

The tessellation is NOT stored in the Creo file

m_bBoolOpUseGenericIfNoTess is true

Result


Tessellated body corresponding to the generic state. (the base cube without cropped corners)

Situation

The tessellation is NOT stored in the Creo file

m_bBoolOpUseGenericIfNoTess is false

Result


No body loaded

Recommendations

  • When a model has a defect in HOOPS Exchange, we recommend to resave the file in Creo, and if possible in a more recent version of Creo.
  • We recommend trying to work as much as possible with models more recent than Creo 4 for the best results in HOOPS Exchange. If possible, resave the file in a recent version of Creo to upgrade the model.