OpenLexocad
28.0
|
An advanced B-rep is a boundary representation model in which all faces, edges and vertices are explicitly represented. It is a solid with explicit topology and elementary or free-form geometry. The faces of the B-rep are of type IfcAdvancedFace. An advanced B-rep has to meet the same topological constraints as the manifold solid B-rep. (Definition from ISO/CD 16739:2011) More...
#include <AdvancedBrep.h>
Public Member Functions | |
~AdvancedBrep (void) | |
bool | setShape (pShape aShape) |
![]() | |
virtual | ~Geometry (void) |
pShape | computeShape (bool checkShape=false) |
pConstShape | getShape (void) const |
double | getPrecision () const |
void | setPrecision (double p) |
Geom::Bnd_Box | getBoundingBox () const |
![]() | |
std::shared_ptr< Document > | getDocument () const |
bool | isNew () const |
bool | isUpdated () const |
bool | isValid () const |
bool | hasErrors () const |
void | touch () |
LxIfc4::LxIfc4EntityEnum | getEntityType () const |
std::string | getEntityTypeAsString () const |
std::shared_ptr< Core::DbgInfo > | getDbgInfo () const |
DocObject (Core::DocObject *aObject) | |
virtual | ~DocObject (void) |
Core::DocObject * | __getObj__ () const |
Additional Inherited Members | |
![]() | |
Geometry ()=default | |
![]() | |
DocObject () | |
![]() | |
Core::DocObject * | _coreObj = nullptr |
An advanced B-rep is a boundary representation model in which all faces, edges and vertices are explicitly represented. It is a solid with explicit topology and elementary or free-form geometry. The faces of the B-rep are of type IfcAdvancedFace. An advanced B-rep has to meet the same topological constraints as the manifold solid B-rep. (Definition from ISO/CD 16739:2011)
An AdvancedBrep is the generalized form of a FacetedBrep. Where the FacetedBrep has to be a polyhedron - in a mathematical sense - the AdvancedBrep "only" has to be a manifold. This means, it still has to be a closed body, but its faces and edges don't have to be planar or straight anymore.
In contrast to the FacetedBrep, you can't define an AdvancedBrep via setPoints() and setModel methods. To create an AdvancedBrep, you have to define its faces and merge them into a shape, which then forms the AdvancedBrep via the setShape method (similar to the first approach described in FacetedBrep).
The following example will create a cylinder by creating each of the outer faces separately and then merging them into an advanced brep.
OpenLxApp::AdvancedBrep::~AdvancedBrep | ( | void | ) |
bool OpenLxApp::AdvancedBrep::setShape | ( | pShape | aShape | ) |