Open CASCADE Technology 7.8.2.dev
ShapeFix_Edge Class Reference

Fixing invalid edge. Geometrical and/or topological inconsistency: More...

#include <ShapeFix_Edge.hxx>

Inheritance diagram for ShapeFix_Edge:

Public Member Functions

 ShapeFix_Edge ()
 Empty constructor.
 
Handle< ShapeConstruct_ProjectCurveOnSurfaceProjector ()
 Returns the projector used for recomputing missing pcurves Can be used for adjusting parameters of projector.
 
Standard_Boolean FixRemovePCurve (const TopoDS_Edge &edge, const TopoDS_Face &face)
 
Standard_Boolean FixRemovePCurve (const TopoDS_Edge &edge, const Handle< Geom_Surface > &surface, const TopLoc_Location &location)
 Removes the pcurve(s) of the edge if it does not match the vertices Check is done Use : It is to be called when pcurve of an edge can be wrong (e.g., after import from IGES) Returns: True, if does not match, removed (status DONE) False, (status OK) if matches or (status FAIL) if no pcurve, nothing done.
 
Standard_Boolean FixRemoveCurve3d (const TopoDS_Edge &edge)
 Removes 3d curve of the edge if it does not match the vertices Returns: True, if does not match, removed (status DONE) False, (status OK) if matches or (status FAIL) if no 3d curve, nothing done.
 
Standard_Boolean FixAddPCurve (const TopoDS_Edge &edge, const TopoDS_Face &face, const Standard_Boolean isSeam, const Standard_Real prec=0.0)
 See method below for information.
 
Standard_Boolean FixAddPCurve (const TopoDS_Edge &edge, const Handle< Geom_Surface > &surface, const TopLoc_Location &location, const Standard_Boolean isSeam, const Standard_Real prec=0.0)
 See method below for information.
 
Standard_Boolean FixAddPCurve (const TopoDS_Edge &edge, const TopoDS_Face &face, const Standard_Boolean isSeam, const Handle< ShapeAnalysis_Surface > &surfana, const Standard_Real prec=0.0)
 See method below for information.
 
Standard_Boolean FixAddPCurve (const TopoDS_Edge &edge, const Handle< Geom_Surface > &surface, const TopLoc_Location &location, const Standard_Boolean isSeam, const Handle< ShapeAnalysis_Surface > &surfana, const Standard_Real prec=0.0)
 Adds pcurve(s) of the edge if missing (by projecting 3d curve) Parameter isSeam indicates if the edge is a seam. The parameter <prec> defines the precision for calculations. If it is 0 (default), the tolerance of the edge is taken. Remark : This method is rather for internal use since it accepts parameter <surfana> for optimization of computations Use : It is to be called after FixRemovePCurve (if removed) or in any case when edge can have no pcurve Returns: True if pcurve was added, else False Status : OK : Pcurve exists FAIL1: No 3d curve FAIL2: fail during projecting DONE1: Pcurve was added DONE2: specific case of pcurve going through degenerated point on sphere encountered during projection (see class ShapeConstruct_ProjectCurveOnSurface for more info)
 
Standard_Boolean FixAddCurve3d (const TopoDS_Edge &edge)
 Tries to build 3d curve of the edge if missing Use : It is to be called after FixRemoveCurve3d (if removed) or in any case when edge can have no 3d curve Returns: True if 3d curve was added, else False Status : OK : 3d curve exists FAIL1: BRepLib::BuildCurve3d() has failed DONE1: 3d curve was added.
 
Standard_Boolean FixVertexTolerance (const TopoDS_Edge &edge, const TopoDS_Face &face)
 
Standard_Boolean FixVertexTolerance (const TopoDS_Edge &edge)
 Increases the tolerances of the edge vertices to comprise the ends of 3d curve and pcurve on the given face (first method) or all pcurves stored in an edge (second one) Returns: True, if tolerances have been increased, otherwise False Status: OK : the original tolerances have not been changed DONE1: the tolerance of first vertex has been increased DONE2: the tolerance of last vertex has been increased.
 
