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 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 | |
| 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.