Working with 3D Models > Overview of Supported 3D Modelers
Overview of Supported 3D Modelers

The Modeler library is responsible for working with 3D models. It is used to read and write model data, to create new model objects (for example, boxes, spheres, extrusions, etc.), to modify existing objects, and to render the objects.

ODA SDKs can be used with several different modeler libraries. The options are:

Modeler Description Library
ModelerGeometry A basic ODA SDK modeler and doesn't require an additional fee. ModelerGeometry.tx
Spatial 3D ACISĀ® Modeler Commercial third-party library that is purchased separately. SpaModeler.tx
C3D Modeler Commercial third-party library that is purchased separately. c3dModeler.tx

All of the modelers can read and write .sat files and render a model in wireframe and shaded mode. In the case of ACIS and C3D modelers, Boolean operations and other 3dSolid methods also work. Otherwise they return a "Not Implemented" status.

ModelerGeometry

ModelerGeometry is the default ODA modeler delivered with ODA Kernel SDK. Currently, it provides a basic set of 3D modeling functionality but it is actively developed and the list of features constantly expands.

To compare lists of supported features provided by ModelerGeometry and Spatial 3D ACIS Modeler, see the comparison table.

The ModelerGeometry.tx module is a support module for 3D operations of B-Rep based objects. This module doesn't use any third-party libraries; only ODA developed code is used. No additional fee is required — only a standard ODA membership.

You should not work with ModelerGeometry.tx directly; the public API of OdDb classes (methods related to 3D operations) uses internal interfaces that are implemented in ModelerGeometry.tx.

The following functionality is available for 3D B-Rep based entities after loading ModelerGeometry.tx:

  • Visualize in wire and shaded modes
  • Visualize silhouettes
  • Generate meshes according to specified control parameters (maximum distance to original model)
  • Calculate an entity boundary box and perimeter for planar regions
  • Explode an entity into parts
  • Create simple primitives (box, frustum, sphere, torus, wedge, pyramid)
  • Extrude a planar curve or planar region in the plane normal direction
  • Sweep a closed planar curve or planar region along a path
  • Revolve a closed planar curve or planar region around a specified axis of revolution
  • Use Boolean operations by request for testing and investigation
  • Use colors and materials at the model, face and edge levels
  • Build a 3D model from custom B-Rep topology
  • Import and export .sat and .sab files, up to version 7

You can use example modeler commands in the MODELER GEOMETRY command group of the ODA Debug sample application. Just load the ModelerCommands.tx module:

OdMfcApp Modeler Geometry Commands

Spatial 3D ACISĀ® Modeler

Spatial ACIS Modeler completely supports all surfaces of the .sat file format and has the widest set of functionality. More information is at https://www.opendesign.com/members/marketplace/3d-acis-modeler-integration.

C3D Modeler

C3D Modeler for ODA is a lightweight version of the full-featured C3D Modeler, and it supports the following functionality:

  • Create a sphere, box, frustum, torus, wedge, extrusion, pyramid, lofted solid, object, and more. (Available via methods in the OdDb3dSolid class.)
  • Perform Boolean operations between two solids.
  • Perform auxiliary functions for sections, slicing, interference checking, and more.

More information about C3D Modeler is at https://www.opendesign.com/members/marketplace/c3d-modeler-teigha.

Enable Modelers

To use a particular modeler in your application, load the modeler's module using the OdRxDynamicLinker::loadModule() method with the module's name as a parameter. For example, to load the ModelerGeometry module:


OdRxModulePtr pModule = odrxDynamicLinker()->loadModule(OdModelerGeometryModuleName);

To change the currently used modeler to another one:


odrxDynamicLinker()->unloadModule(OdModelerGeometryModuleName);
// For example, try to load SpaModeler.tx
OdRxModule* pSpaModule = odrxDynamicLinker()->loadModule(OdSpaModelerModuleName);

In the ODA Debug application, you can also choose the modeler with Tools -> Load Application. First unload the currently used modeler by choosing it from list and clicking Unload. This is possible only if you didn't perform a rendering yet, otherwise the module is referenced and locked. Then click Load and choose the modeler you want to use.

See Also

Compare Functionality of Available Modelers

Loading Additional Modules

Copyright © 2002 – 2020. Open Design Alliance. All rights reserved.