Standard_Boolean FixReversed2d (const TopoDS_Edge &edge, const TopoDS_Face &face)
 
Standard_Boolean FixReversed2d (const TopoDS_Edge &edge, const Handle< Geom_Surface > &surface, const TopLoc_Location &location)
 Fixes edge if pcurve is directed opposite to 3d curve Check is done by call to the function ShapeAnalysis_Edge::CheckCurve3dWithPCurve() Warning: For seam edge this method will check and fix the pcurve in only one direction. Hence, it should be called twice for seam edge: once with edge orientation FORWARD and once with REVERSED. Returns: False if nothing done, True if reversed (status DONE) Status: OK - pcurve OK, nothing done FAIL1 - no pcurve FAIL2 - no 3d curve DONE1 - pcurve was reversed.
 
Standard_Boolean FixSameParameter (const TopoDS_Edge &edge, const Standard_Real tolerance=0.0)
 Tries to make edge SameParameter and sets corresponding tolerance and SameParameter flag. First, it makes edge same range if SameRange flag is not set.
 
Standard_Boolean FixSameParameter (const TopoDS_Edge &edge, const TopoDS_Face &face, const Standard_Real tolerance=0.0)
 Tries to make edge SameParameter and sets corresponding tolerance and SameParameter flag. First, it makes edge same range if SameRange flag is not set.
 
Standard_Boolean Status (const ShapeExtend_Status status) const
 Returns the status (in the form of True/False) of last Fix.
 
void SetContext (const Handle< ShapeBuild_ReShape > &context)
 Sets context.
 
Handle< ShapeBuild_ReShapeContext () const
 Returns context.
 
- 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 ()
 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_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.
 
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.
 

Protected Attributes

Handle< ShapeBuild_ReShapemyContext
 
Standard_Integer myStatus
 
Handle< ShapeConstruct_ProjectCurveOnSurfacemyProjector
 

Additional Inherited Members

- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 
- 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.
 

Detailed Description

Fixing invalid edge. Geometrical and/or topological inconsistency:

  • no 3d curve or pcurve,
  • mismatching orientation of 3d curve and pcurve,
  • incorrect SameParameter flag (curve deviation is greater than edge tolerance),
  • not adjacent curves (3d or pcurve) to the vertices.

Constructor & Destructor Documentation

◆ ShapeFix_Edge()

ShapeFix_Edge::ShapeFix_Edge ( )

Empty constructor.

Member Function Documentation

◆ Context()

Handle< ShapeBuild_ReShape > ShapeFix_Edge::Context ( ) const

Returns context.

◆ FixAddCurve3d()

Standard_Boolean ShapeFix_Edge::FixAddCurve3d ( const TopoDS_Edge & edge)

Tries to build 3d curve of the edge if missing Use : It is to be called after FixRemoveCurve3d (if removed) or in any case when edge can have no 3d curve Returns: True if 3d curve was added, else False Status : OK : 3d curve exists FAIL1: BRepLib::BuildCurve3d() has failed DONE1: 3d curve was added.

◆ FixAddPCurve() [1/4]

Standard_Boolean ShapeFix_Edge::FixAddPCurve ( const TopoDS_Edge & edge,
const Handle< Geom_Surface > & surface,
const TopLoc_Location & location,
const Standard_Boolean isSeam,
const Handle< ShapeAnalysis_Surface > & surfana,
const Standard_Real prec = 0.0 )

Adds pcurve(s) of the edge if missing (by projecting 3d curve) Parameter isSeam indicates if the edge is a seam. The parameter <prec> defines the precision for calculations. If it is 0 (default), the tolerance of the edge is taken. Remark : This method is rather for internal use since it accepts parameter <surfana> for optimization of computations Use : It is to be called after FixRemovePCurve (if removed) or in any case when edge can have no pcurve Returns: True if pcurve was added, else False Status : OK : Pcurve exists FAIL1: No 3d curve FAIL2: fail during projecting DONE1: Pcurve was added DONE2: specific case of pcurve going through degenerated point on sphere encountered during projection (see class ShapeConstruct_ProjectCurveOnSurface for more info)

◆ FixAddPCurve() [2/4]

Standard_Boolean ShapeFix_Edge::FixAddPCurve ( const TopoDS_Edge & edge,
const Handle< Geom_Surface > & surface,
const TopLoc_Location & location,
const Standard_Boolean isSeam,
const Standard_Real prec = 0.0 )

See method below for information.

◆ FixAddPCurve() [3/4]

Standard_Boolean ShapeFix_Edge::FixAddPCurve ( const TopoDS_Edge & edge,
const TopoDS_Face & face,
const Standard_Boolean isSeam,
const Handle< ShapeAnalysis_Surface > & surfana,
const Standard_Real prec = 0.0 )

See method below for information.

◆ FixAddPCurve() [4/4]

Standard_Boolean ShapeFix_Edge::FixAddPCurve ( const TopoDS_Edge & edge,
const TopoDS_Face & face,
const Standard_Boolean isSeam,
const Standard_Real prec = 0.0 )

See method below for information.

◆ FixRemoveCurve3d()

Standard_Boolean ShapeFix_Edge::FixRemoveCurve3d ( const TopoDS_Edge & edge)

Removes 3d curve of the edge if it does not match the vertices Returns: True, if does not match, removed (status DONE) False, (status OK) if matches or (status FAIL) if no 3d curve, nothing done.

◆ FixRemovePCurve() [1/2]

Standard_Boolean ShapeFix_Edge::FixRemovePCurve ( const TopoDS_Edge & edge,
const Handle< Geom_Surface > & surface,
const TopLoc_Location & location )

Removes the pcurve(s) of the edge if it does not match the vertices Check is done Use : It is to be called when pcurve of an edge can be wrong (e.g., after import from IGES) Returns: True, if does not match, removed (status DONE) False, (status OK) if matches or (status FAIL) if no pcurve, nothing done.

◆ FixRemovePCurve() [2/2]

Standard_Boolean ShapeFix_Edge::FixRemovePCurve ( const TopoDS_Edge & edge,
const TopoDS_Face & face )

◆ FixReversed2d() [1/2]

Standard_Boolean ShapeFix_Edge::FixReversed2d ( const TopoDS_Edge & edge,
const Handle< Geom_Surface > & surface,
const TopLoc_Location & location )

Fixes edge if pcurve is directed opposite to 3d curve Check is done by call to the function ShapeAnalysis_Edge::CheckCurve3dWithPCurve() Warning: For seam edge this method will check and fix the pcurve in only one direction. Hence, it should be called twice for seam edge: once with edge orientation FORWARD and once with REVERSED. Returns: False if nothing done, True if reversed (status DONE) Status: OK - pcurve OK, nothing done FAIL1 - no pcurve FAIL2 - no 3d curve DONE1 - pcurve was reversed.

◆ FixReversed2d() [2/2]

Standard_Boolean ShapeFix_Edge::FixReversed2d ( const TopoDS_Edge & edge,
const TopoDS_Face & face )

◆ FixSameParameter() [1/2]

Standard_Boolean ShapeFix_Edge::FixSameParameter ( const TopoDS_Edge & edge,
const Standard_Real tolerance = 0.0 )

Tries to make edge SameParameter and sets corresponding tolerance and SameParameter flag. First, it makes edge same range if SameRange flag is not set.

If flag SameParameter is set, this method calls the function ShapeAnalysis_Edge::CheckSameParameter() that calculates the maximal deviation of pcurves of the edge from its 3d curve. If deviation > tolerance, the tolerance of edge is increased to a value of deviation. If deviation < tolerance nothing happens.

If flag SameParameter is not set, this method chooses the best variant (one that has minimal tolerance), either a. only after computing deviation (as above) or b. after calling standard procedure BRepLib::SameParameter and computing deviation (as above). If <tolerance> > 0, it is used as parameter for BRepLib::SameParameter, otherwise, tolerance of the edge is used.

Use : Is to be called after all pcurves and 3d curve of the edge are correctly computed Remark : SameParameter flag is always set to True after this method Returns: True, if something done, else False Status : OK - edge was initially SameParameter, nothing is done FAIL1 - computation of deviation of pcurves from 3d curve has failed FAIL2 - BRepLib::SameParameter() has failed DONE1 - tolerance of the edge was increased DONE2 - flag SameParameter was set to True (only if BRepLib::SameParameter() did not set it) DONE3 - edge was modified by BRepLib::SameParameter() to SameParameter DONE4 - not used anymore DONE5 - if the edge resulting from BRepLib has been chosen, i.e. variant b. above (only for edges with not set SameParameter)

◆ FixSameParameter() [2/2]

Standard_Boolean ShapeFix_Edge::FixSameParameter ( const TopoDS_Edge & edge,
const TopoDS_Face & face,
const Standard_Real tolerance = 0.0 )

Tries to make edge SameParameter and sets corresponding tolerance and SameParameter flag. First, it makes edge same range if SameRange flag is not set.

If flag SameParameter is set, this method calls the function ShapeAnalysis_Edge::CheckSameParameter() that calculates the maximal deviation of pcurves of the edge from its 3d curve. If deviation > tolerance, the tolerance of edge is increased to a value of deviation. If deviation < tolerance nothing happens.

If flag SameParameter is not set, this method chooses the best variant (one that has minimal tolerance), either a. only after computing deviation (as above) or b. after calling standard procedure BRepLib::SameParameter and computing deviation (as above). If <tolerance> > 0, it is used as parameter for BRepLib::SameParameter, otherwise, tolerance of the edge is used.

Use : Is to be called after all pcurves and 3d curve of the edge are correctly computed Remark : SameParameter flag is always set to True after this method Returns: True, if something done, else False Status : OK - edge was initially SameParameter, nothing is done FAIL1 - computation of deviation of pcurves from 3d curve has failed FAIL2 - BRepLib::SameParameter() has failed DONE1 - tolerance of the edge was increased DONE2 - flag SameParameter was set to True (only if BRepLib::SameParameter() did not set it) DONE3 - edge was modified by BRepLib::SameParameter() to SameParameter DONE4 - not used anymore DONE5 - if the edge resulting from BRepLib has been chosen, i.e. variant b. above (only for edges with not set SameParameter)

◆ FixVertexTolerance() [1/2]

Standard_Boolean ShapeFix_Edge::FixVertexTolerance ( const TopoDS_Edge & edge)

Increases the tolerances of the edge vertices to comprise the ends of 3d curve and pcurve on the given face (first method) or all pcurves stored in an edge (second one) Returns: True, if tolerances have been increased, otherwise False Status: OK : the original tolerances have not been changed DONE1: the tolerance of first vertex has been increased DONE2: the tolerance of last vertex has been increased.

◆ FixVertexTolerance() [2/2]

Standard_Boolean ShapeFix_Edge::FixVertexTolerance ( const TopoDS_Edge & edge,
const TopoDS_Face & face )

◆ Projector()

Handle< ShapeConstruct_ProjectCurveOnSurface > ShapeFix_Edge::Projector ( )

Returns the projector used for recomputing missing pcurves Can be used for adjusting parameters of projector.

◆ SetContext()

void ShapeFix_Edge::SetContext ( const Handle< ShapeBuild_ReShape > & context)

Sets context.

◆ Status()

Standard_Boolean ShapeFix_Edge::Status ( const ShapeExtend_Status status) const

Returns the status (in the form of True/False) of last Fix.

Field Documentation

◆ myContext

Handle< ShapeBuild_ReShape > ShapeFix_Edge::myContext
protected

◆ myProjector

Handle< ShapeConstruct_ProjectCurveOnSurface > ShapeFix_Edge::myProjector
protected

◆ myStatus

Standard_Integer ShapeFix_Edge::myStatus
protected

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