Open CASCADE Technology 6.5.2
Public Member Functions | Static Public Member Functions
BOPTools_Tools3D Class Reference

The class contains handy static functions
dealing with the topology

#include <BOPTools_Tools3D.hxx>

Public Member Functions

void * operator new (size_t, void *anAddress)
void * operator new (size_t size)
void operator delete (void *anAddress)

Static Public Member Functions

static Standard_Integer SubShapesAmount (const TopoDS_Shape &aS, const TopAbs_ShapeEnum aT)
 Returns amount of sub-shapes of type <aT>
for the shape <aS>

static Standard_Boolean IsConvexWire (const TopoDS_Wire &aW)
 Returns TRUE if
amount of the vertices <= amount of the edges>
for the wire <aW>

static void RemoveSims (const TopoDS_Face &aF, IntTools_Context &aContext)
 Remove seam edges from face <aF>

static void RemoveSims (const TopoDS_Shape &aS, IntTools_Context &aContext)
 Remove seam edges from all faces of shape <aS>

static TopAbs_Orientation EdgeOrientation (const TopoDS_Edge &aEx, const TopoDS_Face &aF1, const TopoDS_Face &aF2)
 For the draft section edge <aEx> computes orientation
in accordance with vector product between normals to
the faces <aF1>, <aF2>

static Standard_Boolean IsSplitToReverse1 (const TopoDS_Edge &aE1, const TopoDS_Edge &aE2, IntTools_Context &aContext)
 Returns TRUE if direction of the edge <aE1> is not
the same as for the edge <aE2>
(using projection)

static void DoSplitSEAMOnFace (const TopoDS_Edge &aSp, const TopoDS_Face &aF)
 Make the edge <aSp> seam edge for the face <aF>

static Standard_Boolean DoSplitSEAMOnFace (const TopoDS_Edge &theSplit, const TopoDS_Edge &theSeam, const TopoDS_Face &theFace, Standard_Boolean &IsReversed)
 Make the edge <theSplit> seam edge for the face <theFace>
It uses pcurves of <theSeam> to make <theSplit> seam edge.
IsReversed is true if pcurves of <theSplit> and <theSeam> are
reversed according to each other.
Returns true if <theSplit> was made seam edge for <theFace>

static Standard_Boolean IsTouchCase (const TopoDS_Edge &aEx, const TopoDS_Face &aF1, const TopoDS_Face &aF2)
 Returns TRUE if the edge <aEx> is section edge
between touching faces <aF1>, <aF2>

static Standard_Boolean GetTangentToEdge (const TopoDS_Edge &aE, const Standard_Real aT, gp_Dir &aD)
 Computes tangent (3D) for the edge <aE>
at parameter <aT>
Returns TRUE if the edge <aE> is not degenerated.

static Standard_Boolean GetTangentToEdge (const TopoDS_Edge &aE, gp_Dir &aD)
 Computes tangent (3D) for the edge <aE>
at arbitrary intermediate parameter
Returns TRUE if the edge <aE> is not degenerated.

static void GetNormalToFaceOnEdge (const TopoDS_Edge &aE, const TopoDS_Face &aF, const Standard_Real aT, gp_Dir &aD)
 Computes normal to the face <aF> for the point on the edge <aE>
at parameter <aT>

static void GetNormalToFaceOnEdge (const TopoDS_Edge &aE, const TopoDS_Face &aF, gp_Dir &aD)
 Computes normal to the face <aF> for the point on the edge <aE>
at arbitrary intermediate parameter

static void GetBiNormal (const TopoDS_Edge &aE, const TopoDS_Face &aF, const Standard_Real aT, gp_Dir &aD)
 Computes binormal to the face <aF> for the point on the edge <aE>
at parameter <aT>

static void GetBiNormal (const TopoDS_Edge &aE, const TopoDS_Face &aF, gp_Dir &aD)
 Computes binormal to the face <aF> for the point on the edge <aE>
at arbitrary intermediate parameter

static Standard_Boolean IsSplitToReverse (const TopoDS_Edge &aE, const TopoDS_Edge &aSp)
 Returns TRUE if direction of the edge <aE1> is not
the same as for the edge <aE2>

static Standard_Boolean GetAdjacentFace (const TopoDS_Face &aF, const TopoDS_Edge &aE, const TopTools_IndexedDataMapOfShapeListOfShape &aEFMap, TopoDS_Face &anAdjF)
 Get face <anAdjF> that is adjacent to the face <aF> through
