The 3D ACIS® Modeler (ACIS) is Spatial’s prominent 3D solid modeling engine. 3D InterOp is a CAD data translation framework (Interoperability)
Component:Faceter
From DocR20
The Faceter Component (FCT) generates and controls approximate polygonal representations. The polygon approximations are used in all active and static rendering, in clearance analysis, and in operations where approximations are acceptable to simplify calculations. Faceting supplies refinements to the polygons that specify how they should be generated. The ACIS Faceter supports only view-independent faceting.
Faceting generates approximate polygonal representations for the faces of entities while maintaining edge consistency between adjacent faces. Face faceting is performed by subdividing the face in parameter space with a grid whose increments are determined through refinements. Refinements specify the accuracy of the faceted representation, and also control how triangulation is performed and whether smoothing is used to improve the aspect ratios of triangles. The faceted representation of a face is also called a mesh.
Faceting is used by all active and static renderers. Refinements for faceting have a significant effect on the rendering process. The tighter the facets, the smoother the rendered surface is. However, the tighter the facets, the slower the rendering process becomes. On the other hand, the looser the facets, the faster the rendering process becomes, but the rendered surface is rougher.
Entities and their refinement attributes are stored in the save file. Because facets can be regenerated from the entities and their refinements, facet information is not stored in the save file. However, facets can be output through mesh managers to an application-determined data structure, which the application can manage as it sees fit.
| Operation | Description |
|---|---|
| Faceter Initialization and Configuration | Initialization; setting the mesh manager, refinement, and vertex template. |
| Faceting Entities | Ways to facet a model. |
| Using Facet Data | Using the facet data associated with a model. |
| Saving Facet Data | Saving facet information along with the model. |
| Deleting Facets and Termination | Termination; mesh and polyline deletion. |
New Functionality
- Faceting edges
- A new option, facet_edge_features, has been added to improve the Faceter. Sometimes edges may have wild fluctuations. When set to true, the faceting of these edges is enhanced by first using knot values of the spline representation, and then proceeding with the old algorithm. This ensures that features of these edges are captured in the faceting solution. However, there may be more facets along the edge than previously realized. The default for this option in ACIS R19 is false, whereas the default in ACIS R20 and later is true.
- Adaptive Faceting on the fringe
- A new option, adaptive_t_fringe, has been added to enable use of adaptive faceting on the fringe of faces. Refer to Adaptive Faceting for more information.
Mesh Managers
- Main article: Mesh Managers
If facet information is to be saved, the application must provide a derived class to handle the details. This involves either choosing one of the mesh managers provided by ACIS (see ACIS Mesh Managers), or writing a custom mesh manager (see Derived Mesh Managers), deriving from the MESH_MANAGER class. Making the right choice for an application ensures that…
Refinements
- Main article: Refinements
A refinement controls how the facets approximate the solid model and how accurately. A REFINEMENT is a C++ class that encapsulates all refining control parameters along with methods to read and modify the parameters.
Adaptive Faceting
- Main article: Adaptive Faceting
Adaptive faceting uses the standard facet mesh as a starting point. It inspects each facet edge in the mesh. If tolerances are not met near an edge, the edge is split by adding a new facet node.
The Faceting Algorithm
- Main article: The Faceting Algorithm
The process ("facet generation") by which the Faceter generates face nodes and polygons can be divided into four general phases…
Data Flow During a Faceting Session
- Main article: Data Flow During a Faceting Session
The following figure shows the data flow during a faceting session…
Journaling and Versioning
Journaling and Versioning are available for Faceter through the standard AcisOptions mechanism.
C++ APIs
The C++ Faceter APIs fall into several categories. A number of these are used to prepare for faceting. An example of this is
api_set_entity_refinement(entity, refinement, apply to descendants),
which attaches a refinement to an entity, with the option to apply the former to the entity's descendants ("child entities") as well. The APIs used to facet entities constitute a second category, typified by the function that facets entities marked as unfaceted:
api_facet_unfaceted_entities(owning entity, entities to facet if unfaceted).
A few APIs, such as
api_facet_area(entity, facet area),
allow access to the resulting facet data and properties. Lastly, functions such as
api_delete_entity_facets(entity, apply to descendants)
may be used delete facet data when it is no longer of use to an application.
Annotations
- Main article: Feature Naming and Annotations
The Faceter component does not generate any annotations.
Options
Important: For historical reasons, there are some global options that also affect the behavior of Faceter operations. Refer to Faceter global options.
Error Codes
- Main article: Faceter Error Codes
Upon failure of a Faceter API, error codes will be returned that explain the failure and suggest possible actions for correction.
