Component:Faceter
From DocR23
Faceter Component
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. You supply a facet_options object to the Faceter that specifies how the polygons 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 the facet_options object. This specifies the accuracy of the faceted representation, and also controls the details of how triangulation is performed. The faceted representation of a face is also called a mesh.
Faceting is used by all active and static renderers. The facet options 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. Refer to Facet Options for more details.
Facet information is not stored in saved files. However, facets can be output through Mesh Managers to an application-determined data structure, which the application can manage as it sees fit.
Faceter Operations
| Operation | Description |
|---|---|
| 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 | Mesh and polyline deletion. |
| Optional Configuration | Ways to customize the mesh you get from the Faceter. |
What's New in Faceter
Faceter Topics
Getting Started with the ACIS Faceter
Getting Started with the ACIS Faceter describes how to quickly implement code to load and facet a body, and use the resulting facet mesh.
Facet Options
Facet Options control how the mesh is generated. The Facet Options interface allows you to choose a workflow (for instance, visualization), construct a facet_options object for that workflow, and then use this options object to achieve your results.
Mesh Managers
Mesh Managers control how the mesh is output to applications. For many uses the default mesh manager, INDEXED_MESH_MANAGER, is a good choice. If more customized mesh formats are desired, the application may choose another existing MESH_MANAGER or derive its own.
Incremental Faceting
For optimum faceting performance an application facets the entire part only when it is loaded; thereafter, only the modified portions of the model need to be refaceted. Incremental Faceting describes how to implement incremental faceting in your application.
Quad Tree Gridding
Quad Tree Gridding describes the gridding algorithm and provides examples illustrating the improved facet quality.
Faceter Robustness Guidelines
The ACIS Faceter is designed to generate output for almost any input model. Inevitably, you will find trade-offs between speed and robustness. In order to maintain good performance over a broad spectrum of input models, the Faceter makes very little effort to repair parts for visualization. Instead, the Faceter reports problems it encounters, and as a result, bad input models may generate poor output. Faceter Robustness Guidelines describes problems in models that can cause problems during faceting.
Multithreading
Multithreaded Faceting describes how to use multithreaded faceting and its limitations.
Journaling and Versioning
Journaling and Versioning are available for Faceter through the standard AcisOptions mechanism. Refer to HowTo: Facet with R20 behavior to learn how to use versioning.
Faceter Interface
C++ Interface
The Faceter supports an API that includes the functions in the following table.
| Function | Description |
|---|---|
| api_facet_entity | Facets all faces and edges of the given body. |
| api_facet_entities | Facets the specified faces and any edges where both incident faces are included in the input list. |
| api_get_facet_edge_points | Gets edge facet points that were generated when the edge's incident faces are faceted. |
| api_facet_area | Calculates the area of the faceted portion of an entity. |
| api_delete_entity_facets | Deletes facet data when it is no longer of use to an application. |
For a more complete description of the Faceter algorithm and interface, refer to Faceting Algorithm and Interface.
For a complete listing of all Faceter API functions, refer to Faceter API Functions.
The behavior of the Faceter is controlled by an options object. For more information, refer to Facet Options.
The output of the Faceter is controlled by a mesh manager. For more information, refer to Mesh Managers.
Scheme Interface
The functionality of the Faceter can be accessed through the Scheme AIDE. For a complete listing of all Faceter-related Scheme extensions, refer to Faceter - Scheme Extensions.
Options
For historical reasons, some global options affect the behavior of Faceter operations. Refer to Faceter global options.
Error Codes
Upon failure of a Faceter API function, an error code will be returned that explains the failure and suggests possible actions for correction. For a list of these error codes, refer to Faceter Error Codes. If the Faceter encounters problem situations that do not cause an API failure, it will populate the outcome object with information about the problems. Refer to Faceter Problem Reporting for more details.
Annotations
The Faceter does not alter the geometry or topology of the model; therefore, it does not generate any annotations.