Open CASCADE Technology  6.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions
BRepAlgoAPI_Section Class Reference

Computes the intersection of two shapes or geometries.
Geometries can be surfaces of planes.
Geometries are converted to faces
When a geometry has been converted to
topology the created shape can be found using
the methods Shape1 and Shape2 inherited from the class BooleanOperation.
The result (Shape() method) is a compound containing
edges built on intersection curves.
By default, the section is performed immediatly in
class constructors, with default values :
More...

#include <BRepAlgoAPI_Section.hxx>

Inheritance diagram for BRepAlgoAPI_Section:
Inheritance graph
[legend]

Public Member Functions

 BRepAlgoAPI_Section (const TopoDS_Shape &S1, const TopoDS_Shape &S2, const BOPAlgo_PaveFiller &aDSF, const Standard_Boolean PerformNow=Standard_True)
 
virtual ~BRepAlgoAPI_Section ()
 
 BRepAlgoAPI_Section (const TopoDS_Shape &Sh1, const TopoDS_Shape &Sh2, const Standard_Boolean PerformNow=Standard_True)
 see upper
More...
 
 BRepAlgoAPI_Section (const TopoDS_Shape &Sh, const gp_Pln &Pl, const Standard_Boolean PerformNow=Standard_True)
 see upper
More...
 
 BRepAlgoAPI_Section (const TopoDS_Shape &Sh, const Handle< Geom_Surface > &Sf, const Standard_Boolean PerformNow=Standard_True)
 see upper
More...
 
 BRepAlgoAPI_Section (const Handle< Geom_Surface > &Sf, const TopoDS_Shape &Sh, const Standard_Boolean PerformNow=Standard_True)
 see upper
More...
 
 BRepAlgoAPI_Section (const Handle< Geom_Surface > &Sf1, const Handle< Geom_Surface > &Sf2, const Standard_Boolean PerformNow=Standard_True)
 
 This and the above classes construct a framework for <br>

computing the section lines of:
More...

 
void Init1 (const TopoDS_Shape &S1)
 initialize first part
More...
 
void Init1 (const gp_Pln &Pl)
 initialize first part
More...
 
void Init1 (const Handle< Geom_Surface > &Sf)
 initialize first part
More...
 
void Init2 (const TopoDS_Shape &S2)
 initialize second part
More...
 
void Init2 (const gp_Pln &Pl)
 initialize second part
More...
 
void Init2 (const Handle< Geom_Surface > &Sf)
 
 Reinitializes the first and the <br>

second parts on which this algorithm is going to perform
the intersection computation. This is done with either: the
surface Sf, the plane Pl or the shape Sh.
You use the function Build to construct the result.
More...

 
void Approximation (const Standard_Boolean B)
 
 Defines an option for computation <br>

of further intersections. This computation will be performed by
the function Build in this framework.
By default, the underlying 3D geometry attached to each
elementary edge of the result of a computed intersection is:
More...

 
void ComputePCurveOn1 (const Standard_Boolean B)
 Indicates if the Pcurve must be (or not) performed on first part.
More...
 
void ComputePCurveOn2 (const Standard_Boolean B)
 
 Define options for the computation of further <br>

intersections, which will be performed by the function Build
in this framework.
By default, no parametric 2D curve (pcurve) is defined for the
elementary edges of the result. If ComputePCurve1 equals true,
further computations performed in this framework with the function
Build will attach an additional pcurve in the parametric space of
the first shape to the constructed edges.
If ComputePCurve2 equals true, the additional pcurve will be
attached to the constructed edges in the parametric space of the
second shape.
These two functions may be used together.
More...

 
void Build ()
 
  Performs the computation of <br>

section lines between two parts defined at the time of
construction of this framework or reinitialized with the Init1 and
Init2 functions.
The constructed shape will be returned by the function Shape.
This is a compound object composed of edges. These
intersection edges may be built:
More...

 
Standard_Boolean HasAncestorFaceOn1 (const TopoDS_Shape &E, TopoDS_Shape &F) const
 get the face of the first part giving section edge <E>.
Returns True on the 3 following conditions :
1/ <E> is an edge returned by the Shape() method.
2/ First part of section performed is a shape.
3/ <E> is built on a intersection curve (i.e <E>
is not the result of common edges)
When False, F remains untouched.
More...
 
Standard_Boolean HasAncestorFaceOn2 (const TopoDS_Shape &E, TopoDS_Shape &F) const
 
  Identifies the ancestor faces of <br>

the intersection edge E resulting from the last
computation performed in this framework, that is, the faces of
the two original shapes on which the edge E lies:
More...

 
- Public Member Functions inherited from BRepAlgoAPI_BooleanOperation
void SetOperation (const BOPAlgo_Operation anOp)
 
  Sets the type of Boolean operation to perform <br>
     It can be BOPAlgo_SECTION <br>
               BOPAlgo_COMMON <br>
               BOPAlgo_FUSE <br>
               BOPAlgo_CUT <br>
               BOPAlgo_CUT21 <br>


More...

 
const TopoDS_ShapeShape1 () const
 Returns the first shape involved in this Boolean operation.
More...
 
const TopoDS_ShapeShape2 () const
 Returns the second shape involved in this Boolean operation.
More...
 
BOPAlgo_Operation Operation () const
 Returns the type of Boolean Operation that has been performed.
More...
 
Standard_Boolean FuseEdges () const
 Returns the flag of edge refining
More...
 
void RefineEdges ()
 Fuse C1 edges
More...
 
Standard_Boolean BuilderCanWork () const
 
Standard_Integer ErrorStatus () const
 
  Returns the error status of operation. <br>

0 - Ok
1 - The Object is created but Nothing is Done
2 - Null source shapes is not allowed
3 - Check types of the arguments
4 - Can not allocate memory for the DSFiller
5 - The Builder can not work with such types of arguments
6 - Unknown operation is not allowed
7 - Can not allocate memory for the Builder

100 - See the Builder's ErrorStatus

More...
 
virtual const
TopTools_ListOfShape
Modified (const TopoDS_Shape &aS)
 Returns the list of shapes modified from the shape <S>.
More...
 
virtual Standard_Boolean IsDeleted (const TopoDS_Shape &aS)
 
 Returns true if the shape S has been deleted. The <br>

result shape of the operation does not contain the shape S.
More...

 
virtual const
TopTools_ListOfShape
Generated (const TopoDS_Shape &S)
 Returns the list of shapes generated from the shape <S>.
For use in BRepNaming.
More...
 
virtual Standard_Boolean HasModified () const
 Returns true if there is at least one modified shape.
For use in BRepNaming.
More...
 
virtual Standard_Boolean HasGenerated () const
 Returns true if there is at least one generated shape.
For use in BRepNaming.
More...
 
virtual Standard_Boolean HasDeleted () const
 Returns true if there is at least one deleted shape.
For use in BRepNaming.
More...
 
void Destroy ()
 
virtual ~BRepAlgoAPI_BooleanOperation ()
 
const TopTools_ListOfShapeSectionEdges ()
 
 Returns a list of section edges. <br>

The edges represent the result of intersection between arguments of
Boolean Operation. They are computed during operation execution.
More...

 
- Public Member Functions inherited from BRepBuilderAPI_MakeShape
virtual void Delete ()
 
virtual ~BRepBuilderAPI_MakeShape ()
 
const TopoDS_ShapeShape () const
 
 Returns a shape built by the shape construction algorithm. <br>

Raises exception StdFail_NotDone if the shape was not built.
More...

 
 operator TopoDS_Shape () const
 
- Public Member Functions inherited from BRepBuilderAPI_Command
virtual ~BRepBuilderAPI_Command ()
 
virtual Standard_Boolean IsDone () const
 
void Check () const
 Raises NotDone if done is false.
More...
 

Additional Inherited Members

- Protected Member Functions inherited from BRepAlgoAPI_BooleanOperation
 BRepAlgoAPI_BooleanOperation (const TopoDS_Shape &S1, const TopoDS_Shape &S2, const BOPAlgo_Operation anOperation)
 Prepares the operations for S1 and S2.
More...
 
 BRepAlgoAPI_BooleanOperation (const TopoDS_Shape &S1, const TopoDS_Shape &S2, const BOPAlgo_PaveFiller &aDSF, const BOPAlgo_Operation anOperation)
 Prepares the operations for S1 and S2.
More...
 
Standard_Boolean PrepareFiller ()
 
- Protected Member Functions inherited from BRepBuilderAPI_MakeShape
 BRepBuilderAPI_MakeShape ()
 
- Protected Member Functions inherited from BRepBuilderAPI_Command
 BRepBuilderAPI_Command ()
 Set done to False.
More...
 
void Done ()
 Set done to true.
More...
 
void NotDone ()
 Set done to false.
More...
 
- Protected Attributes inherited from BRepAlgoAPI_BooleanOperation
TopoDS_Shape myS1
 
TopoDS_Shape myS2
 
Standard_Boolean myBuilderCanWork
 
BOPAlgo_Operation myOperation
 
Standard_Integer myErrorStatus
 
BOPAlgo_PPaveFiller myDSFiller
 
BOPAlgo_PBOP myBuilder
 
- Protected Attributes inherited from BRepBuilderAPI_MakeShape
TopoDS_Shape myShape
 
TopTools_ListOfShape myGenerated
 

Detailed Description

Computes the intersection of two shapes or geometries.
Geometries can be surfaces of planes.
Geometries are converted to faces
When a geometry has been converted to
topology the created shape can be found using
the methods Shape1 and Shape2 inherited from the class BooleanOperation.
The result (Shape() method) is a compound containing
edges built on intersection curves.
By default, the section is performed immediatly in
class constructors, with default values :

Constructor & Destructor Documentation

BRepAlgoAPI_Section::BRepAlgoAPI_Section ( const TopoDS_Shape S1,
const TopoDS_Shape S2,
const BOPAlgo_PaveFiller aDSF,
const Standard_Boolean  PerformNow = Standard_True 
)
virtual BRepAlgoAPI_Section::~BRepAlgoAPI_Section ( )
inlinevirtual
BRepAlgoAPI_Section::BRepAlgoAPI_Section ( const TopoDS_Shape Sh1,
const TopoDS_Shape Sh2,
const Standard_Boolean  PerformNow = Standard_True 
)

see upper

BRepAlgoAPI_Section::BRepAlgoAPI_Section ( const TopoDS_Shape Sh,
const gp_Pln Pl,
const Standard_Boolean  PerformNow = Standard_True 
)

see upper

BRepAlgoAPI_Section::BRepAlgoAPI_Section ( const TopoDS_Shape Sh,
const Handle< Geom_Surface > &  Sf,
const Standard_Boolean  PerformNow = Standard_True 
)

see upper

BRepAlgoAPI_Section::BRepAlgoAPI_Section ( const Handle< Geom_Surface > &  Sf,
const TopoDS_Shape Sh,
const Standard_Boolean  PerformNow = Standard_True 
)

see upper

BRepAlgoAPI_Section::BRepAlgoAPI_Section ( const Handle< Geom_Surface > &  Sf1,
const Handle< Geom_Surface > &  Sf2,
const Standard_Boolean  PerformNow = Standard_True 
)

 This and the above classes construct a framework for <br>

computing the section lines of:

  • two shapes Sh1 and Sh2, or
  • shape Sh and plane Pl, or
  • shape Sh and surface Sf, or
  • surface Sf and shape Sh, or
  • two surfaces Sf1 and Sf2,
    and builds a result if PerformNow equals true, its
    default value. If PerformNow equals false, the intersection
    will be computed later by the function Build.
    The constructed shape will be returned by the function Shape.
    This is a compound object composed of edges. These
    intersection edges may be built:
  • on new intersection lines, or
  • on coincident portions of edges in the two intersected shapes.
    These intersection edges are independent: they are not
    chained or grouped in wires. If no intersection edge exists, the
    result is an empty compound object.
    Note that other objects than TopoDS_Shape shapes involved in
    these syntaxes are converted into faces or shells before
    performing the computation of the intersection. A shape
    resulting from this conversion can be retrieved with the
    function Shape1 or Shape2.
    Parametric 2D curves on intersection edges
    No parametric 2D curve (pcurve) is defined for each elementary
    edge of the result. To attach such parametric curves to the
    constructed edges you may use a constructor with the PerformNow
    flag equal to false; then you use:
  • the function ComputePCurveOn1 to ask for
    the additional computation of a pcurve in the parametric
    space of the first shape,
  • the function ComputePCurveOn2 to ask for
    the additional computation of a pcurve in the parametric
    space of the second shape, in the end,
  • the function Build to construct the result.
    Approximation of intersection edges
    The underlying 3D geometry attached to each elementary edge
    of the result is:
  • analytic where possible, provided the corresponding
    geometry corresponds to a type of analytic curve
    defined in the Geom package; for example, the intersection
    of a cylindrical shape with a plane gives an ellipse or a circle;
  • or elsewhere, given as a succession of points grouped
    together in a BSpline curve of degree 1.
    If you prefer to have an attached 3D geometry which is a
    BSpline approximation of the computed set of points on
    computed elementary intersection edges whose underlying geometry
    is not analytic, you may use a constructor with the PerformNow
    flag equal to false. Then you use:
  • the function Approximation to ask for this
    computation option, and
  • the function Build to construct the result.
  • Note that as a result, approximations will only be
    computed on edges built on new intersection lines.
  • Example
    You may also combine these computation options. In the following example:
  • each elementary edge of the computed intersection,
    built on a new intersection line, which does not
    correspond to an analytic Geom curve, will be approximated by
    a BSpline curve whose degree is not greater than 8.
  • each elementary edge built on a new intersection line, will have:
  • a pcurve in the parametric space of the intersected face of shape S1,
  • no pcurve in the parametric space of the intersected face of shape S2.
    // TopoDS_Shape S1 = ... , S2 = ... ;
    Standard_Boolean PerformNow = Standard_False;
    BRepAlgoAPI_Section S ( S1, S2, PerformNow );
    S.ComputePCurveOn1 (Standard_True);
    S.Approximation (Standard_True);
    S.Build();
    TopoDS_Shape R = S.Shape();

Member Function Documentation

void BRepAlgoAPI_Section::Approximation ( const Standard_Boolean  B)

 Defines an option for computation <br>

of further intersections. This computation will be performed by
the function Build in this framework.
By default, the underlying 3D geometry attached to each
elementary edge of the result of a computed intersection is:

  • analytic where possible, provided the corresponding
    geometry corresponds to a type of analytic curve defined in
    the Geom package; for example the intersection of a
    cylindrical shape with a plane gives an ellipse or a circle;
  • or elsewhere, given as a succession of points grouped
    together in a BSpline curve of degree 1. If Approx equals
    true, when further computations are performed in this framework
    with the function Build, these edges will have an attached 3D
    geometry which is a BSpline approximation of the computed
    set of points.
    Note that as a result, approximations will be computed
    on edges built only on new intersection lines.
void BRepAlgoAPI_Section::Build ( )
virtual

  Performs the computation of <br>

section lines between two parts defined at the time of
construction of this framework or reinitialized with the Init1 and
Init2 functions.
The constructed shape will be returned by the function Shape.
This is a compound object composed of edges. These
intersection edges may be built:

  • on new intersection lines, or
  • on coincident portions of edges in the two intersected shapes.
    These intersection edges are independent: they are not chained
    or grouped into wires.
    If no intersection edge exists, the result is an empty compound object.
    The shapes involved in the construction of section lines can
    be retrieved with the function Shape1 or Shape2. Note that other
    objects than TopoDS_Shape shapes given as arguments at the
    construction time of this framework, or to the Init1 or
    Init2 function, are converted into faces or shells before
    performing the computation of the intersection.
    Parametric 2D curves on intersection edges
    No parametric 2D curve (pcurve) is defined for the elementary
    edges of the result. To attach parametric curves like this to
    the constructed edges you have to use:
  • the function
    ComputePCurveOn1 to ask for the additional computation of a
    pcurve in the parametric space of the first shape,
  • the function
    ComputePCurveOn2 to ask for the additional computation of a
    pcurve in the parametric space of the second shape.
    This must be done before calling this function.
    Approximation of intersection edges
    The underlying 3D geometry attached to each elementary edge of the result is:
  • analytic (where possible) provided the corresponding
    geometry corresponds to a type of analytic curve defined in
    the Geom package; for example, the intersection of a
    cylindrical shape with a plane gives an ellipse or a circle; or
  • elsewhere, given as a succession of points grouped
    together in a BSpline curve of degree 1.
    If, on computed elementary intersection edges whose
    underlying geometry is not analytic, you prefer to have an
    attached 3D geometry which is a Bspline approximation of the
    computed set of points, you have to use the function Approximation
    to ask for this computation option before calling this function.
    You may also have combined these computation options: look at the
    example given above to illustrate the use of the constructors.

Reimplemented from BRepAlgoAPI_BooleanOperation.

void BRepAlgoAPI_Section::ComputePCurveOn1 ( const Standard_Boolean  B)

Indicates if the Pcurve must be (or not) performed on first part.

void BRepAlgoAPI_Section::ComputePCurveOn2 ( const Standard_Boolean  B)

 Define options for the computation of further <br>

intersections, which will be performed by the function Build
in this framework.
By default, no parametric 2D curve (pcurve) is defined for the
elementary edges of the result. If ComputePCurve1 equals true,
further computations performed in this framework with the function
Build will attach an additional pcurve in the parametric space of
the first shape to the constructed edges.
If ComputePCurve2 equals true, the additional pcurve will be
attached to the constructed edges in the parametric space of the
second shape.
These two functions may be used together.

Standard_Boolean BRepAlgoAPI_Section::HasAncestorFaceOn1 ( const TopoDS_Shape E,
TopoDS_Shape F 
) const

get the face of the first part giving section edge <E>.
Returns True on the 3 following conditions :
1/ <E> is an edge returned by the Shape() method.
2/ First part of section performed is a shape.
3/ <E> is built on a intersection curve (i.e <E>
is not the result of common edges)
When False, F remains untouched.

Standard_Boolean BRepAlgoAPI_Section::HasAncestorFaceOn2 ( const TopoDS_Shape E,
TopoDS_Shape F 
) const

  Identifies the ancestor faces of <br>

the intersection edge E resulting from the last
computation performed in this framework, that is, the faces of
the two original shapes on which the edge E lies:

  • HasAncestorFaceOn1 gives the ancestor face in the first shape, and
  • HasAncestorFaceOn2 gives the ancestor face in the second shape.
    These functions return true if an ancestor face F is found, or false if not.
    An ancestor face is identifiable for the edge E if the following
    conditions are satisfied:
  • the first part on which this algorithm performed its
    last computation is a shape, that is, it was not given as
    a surface or a plane at the time of construction of this
    algorithm or at a later time by the Init1 function,
  • E is one of the elementary edges built by the
    last computation of this section algorithm.
    To use these functions properly, you have to test the returned
    Boolean value before using the ancestor face: F is significant
    only if the returned Boolean value equals true.
void BRepAlgoAPI_Section::Init1 ( const TopoDS_Shape S1)

initialize first part

void BRepAlgoAPI_Section::Init1 ( const gp_Pln Pl)

initialize first part

void BRepAlgoAPI_Section::Init1 ( const Handle< Geom_Surface > &  Sf)

initialize first part

void BRepAlgoAPI_Section::Init2 ( const TopoDS_Shape S2)

initialize second part

void BRepAlgoAPI_Section::Init2 ( const gp_Pln Pl)

initialize second part

void BRepAlgoAPI_Section::Init2 ( const Handle< Geom_Surface > &  Sf)

 Reinitializes the first and the <br>

second parts on which this algorithm is going to perform
the intersection computation. This is done with either: the
surface Sf, the plane Pl or the shape Sh.
You use the function Build to construct the result.


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