the edge <aE> (using map EF <aEFMap>)
Returns FALSE if adjacent face is not found

static Standard_Boolean IsKeepTwice (const TopoDS_Face &aF1, const TopoDS_Face &aF2, const TopoDS_Face &aF2Adj, const TopoDS_Edge &aSpEF2)
 Returns TRUE if pair of faces <aF2> and <aF2Adj>
that are adjacent faces through the edge <aSpEF2>
crosses the face <aF1> by <aSpEF2>

static Standard_Integer SenseFlag (const gp_Dir &aNF1, const gp_Dir &aNF2)
 Returns 1 if scalar product aNF1* aNF2>0.
Returns 0 if directions aNF1 aNF2 coinside
Returns -1 if scalar product aNF1* aNF2<0.

static Standard_Boolean GetNormalToSurface (const Handle< Geom_Surface > &aS, const Standard_Real U, const Standard_Real V, gp_Dir &aD)
 Compute normal <aD> to surface <aS> in point (U,V)
Returns TRUE if directions aD1U, aD1V coinside

static void GetPlanes (const TopoDS_Edge &aSp, const TopoDS_Edge &aE2, const TopTools_IndexedDataMapOfShapeListOfShape &aEFMap2, const TopoDS_Edge &aE1, const TopoDS_Face &aF1, TopAbs_State &aST1, IntTools_Context &aContext)
 Internal usage

static TopAbs_Orientation Orientation (const TopoDS_Edge &aE, const TopoDS_Face &aF)
 Get the orientation for the edge <aE> on the face <aF>
Returns TopAbs_INTERNAL if the edge <aE> is not found
on the face <aF>

static Standard_Real SignDistance (const gp_Pnt &aP, const gp_Pln &aPL)
 Computes signed distance between the 3D-point <aP>
and the plane <aPL>.

static void GetApproxNormalToFaceOnEdge (const TopoDS_Edge &aE, const TopoDS_Face &aF, const Standard_Real aT, gp_Pnt &aPx, gp_Dir &aD)
 Computes normal to the face <aF> for the 3D-point that
belonds to the edge <aE> at parameter <aT>.
Output:
aPx - the 3D-point where the normal computed
aD - the normal;

static void PointNearEdge (const TopoDS_Edge &aE, const TopoDS_Face &aF, const Standard_Real aT, const Standard_Real aDt2D, gp_Pnt2d &aP2D, gp_Pnt &aPx)
 Compute the point <aPx>, (<aP2D>) that is near to
the edge <aE> at parameter <aT> towards to the
material of the face <aF>. The value of shifting in
2D is <aDt2D>

static void PointNearEdge (const TopoDS_Edge &aE, const TopoDS_Face &aF, const Standard_Real aT, gp_Pnt2d &aP2D, gp_Pnt &aPx)
 Computes the point <aPx>, (<aP2D>) that is near to
the edge <aE> at parameter <aT> towards to the
material of the face <aF>. The value of shifting in
2D is dt2D=BOPTools_Tools3D::MinStepIn2d()

static void PointNearEdge (const TopoDS_Edge &aE, const TopoDS_Face &aF, gp_Pnt2d &aP2D, gp_Pnt &aPx)
 Compute the point <aPx>, (<aP2D>) that is near to
the edge <aE> at arbitrary parameter towards to the
material of the face <aF>. The value of shifting in
2D is dt2D=BOPTools_Tools3D::MinStepIn2d()

static void PointToCompare (const gp_Pnt &aP1, const gp_Pnt &aP2, const TopoDS_Face &aF, gp_Pnt &aPx, IntTools_Context &aContext)
 For 3D-point <aP1> find projection point <aPx> on the face <aF>.
If the distance (<aP1>, <aPx>) > TolF =>
For 3D-point <aP2> find projection point <aPx> on the face <aF>.
If the distance (<aP2>, <aPx>) > TolF => returns <aP1>

static void GetPlane (const TopoDS_Edge &aSp, const TopoDS_Edge &aE1, const TopoDS_Face &aF1, const TopoDS_Face &aF2, TopAbs_State &aST, IntTools_Context &aContext)
 Compute 3D-state for the point on the split edge <aSp>
(with base edge <aE1> and the face <aF1>) comparing with
the face <aF2>

static void GetPointState (const TopoDS_Edge &aSp, const TopoDS_Edge &aEF2, const TopoDS_Face &aF2Adj, const TopoDS_Face &aF1, TopAbs_State &aST)
 Compute 3D-state for the point on the split edge <aSp>
(with base edge <aEF2> and the adjacent face <aF2Adj>) comparing with
the face <aF1>

static void OrientEdgeOnFace (const TopoDS_Edge &aE, const TopoDS_Face &aF, TopoDS_Edge &aER)
 Get the edge <aER> from the face <aF> that is the same as
the edge <aE>

static TopAbs_Orientation OrientTouchEdgeOnF1 (const TopoDS_Edge &aSp, const TopoDS_Edge &aEx, const TopoDS_Face &aF1, const TopoDS_Face &aF2)
 Computes orientation for the split edge <aSp>
[with base edge <aEx> and face <aF2>] on the
face <aF1>

static void GetSeams (const TopoDS_Face &aF, TopoDS_Edge &aSimm1, TopoDS_Edge &aSimm2)
 Get seam edges <aSimm1>, <aSimm2> for the face <aF>

static void GetSeam (const TopoDS_Face &aF, const TopoDS_Edge &aS1, TopoDS_Edge &aS2)
 Get opposite seam edge <aS2> for the face <aF> with
known seam edge <aS1>

static Standard_Boolean IsValidArea (const TopoDS_Face &aF, Standard_Boolean &aNegativeFlag)
 Check validity of the area of face <aF>.
Returns TRUE if the Abs. value of the area
is greater than 1.e-16

static Standard_Real MinStepIn2d ()
 Returns simple step value that is used in 2D-computations
= 1.e-5

static Standard_Boolean IsEmptyShape (const TopoDS_Shape &aS)
 Returns TRUE if the shape <aS> does not contain
geometry information (e.g. empty compound)

static void InvertShape (const TopoDS_Shape &aS, TopoDS_Shape &aSInv)
 Change orientations to opposite for the shape <aS>
and all its sub-shapes. Returns <aSInv>

static TopAbs_State GetStatePartIN2D (const TopoDS_Edge &aSp, const TopoDS_Edge &aEF1, const TopoDS_Face &aF1, const TopoDS_Face &aF2, IntTools_Context &aContext)
 Used in touch case
Compute the 3D-state for the point on the split
edge <aSp> (with base edge <aEF1> on face <aF1>)
comparing with <aF2>.
Used in touch case <aF1>/<aF2>

static Standard_Boolean CheckSameDomainFaceInside (const TopoDS_Face &theFace1, const TopoDS_Face &theFace2, IntTools_Context &theContext)
static Standard_Boolean ComputeFaceState (const TopoDS_Face &theFace, const TopoDS_Solid &theRef, IntTools_Context &theContext, TopAbs_State &theState)
static Standard_Boolean TreatedAsAnalytic (const Standard_Real aTx, const gp_Pnt &aPx, const TopoDS_Edge &aEx, const TopoDS_Face &aFx, const TopoDS_Edge &aE1, const TopoDS_Face &aF1, const Standard_Real aTolTangent, const Standard_Real aTolRadius, TopAbs_State &aState, IntTools_Context &aContext)
static Standard_Boolean TreatedAsAnalytic (const TopoDS_Face &aFx, const TopoDS_Edge &aSpE1, const TopoDS_Face &aF1, const Standard_Real aTolTangent, const Standard_Real aTolRadius, TopAbs_State &aState, IntTools_Context &aContext)
static Standard_Boolean HasAnalyticSurfaceType (const TopoDS_Face &aF)

Member Function Documentation

static Standard_Boolean BOPTools_Tools3D::CheckSameDomainFaceInside ( const TopoDS_Face theFace1,
const TopoDS_Face theFace2,
IntTools_Context theContext 
) [static]
static Standard_Boolean BOPTools_Tools3D::ComputeFaceState ( const TopoDS_Face theFace,
const TopoDS_Solid theRef,
IntTools_Context theContext,
TopAbs_State theState 
) [static]
static void BOPTools_Tools3D::DoSplitSEAMOnFace ( const TopoDS_Edge aSp,
const TopoDS_Face aF 
) [static]
static Standard_Boolean BOPTools_Tools3D::DoSplitSEAMOnFace ( const TopoDS_Edge theSplit,
const TopoDS_Edge theSeam,
const TopoDS_Face theFace,
Standard_Boolean IsReversed 
) [static]
static TopAbs_Orientation BOPTools_Tools3D::EdgeOrientation ( const TopoDS_Edge aEx,
const TopoDS_Face aF1,
const TopoDS_Face aF2 
) [static]
static Standard_Boolean BOPTools_Tools3D::GetAdjacentFace ( const TopoDS_Face aF,
const TopoDS_Edge aE,
const TopTools_IndexedDataMapOfShapeListOfShape aEFMap,
TopoDS_Face anAdjF 
) [static]
static void BOPTools_Tools3D::GetApproxNormalToFaceOnEdge ( const TopoDS_Edge aE,
const TopoDS_Face aF,
const Standard_Real  aT,
gp_Pnt aPx,
gp_Dir aD 
) [static]
static void BOPTools_Tools3D::GetBiNormal ( const TopoDS_Edge aE,
const TopoDS_Face aF,
const Standard_Real  aT,
gp_Dir aD 
) [static]
static void BOPTools_Tools3D::GetBiNormal ( const TopoDS_Edge aE,
const TopoDS_Face aF,
gp_Dir aD 
) [static]
static void BOPTools_Tools3D::GetNormalToFaceOnEdge ( const TopoDS_Edge aE,
const TopoDS_Face aF,
gp_Dir aD 
) [static]
static void BOPTools_Tools3D::GetNormalToFaceOnEdge ( const TopoDS_Edge aE,
const TopoDS_Face aF,
const Standard_Real  aT,
gp_Dir aD 
) [static]
static Standard_Boolean BOPTools_Tools3D::GetNormalToSurface ( const Handle< Geom_Surface > &  aS,
const Standard_Real  U,
const Standard_Real  V,
gp_Dir aD 
) [static]
static void BOPTools_Tools3D::GetPlane ( const TopoDS_Edge aSp,
const TopoDS_Edge aE1,
const TopoDS_Face aF1,
const TopoDS_Face aF2,
TopAbs_State aST,
IntTools_Context aContext 
) [static]
static void BOPTools_Tools3D::GetPlanes ( const TopoDS_Edge aSp,
const TopoDS_Edge aE2,
const TopTools_IndexedDataMapOfShapeListOfShape aEFMap2,
const TopoDS_Edge aE1,
const TopoDS_Face aF1,
TopAbs_State aST1,
IntTools_Context aContext 
) [static]
static void BOPTools_Tools3D::GetPointState ( const TopoDS_Edge aSp,
const TopoDS_Edge aEF2,
const TopoDS_Face aF2Adj,
const TopoDS_Face aF1,
TopAbs_State aST 
) [static]
static void BOPTools_Tools3D::GetSeam ( const TopoDS_Face aF,
const TopoDS_Edge aS1,
TopoDS_Edge aS2 
) [static]
static void BOPTools_Tools3D::GetSeams ( const TopoDS_Face aF,
TopoDS_Edge aSimm1,
TopoDS_Edge aSimm2 
) [static]
static TopAbs_State BOPTools_Tools3D::GetStatePartIN2D ( const TopoDS_Edge aSp,
const TopoDS_Edge aEF1,
const TopoDS_Face aF1,
const TopoDS_Face aF2,
IntTools_Context aContext 
) [static]
static Standard_Boolean BOPTools_Tools3D::GetTangentToEdge ( const TopoDS_Edge aE,
const Standard_Real  aT,
gp_Dir aD 
) [static]
static Standard_Boolean BOPTools_Tools3D::GetTangentToEdge ( const TopoDS_Edge aE,
gp_Dir aD 
) [static]
static Standard_Boolean BOPTools_Tools3D::HasAnalyticSurfaceType ( const TopoDS_Face aF) [static]
static void BOPTools_Tools3D::InvertShape ( const TopoDS_Shape aS,
TopoDS_Shape aSInv 
) [static]
static Standard_Boolean BOPTools_Tools3D::IsConvexWire ( const TopoDS_Wire aW) [static]
static Standard_Boolean BOPTools_Tools3D::IsEmptyShape ( const TopoDS_Shape aS) [static]
static Standard_Boolean BOPTools_Tools3D::IsKeepTwice ( const TopoDS_Face aF1,
const TopoDS_Face aF2,
const TopoDS_Face aF2Adj,
const TopoDS_Edge aSpEF2 
) [static]
static Standard_Boolean BOPTools_Tools3D::IsSplitToReverse ( const TopoDS_Edge aE,
const TopoDS_Edge aSp 
) [static]
static Standard_Boolean BOPTools_Tools3D::IsSplitToReverse1 ( const TopoDS_Edge aE1,
const TopoDS_Edge aE2,
IntTools_Context aContext 
) [static]
static Standard_Boolean BOPTools_Tools3D::IsTouchCase ( const TopoDS_Edge aEx,
const TopoDS_Face aF1,
const TopoDS_Face aF2 
) [static]
static Standard_Boolean BOPTools_Tools3D::IsValidArea ( const TopoDS_Face aF,
Standard_Boolean aNegativeFlag 
) [static]
static Standard_Real BOPTools_Tools3D::MinStepIn2d ( ) [static]
void BOPTools_Tools3D::operator delete ( void *  anAddress) [inline]
void* BOPTools_Tools3D::operator new ( size_t  size) [inline]
void* BOPTools_Tools3D::operator new ( size_t  ,
void *  anAddress 
) [inline]
static TopAbs_Orientation BOPTools_Tools3D::Orientation ( const TopoDS_Edge aE,
const TopoDS_Face aF 
) [static]
static void BOPTools_Tools3D::OrientEdgeOnFace ( const TopoDS_Edge aE,
const TopoDS_Face aF,
TopoDS_Edge aER 
) [static]
static TopAbs_Orientation BOPTools_Tools3D::OrientTouchEdgeOnF1 ( const TopoDS_Edge aSp,
const TopoDS_Edge aEx,
const TopoDS_Face aF1,
const TopoDS_Face aF2 
) [static]
static void BOPTools_Tools3D::PointNearEdge ( const TopoDS_Edge aE,
const TopoDS_Face aF,
const Standard_Real  aT,
const Standard_Real  aDt2D,
gp_Pnt2d aP2D,
gp_Pnt aPx 
) [static]
static void BOPTools_Tools3D::PointNearEdge ( const TopoDS_Edge aE,
const TopoDS_Face aF,
const Standard_Real  aT,
gp_Pnt2d aP2D,
gp_Pnt aPx 
) [static]
static void BOPTools_Tools3D::PointNearEdge ( const TopoDS_Edge aE,
const TopoDS_Face aF,
gp_Pnt2d aP2D,
gp_Pnt aPx 
) [static]
static void BOPTools_Tools3D::PointToCompare ( const gp_Pnt aP1,
const gp_Pnt aP2,
const TopoDS_Face aF,
gp_Pnt aPx,
IntTools_Context aContext 
) [static]
static void BOPTools_Tools3D::RemoveSims ( const TopoDS_Face aF,
IntTools_Context aContext 
) [static]
static void BOPTools_Tools3D::RemoveSims ( const TopoDS_Shape aS,
IntTools_Context aContext 
) [static]
static Standard_Integer BOPTools_Tools3D::SenseFlag ( const gp_Dir aNF1,
const gp_Dir aNF2 
) [static]
static Standard_Real BOPTools_Tools3D::SignDistance ( const gp_Pnt aP,
const gp_Pln aPL 
) [static]
static Standard_Integer BOPTools_Tools3D::SubShapesAmount ( const TopoDS_Shape aS,
const TopAbs_ShapeEnum  aT 
) [static]
static Standard_Boolean BOPTools_Tools3D::TreatedAsAnalytic ( const TopoDS_Face aFx,
const TopoDS_Edge aSpE1,
const TopoDS_Face aF1,
const Standard_Real  aTolTangent,
const Standard_Real  aTolRadius,
TopAbs_State aState,
IntTools_Context aContext 
) [static]
static Standard_Boolean BOPTools_Tools3D::TreatedAsAnalytic ( const Standard_Real  aTx,
const gp_Pnt aPx,
const TopoDS_Edge aEx,
const TopoDS_Face aFx,
const TopoDS_Edge aE1,
const TopoDS_Face aF1,
const Standard_Real  aTolTangent,
const Standard_Real  aTolRadius,
TopAbs_State aState,
IntTools_Context aContext 
) [static]

The documentation for this class was generated from the following file:
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines