Close

Relief for ODA Team in Ukraine

Learn more
ODA Facet Modeler
Facet Modeler Overview

ODA Facet Modeler is a solid modeling engine for geometry data that describes 3D objects called bodies. For instance, a body can be represented by a door or a table. The typical way for many CAD systems to construct such 3D objects is to form a basic two-dimensional contour (polyline) and make it three-dimensional via extrusion, rotation, etc. Several simple bodies can be used to compose a complex one via Boolean operations. A body is treated as a solid, which has an interior and an exterior. Bodies are bound by a shell that consists of polygonal flat faces, with normals directed to the body exterior (thus, it’s possible to tell a body's inner space from its outer one).

Facet Modeler depends on Kernel SDK. To use Facet Modeler for creating custom applications, download and unpack Kernel SDK.

Basic Features

With the Facet Modeler API you are able to:

Data Structures and Topology

ODA Facet Modeler uses the boundary representation technique for solid modeling. A body consists of planar faces. Each face is represented by a plane and a list of edge loops, bounding some portion of the plane. An edge loop is a closed list of non-intersecting edges. Each edge has a pointer to its vertex (a 3D point) and pointers to the previous and next edges in the loop. Solids are sets of vertices, edges and faces with topological relations among them. Since Facet Modeler works with planar faces, rounded bodies are represented as a large set of small faces (or edges for 2D objects). In the following topics you might encounter the Deviation parameter with the default value of 0.5 which represents the accuracy of the approximation, the smaller that number is - the more accurate the approximation will be. Again, circles are represented as sets of edges. There is a lower bound for edges per circle with the default value of 8 and an upper bound with the default value of 128.

For example, there is a sample body (box) below. It consists of six faces; each face has one edge loop, consisting of four edges. Edge loops have a counter-clockwise direction with respect to face plane normals, which are pointed at the exterior of the body.

Topological Entities

These entities are present in Facet Modeler:

  • Vertex — A 3D point that has pointers to the next and the previous vertices.
  • Edge — A segment of a line with only one vertex that shows its starting point. One edge’s end is the next edge’s starting point. Edges have pointers to the next and the previous edges and are designed to be stored in closed loops. In other words, an edge cannot exist without being in a closed edge loop.
  • Face — A polygon that may have holes. The first edge loop in the face represents its outer border and has a counter-clockwise direction. Other loops represent holes in this polygon and have a clockwise direction with respect to the face plane normal. Loops should not intersect each other or be self-intersected. In the picture below you can see a blue edge loop representing the outer border and a black edge loop representing a hole in the polygon.

  • Body — a list of connected faces. Body is called closed if every edge from one face has a pair edge from an adjacent face. Otherwise it is open. Body is called consistent if it meets the following conditions:
    • Every face at least has an outer loop;
    • The outer loop of each face is oriented counter-clockwise;
    • The inner loops of each face are oriented clockwise;
    • For an edge, its pair edge's pair is the original edge;
    • Every edge belongs to some face (there are no dangling edges);
    • Edge and it's pair edge belong to different faces.
  • Tag — A block of data that stores additional information about the object (color, visibility flag for rendering, etc.). Arbitrary data can also be stored in a tag. Each topological entity in ODA Facet Modeler can have a tag on it.

To get more information on how to work with B-Rep data, see Work with B-Rep Data in Facet Modeler.
To get more information on how to perform Boolean operations, see the Perform Boolean Operations topic.

See Also

Create Your First Facet Modeler Application
Work with B-Rep Data in Facet Modeler
Perform Boolean Operations
Create Objects via Revolution
Create Objects via Extrusion
Perform Slicing Operations
Copyright © 2002 – 2022. Open Design Alliance. All rights reserved.