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

Construction of the section lines between two shapes.
For this Boolean operation, each face of the first
shape is intersected by each face of the second
shape. The resulting intersection edges are brought
together into a compound object, but not chained or
grouped into wires.
Computation of the intersection of two Shapes or Surfaces
The two parts involved in this Boolean operation may
be defined from geometric surfaces: the most common
use is the computation of the planar section of a shape.
A Section object provides the framework for:
More...

#include <BRepAlgo_Section.hxx>

Inheritance diagram for BRepAlgo_Section:
Inheritance graph
[legend]

Public Member Functions

 BRepAlgo_Section (const TopoDS_Shape &Sh1, const TopoDS_Shape &Sh2, const Standard_Boolean PerformNow=Standard_True)
 
 BRepAlgo_Section (const TopoDS_Shape &Sh, const gp_Pln &Pl, const Standard_Boolean PerformNow=Standard_True)
 
 BRepAlgo_Section (const TopoDS_Shape &Sh, const Handle< Geom_Surface > &Sf, const Standard_Boolean PerformNow=Standard_True)
 
 BRepAlgo_Section (const Handle< Geom_Surface > &Sf, const TopoDS_Shape &Sh, const Standard_Boolean PerformNow=Standard_True)
 
 BRepAlgo_Section (const Handle< Geom_Surface > &Sf1, const Handle< Geom_Surface > &Sf2, const Standard_Boolean PerformNow=Standard_True)
 This and the above algorithms construct a framework for computing the section lines of
More...
 
void Init1 (const TopoDS_Shape &S1)
 Initializes the first part
More...
 
void Init1 (const gp_Pln &Pl)
 Initializes the first part
More...
 
void Init1 (const Handle< Geom_Surface > &Sf)
 Initializes the first part
More...
 
void Init2 (const TopoDS_Shape &S2)
 initialize second part
More...
 
void Init2 (const gp_Pln &Pl)
 Initializes the second part
More...
 
void Init2 (const Handle< Geom_Surface > &Sf)
 
 This and the above algorithms <br>

reinitialize the first and the 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 of further <br>

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.
Note that as a result, pcurves will only be added onto
edges built on new intersection lines.
More...

 
void Build ()
 
  Performs the computation of the section lines <br>

between the 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
 
Identifies the ancestor faces of the new <br>

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...

 
Standard_Boolean HasAncestorFaceOn2 (const TopoDS_Shape &E, TopoDS_Shape &F) const
 
 Identifies the ancestor faces of the new <br>

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 BRepAlgo_BooleanOperation
virtual void Delete ()
 
virtual ~BRepAlgo_BooleanOperation ()
 
void PerformDS ()
 
void Perform (const TopAbs_State St1, const TopAbs_State St2)
 
Handle_TopOpeBRepBuild_HBuilder Builder () const
 
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...
 
virtual const
TopTools_ListOfShape
Modified (const TopoDS_Shape &S)
 Returns the list of shapes modified from the shape
<S>.
More...
 
virtual Standard_Boolean IsDeleted (const TopoDS_Shape &S)
 Returns true if the shape S has been deleted.
More...
 
- Public Member Functions inherited from BRepBuilderAPI_MakeShape
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
 
virtual const
TopTools_ListOfShape
Generated (const TopoDS_Shape &S)
 Returns the list of shapes generated from the
shape <S>.
More...
 
- 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 BRepAlgo_BooleanOperation
 BRepAlgo_BooleanOperation (const TopoDS_Shape &S1, const TopoDS_Shape &S2)
 Prepares the operations for S1 and S2.
More...
 
void BuilderCanWork (const Standard_Boolean B)
 
Standard_Boolean BuilderCanWork () const
 
- 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 BRepAlgo_BooleanOperation
Handle_TopOpeBRepBuild_HBuilder myHBuilder
 
TopoDS_Shape myS1
 
TopoDS_Shape myS2
 
- Protected Attributes inherited from BRepBuilderAPI_MakeShape
TopoDS_Shape myShape
 
TopTools_ListOfShape myGenerated
 

Detailed Description

Construction of the section lines between two shapes.
For this Boolean operation, each face of the first
shape is intersected by each face of the second
shape. The resulting intersection edges are brought
together into a compound object, but not chained or
grouped into wires.
Computation of the intersection of two Shapes or Surfaces
The two parts involved in this Boolean operation may
be defined from geometric surfaces: the most common
use is the computation of the planar section of a shape.
A Section object provides the framework for:

Constructor & Destructor Documentation

BRepAlgo_Section::BRepAlgo_Section ( const TopoDS_Shape Sh1,
const TopoDS_Shape Sh2,
const Standard_Boolean  PerformNow = Standard_True 
)
BRepAlgo_Section::BRepAlgo_Section ( const TopoDS_Shape Sh,
const gp_Pln Pl,
const Standard_Boolean  PerformNow = Standard_True 
)
BRepAlgo_Section::BRepAlgo_Section ( const TopoDS_Shape Sh,
const Handle< Geom_Surface > &  Sf,
const Standard_Boolean  PerformNow = Standard_True 
)
BRepAlgo_Section::BRepAlgo_Section ( const Handle< Geom_Surface > &  Sf,
const TopoDS_Shape Sh,
const Standard_Boolean  PerformNow = Standard_True 
)
BRepAlgo_Section::BRepAlgo_Section ( const Handle< Geom_Surface > &  Sf1,
const Handle< Geom_Surface > &  Sf2,
const Standard_Boolean  PerformNow = Standard_True 
)

This and the above algorithms construct a framework for computing the section lines of

  • the two shapes Sh1 and Sh2, or
  • the shape Sh and the plane Pl, or
  • the shape Sh and the surface Sf, or
  • the surface Sf and the shape Sh, or
  • the two surfaces Sf1 and Sf2,
    and builds the 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.
    Note that as a result, pcurves will only be added on
    edges built on new intersection lines.
    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 shape S1,
    • no pcurve in the parametric space of the shape S2.
      // TopoDS_Shape S1 = ... , S2 = ... ;
      Standard_Boolean PerformNow = Standard_False;
      BRepAlgo_Section S ( S1, S2, PerformNow );
      S.ComputePCurveOn1 (Standard_True);
      S.Approximation (Standard_True);
      S.Build();
      TopoDS_Shape R = S.Shape();

Member Function Documentation

void BRepAlgo_Section::Approximation ( const Standard_Boolean  B)

 Defines an option for computation of further <br>

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 BRepAlgo_Section::Build ( )
virtual

  Performs the computation of the section lines <br>

between the 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 the 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.
    Note that as a result, pcurves are added on edges
    built on new intersection lines only.
    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 BRepBuilderAPI_MakeShape.

void BRepAlgo_Section::ComputePCurveOn1 ( const Standard_Boolean  B)

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

void BRepAlgo_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.
Note that as a result, pcurves will only be added onto
edges built on new intersection lines.

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

Identifies the ancestor faces of the new <br>

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
    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
    three 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,
  • the edge E is built on an intersection curve. In
    other words, E is a new edge built on the
    intersection curve, not on edges belonging to the
    intersecting shapes.
    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.
Standard_Boolean BRepAlgo_Section::HasAncestorFaceOn2 ( const TopoDS_Shape E,
TopoDS_Shape F 
) const

 Identifies the ancestor faces of the new <br>

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:

  • 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
    three 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,
  • the edge E is built on an intersection curve. In
    other words, E is a new edge built on the
    intersection curve, not on edges belonging to the
    intersecting shapes.
    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 BRepAlgo_Section::Init1 ( const TopoDS_Shape S1)

Initializes the first part

void BRepAlgo_Section::Init1 ( const gp_Pln Pl)

Initializes the first part

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

Initializes the first part

void BRepAlgo_Section::Init2 ( const TopoDS_Shape S2)

initialize second part

void BRepAlgo_Section::Init2 ( const gp_Pln Pl)

Initializes the second part

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

 This and the above algorithms <br>

reinitialize the first and the 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: