Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions
Poly_MergeNodesTool Class Reference

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>

Inheritance diagram for Poly_MergeNodesTool:
Inheritance graph
[legend]

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< floatcomputeTriNormal () const
 Compute normal for the mesh element.
 
virtual void AddTriangulation (const occ::handle< Poly_Triangulation > &theTris, const gp_Trsf &theTrsf=gp_Trsf(), const bool theToReverse=false)
 Add another triangulation to created one.
 
occ::handle< Poly_TriangulationResult ()
 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_XYZChangeElementNode (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().
 
int 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.
 
occ::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_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter.
 
virtual ~Standard_Transient ()=default
 Destructor must be virtual.
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object.
 
bool IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type.
 
bool IsInstance (const char *const theTypeName) const
 Returns a true value if this is an instance of TypeName.
 
bool 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.
 
bool IsKind (const char *const 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_TransientThis () 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.
 
int GetRefCount () const noexcept
 Get the reference counter of this object.
 
void IncrementRefCounter () noexcept
 Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
 
int DecrementRefCounter () noexcept
 Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
 
virtual void Delete () const
 Memory deallocator for transient classes.
 

Static Public Member Functions

static occ::handle< Poly_TriangulationMergeNodes (const occ::handle< Poly_Triangulation > &theTris, const gp_Trsf &theTrsf, const bool 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 charget_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.
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ Poly_MergeNodesTool()

Poly_MergeNodesTool::Poly_MergeNodesTool ( const double theSmoothAngle,
const double theMergeTolerance = 0.0,
const int theNbFacets = -1 )

Constructor.

Parameters
[in]theSmoothAnglesmooth angle in radians or 0.0 to disable merging by angle
[in]theMergeTolerancenode merging maximum distance
[in]theNbFacetsestimated number of facets for map preallocation

Member Function Documentation

◆ AddElement()

void Poly_MergeNodesTool::AddElement ( const gp_XYZ * theElemNodes,
int theNbNodes )

Add new triangle or quad.

Parameters
[in]theElemNodeselement nodes
[in]theNbNodesnumber of element nodes, should be 3 or 4

◆ AddQuad()

void Poly_MergeNodesTool::AddQuad ( const gp_XYZ theElemNodes[4])
inline

Add new quad.

Parameters
[in]theElemNodes4 element nodes

◆ AddTriangle()

void Poly_MergeNodesTool::AddTriangle ( const gp_XYZ theElemNodes[3])
inline

Add new triangle.

Parameters
[in]theElemNodes3 element nodes

◆ AddTriangulation()

virtual void Poly_MergeNodesTool::AddTriangulation ( const occ::handle< Poly_Triangulation > & theTris,
const gp_Trsf & theTrsf = gp_Trsf(),
const bool theToReverse = false )
virtual

Add another triangulation to created one.

Parameters
[in]theTristriangulation to add
[in]theTrsftransformation to apply
[in]theToReversereverse triangle nodes order

◆ ChangeElementNode()

gp_XYZ & Poly_MergeNodesTool::ChangeElementNode ( int theIndex)
inline

Change node coordinates of element to be pushed.

Parameters
[in]theIndexnode index within current element, in 0..3 range

◆ ChangeOutput()

occ::handle< Poly_Triangulation > & Poly_MergeNodesTool::ChangeOutput ( )
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.

◆ computeTriNormal()

NCollection_Vec3< float > Poly_MergeNodesTool::computeTriNormal ( ) const
inline

Compute normal for the mesh element.

◆ ElementNodeIndex()

int Poly_MergeNodesTool::ElementNodeIndex ( int theIndex) const
inline

Return current element node index defined by PushLastElement().

◆ MergeAngle()

double Poly_MergeNodesTool::MergeAngle ( ) const
inline

Return merge angle in radians; 0.0 by default (normals with non-exact directions are not merged).

◆ MergeNodes()

static occ::handle< Poly_Triangulation > Poly_MergeNodesTool::MergeNodes ( const occ::handle< Poly_Triangulation > & theTris,
const gp_Trsf & theTrsf,
const bool theToReverse,
const double theSmoothAngle,
const double theMergeTolerance = 0.0,
const bool theToForce = true )
static

Merge nodes of existing mesh and return the new mesh.

Parameters
[in]theTristriangulation to add
[in]theTrsftransformation to apply
[in]theToReversereverse triangle nodes order
[in]theSmoothAnglemerge angle in radians
[in]theMergeTolerancelinear merge tolerance
[in]theToForcereturn merged triangulation even if it's statistics is equal to input one
Returns
merged triangulation or NULL on no result

◆ MergeTolerance()

double Poly_MergeNodesTool::MergeTolerance ( ) const
inline

Return merge tolerance; 0.0 by default (only 3D points with exactly matching coordinates are merged).

◆ NbDegenerativeElems()

int Poly_MergeNodesTool::NbDegenerativeElems ( ) const
inline

Return number of discarded degenerate elements.

◆ NbElements()

int Poly_MergeNodesTool::NbElements ( ) const
inline

Return number of elements.

◆ NbMergedElems()

int Poly_MergeNodesTool::NbMergedElems ( ) const
inline

Return number of merged equal elements.

◆ NbNodes()

int Poly_MergeNodesTool::NbNodes ( ) const
inline

Return number of nodes.

◆ PushLastElement()

void Poly_MergeNodesTool::PushLastElement ( int theNbNodes)

Add new triangle or quad with nodes specified by ChangeElementNode().

◆ PushLastQuad()

void Poly_MergeNodesTool::PushLastQuad ( )
inline

Add new quad with nodes specified by ChangeElementNode().

◆ PushLastTriangle()

void Poly_MergeNodesTool::PushLastTriangle ( )
inline

Add new triangle with nodes specified by ChangeElementNode().

◆ Result()

occ::handle< Poly_Triangulation > Poly_MergeNodesTool::Result ( )

Prepare and return result triangulation (temporary data will be truncated to result size).

◆ SetDropDegenerative()

void Poly_MergeNodesTool::SetDropDegenerative ( bool theToDrop)
inline

Set if degenerate elements should be discarded.

◆ SetMergeAngle()

void Poly_MergeNodesTool::SetMergeAngle ( double theAngleRad)
inline

Set merge angle.

◆ SetMergeElems()

void Poly_MergeNodesTool::SetMergeElems ( bool theToMerge)
inline

Set if equal elements should be filtered.

◆ SetMergeOpposite()

void Poly_MergeNodesTool::SetMergeOpposite ( bool theToMerge)
inline

Set if nodes with opposite normals should be merged.

◆ SetMergeTolerance()

void Poly_MergeNodesTool::SetMergeTolerance ( double theTolerance)
inline

Set merge tolerance.

◆ SetUnitFactor()

void Poly_MergeNodesTool::SetUnitFactor ( double theUnitFactor)
inline

Setup unit factor.

◆ ToDropDegenerative()

bool Poly_MergeNodesTool::ToDropDegenerative ( ) const
inline

Return TRUE if degenerate elements should be discarded; TRUE by default.

◆ ToMergeElems()

bool Poly_MergeNodesTool::ToMergeElems ( ) const
inline

Return TRUE if equal elements should be filtered; FALSE by default.

◆ ToMergeOpposite()

bool Poly_MergeNodesTool::ToMergeOpposite ( ) const
inline

Return TRUE if nodes with opposite normals should be merged; FALSE by default.


The documentation for this class was generated from the following file: