| 
    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 | 
Add new triangle or quad.
| [in] | theElemNodes | element nodes | 
| [in] | theNbNodes | number of element nodes, should be 3 or 4 | 
Add new quad.
| [in] | theElemNodes | 4 element nodes | 
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 | 
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.