Open CASCADE Technology  6.5.4
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Static Public Member Functions
BOPTools_Tools3D Class Reference

The class contains handy static functions
dealing with the topology

#include <BOPTools_Tools3D.hxx>

Static Public Member Functions

static DEFINE_STANDARD_ALLOC
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, const Handle< IntTools_Context > &aContext)
 Remove seam edges from face <aF>


static void RemoveSims (const TopoDS_Shape &aS, const Handle< 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, const Handle< 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, const Handle< 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>.

Warning:
The distance is not divided by sqrt(A*A+B*B+C*C)


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;

Warning:
The normal is computed not exactly in the point on the
edge, but in point that is near to the edge towards to
the face material (so, we'll have approx. 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, const Handle< 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, const Handle< 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, const Handle< 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, const Handle< IntTools_Context > &theContext)
static Standard_Boolean ComputeFaceState (const TopoDS_Face &theFace, const TopoDS_Solid &theRef, const Handle< 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, const Handle< 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, const Handle< IntTools_Context > &aContext)
static Standard_Boolean HasAnalyticSurfaceType (const TopoDS_Face &aF)

Member Function Documentation

static Standard_Boolean BOPTools_Tools3D::ComputeFaceState ( const TopoDS_Face theFace,
const TopoDS_Solid theRef,
const Handle< IntTools_Context > &  theContext,
TopAbs_State theState 
) [static]
static Standard_Boolean BOPTools_Tools3D::DoSplitSEAMOnFace ( const TopoDS_Edge theSplit,
const TopoDS_Edge theSeam,
const TopoDS_Face theFace,
Standard_Boolean IsReversed 
) [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::GetPlane ( const TopoDS_Edge aSp,
const TopoDS_Edge aE1,
const TopoDS_Face aF1,
const TopoDS_Face aF2,
TopAbs_State aST,
const Handle< 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 void BOPTools_Tools3D::InvertShape ( const TopoDS_Shape aS,
TopoDS_Shape aSInv 
) [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::IsValidArea ( const TopoDS_Face aF,
Standard_Boolean aNegativeFlag 
) [static]
static void BOPTools_Tools3D::OrientEdgeOnFace ( const TopoDS_Edge aE,
const TopoDS_Face aF,
TopoDS_Edge aER 
) [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,
const Handle< IntTools_Context > &  aContext 
) [static]
static void BOPTools_Tools3D::RemoveSims ( const TopoDS_Face aF,
const Handle< IntTools_Context > &  aContext 
) [static]
static void BOPTools_Tools3D::RemoveSims ( const TopoDS_Shape aS,
const Handle< 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_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,
const Handle< IntTools_Context > &  aContext 
) [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,
const Handle< IntTools_Context > &  aContext 
) [static]

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