Open CASCADE Technology 7.8.2.dev
|
Auxiliary tool for merging triangulation nodes for visualization purposes. Tool tries to merge all nodes within input triangulation, but split the ones on sharp corners at specified angle. More...
#include <Poly_MergeNodesTool.hxx>
Public Member Functions | |
Poly_MergeNodesTool (const double theSmoothAngle, const double theMergeTolerance=0.0, const int theNbFacets=-1) | |
Constructor. | |
double | MergeTolerance () const |
Return merge tolerance; 0.0 by default (only 3D points with exactly matching coordinates are merged). | |
void | SetMergeTolerance (double theTolerance) |
Set merge tolerance. | |
double | MergeAngle () const |
Return merge angle in radians; 0.0 by default (normals with non-exact directions are not merged). | |
void | SetMergeAngle (double theAngleRad) |
Set merge angle. | |
bool | ToMergeOpposite () const |
Return TRUE if nodes with opposite normals should be merged; FALSE by default. | |
void | SetMergeOpposite (bool theToMerge) |
Set if nodes with opposite normals should be merged. | |
void | SetUnitFactor (double theUnitFactor) |
Setup unit factor. | |
bool | ToDropDegenerative () const |
Return TRUE if degenerate elements should be discarded; TRUE by default. | |
void | SetDropDegenerative (bool theToDrop) |
Set if degenerate elements should be discarded. | |
bool | ToMergeElems () const |
Return TRUE if equal elements should be filtered; FALSE by default. | |
void | SetMergeElems (bool theToMerge) |
Set if equal elements should be filtered. | |
NCollection_Vec3< float > | computeTriNormal () const |
Compute normal for the mesh element. | |
virtual void | AddTriangulation (const Handle< Poly_Triangulation > &theTris, const gp_Trsf &theTrsf=gp_Trsf(), const Standard_Boolean theToReverse=false) |
Add another triangulation to created one. | |
Handle< Poly_Triangulation > | Result () |
Prepare and return result triangulation (temporary data will be truncated to result size). | |
void | AddTriangle (const gp_XYZ theElemNodes[3]) |
Add new triangle. | |
void | AddQuad (const gp_XYZ theElemNodes[4]) |
Add new quad. | |
void | AddElement (const gp_XYZ *theElemNodes, int theNbNodes) |
Add new triangle or quad. | |
gp_XYZ & | ChangeElementNode (int theIndex) |
Change node coordinates of element to be pushed. | |
void | PushLastElement (int theNbNodes) |
Add new triangle or quad with nodes specified by ChangeElementNode(). | |
void | PushLastTriangle () |
Add new triangle with nodes specified by ChangeElementNode(). | |
void | PushLastQuad () |
Add new quad with nodes specified by ChangeElementNode(). | |
Standard_Integer | ElementNodeIndex (int theIndex) const |
Return current element node index defined by PushLastElement(). | |
int | NbNodes () const |
Return number of nodes. | |
int | NbElements () const |
Return number of elements. | |
int | NbDegenerativeElems () const |
Return number of discarded degenerate elements. | |
int | NbMergedElems () const |
Return number of merged equal elements. | |
Handle< Poly_Triangulation > & | ChangeOutput () |
Setup output triangulation for modifications. When set to NULL, the tool could be used as a merge map for filling in external mesh structure. | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. | |
virtual | ~Standard_Transient () |
Destructor must be virtual. | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. | |
Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
Standard_Transient * | This () const |
Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. | |
Standard_Integer | GetRefCount () const noexcept |
Get the reference counter of this object. | |
void | IncrementRefCounter () noexcept |
Increments the reference counter of this object. | |
Standard_Integer | DecrementRefCounter () noexcept |
Decrements the reference counter of this object; returns the decremented value. | |
virtual void | Delete () const |
Memory deallocator for transient classes. | |
Static Public Member Functions | |
static Handle< Poly_Triangulation > | MergeNodes (const Handle< Poly_Triangulation > &theTris, const gp_Trsf &theTrsf, const Standard_Boolean theToReverse, const double theSmoothAngle, const double theMergeTolerance=0.0, const bool theToForce=true) |
Merge nodes of existing mesh and return the new mesh. | |
Static Public Member Functions inherited from Standard_Transient | |
static constexpr const char * | get_type_name () |
Returns a type descriptor about this object. | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. | |
Additional Inherited Members | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. | |
Auxiliary tool for merging triangulation nodes for visualization purposes. Tool tries to merge all nodes within input triangulation, but split the ones on sharp corners at specified angle.
Poly_MergeNodesTool::Poly_MergeNodesTool | ( | const double | theSmoothAngle, |
const double | theMergeTolerance = 0.0, | ||
const int | theNbFacets = -1 ) |
Constructor.
[in] | theSmoothAngle | smooth angle in radians or 0.0 to disable merging by angle |
[in] | theMergeTolerance | node merging maximum distance |
[in] | theNbFacets | estimated number of facets for map preallocation |
void Poly_MergeNodesTool::AddElement | ( | const gp_XYZ * | theElemNodes, |
int | theNbNodes ) |
Add new triangle or quad.
[in] | theElemNodes | element nodes |
[in] | theNbNodes | number of element nodes, should be 3 or 4 |
|
inline |
Add new quad.
[in] | theElemNodes | 4 element nodes |
|
inline |
Add new triangle.
[in] | theElemNodes | 3 element nodes |
|
virtual |
Add another triangulation to created one.
[in] | theTris | triangulation to add |
[in] | theTrsf | transformation to apply |
[in] | theToReverse | reverse triangle nodes order |
|
inline |
Change node coordinates of element to be pushed.
[in] | theIndex | node index within current element, in 0..3 range |
|
inline |
Setup output triangulation for modifications. When set to NULL, the tool could be used as a merge map for filling in external mesh structure.
|
inline |
Compute normal for the mesh element.
|
inline |
Return current element node index defined by PushLastElement().
|
inline |
Return merge angle in radians; 0.0 by default (normals with non-exact directions are not merged).
|
static |
Merge nodes of existing mesh and return the new mesh.
[in] | theTris | triangulation to add |
[in] | theTrsf | transformation to apply |
[in] | theToReverse | reverse triangle nodes order |
[in] | theSmoothAngle | merge angle in radians |
[in] | theMergeTolerance | linear merge tolerance |
[in] | theToForce | return merged triangulation even if it's statistics is equal to input one |
|
inline |
Return merge tolerance; 0.0 by default (only 3D points with exactly matching coordinates are merged).
|
inline |
Return number of discarded degenerate elements.
|
inline |
Return number of elements.
|
inline |
Return number of merged equal elements.
|
inline |
Return number of nodes.
void Poly_MergeNodesTool::PushLastElement | ( | int | theNbNodes | ) |
Add new triangle or quad with nodes specified by ChangeElementNode().
|
inline |
Add new quad with nodes specified by ChangeElementNode().
|
inline |
Add new triangle with nodes specified by ChangeElementNode().
Handle< Poly_Triangulation > Poly_MergeNodesTool::Result | ( | ) |
Prepare and return result triangulation (temporary data will be truncated to result size).
|
inline |
Set if degenerate elements should be discarded.
|
inline |
Set merge angle.
|
inline |
Set if equal elements should be filtered.
|
inline |
Set if nodes with opposite normals should be merged.
|
inline |
Set merge tolerance.
|
inline |
Setup unit factor.
|
inline |
Return TRUE if degenerate elements should be discarded; TRUE by default.
|
inline |
Return TRUE if equal elements should be filtered; FALSE by default.
|
inline |
Return TRUE if nodes with opposite normals should be merged; FALSE by default.