# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

"""
BRepAlgo module, see official documentation at
https://www.opencascade.com/doc/occt-7.4.0/refman/html/package_brepalgo.html
"""

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")

# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _BRepAlgo
else:
    import _BRepAlgo

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


class SwigPyIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _BRepAlgo.delete_SwigPyIterator

    def value(self) -> "PyObject *":
        return _BRepAlgo.SwigPyIterator_value(self)

    def incr(self, n: "size_t"=1) -> "swig::SwigPyIterator *":
        return _BRepAlgo.SwigPyIterator_incr(self, n)

    def decr(self, n: "size_t"=1) -> "swig::SwigPyIterator *":
        return _BRepAlgo.SwigPyIterator_decr(self, n)

    def distance(self, x: "SwigPyIterator") -> "ptrdiff_t":
        return _BRepAlgo.SwigPyIterator_distance(self, x)

    def equal(self, x: "SwigPyIterator") -> "bool":
        return _BRepAlgo.SwigPyIterator_equal(self, x)

    def copy(self) -> "swig::SwigPyIterator *":
        return _BRepAlgo.SwigPyIterator_copy(self)

    def next(self) -> "PyObject *":
        return _BRepAlgo.SwigPyIterator_next(self)

    def __next__(self) -> "PyObject *":
        return _BRepAlgo.SwigPyIterator___next__(self)

    def previous(self) -> "PyObject *":
        return _BRepAlgo.SwigPyIterator_previous(self)

    def advance(self, n: "ptrdiff_t") -> "swig::SwigPyIterator *":
        return _BRepAlgo.SwigPyIterator_advance(self, n)

    def __eq__(self, x: "SwigPyIterator") -> "bool":
        return _BRepAlgo.SwigPyIterator___eq__(self, x)

    def __ne__(self, x: "SwigPyIterator") -> "bool":
        return _BRepAlgo.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator &":
        return _BRepAlgo.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator &":
        return _BRepAlgo.SwigPyIterator___isub__(self, n)

    def __add__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator *":
        return _BRepAlgo.SwigPyIterator___add__(self, n)

    def __sub__(self, *args) -> "ptrdiff_t":
        return _BRepAlgo.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _BRepAlgo:
_BRepAlgo.SwigPyIterator_swigregister(SwigPyIterator)


def _dumps_object(klass):
    """ Overwrite default string output for any wrapped object.
    By default, __repr__ method returns something like:
    <OCC.Core.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 'TopoDS_Shape *' at 0x02BB0758> >
    This is too much verbose.
    We prefer :
    <class 'gp_Pnt'>
    or
    <class 'TopoDS_Shape'>
    """
    klass_name = str(klass.__class__).split(".")[3].split("'")[0]
    repr_string = "<class '" + klass_name + "'"
# for TopoDS_Shape, we also look for the base type
    if klass_name == "TopoDS_Shape":
        if klass.IsNull():
            repr_string += ": Null>"
            return repr_string
        st = klass.ShapeType()
        types = {OCC.Core.TopAbs.TopAbs_VERTEX: "Vertex",
                 OCC.Core.TopAbs.TopAbs_SOLID: "Solid",
                 OCC.Core.TopAbs.TopAbs_EDGE: "Edge",
                 OCC.Core.TopAbs.TopAbs_FACE: "Face",
                 OCC.Core.TopAbs.TopAbs_SHELL: "Shell",
                 OCC.Core.TopAbs.TopAbs_WIRE: "Wire",
                 OCC.Core.TopAbs.TopAbs_COMPOUND: "Compound",
                 OCC.Core.TopAbs.TopAbs_COMPSOLID: "Compsolid"}
        repr_string += "; Type:%s" % types[st]        
    elif hasattr(klass, "IsNull"):
        if klass.IsNull():
            repr_string += "; Null"
    repr_string += ">"
    return repr_string


def process_exception(error: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    return _BRepAlgo.process_exception(error, method_name, class_name)

from six import with_metaclass
import warnings
from OCC.Wrapper.wrapper_utils import Proxy, deprecated

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.TopoDS
import OCC.Core.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.GeomAbs
import OCC.Core.TopTools
import OCC.Core.BRepBuilderAPI
import OCC.Core.Geom
import OCC.Core.TColgp
import OCC.Core.BRepTools
import OCC.Core.Bnd
import OCC.Core.BVH
import OCC.Core.Geom2d
import OCC.Core.BRep
import OCC.Core.Poly
import OCC.Core.TShort
import OCC.Core.TopOpeBRepBuild
import OCC.Core.TopOpeBRepDS
import OCC.Core.TopOpeBRepTool
import OCC.Core.BRepClass3d
import OCC.Core.IntCurveSurface
import OCC.Core.math
import OCC.Core.Adaptor3d
import OCC.Core.Adaptor2d
import OCC.Core.Intf
import OCC.Core.IntSurf
import OCC.Core.IntCurvesFace
import OCC.Core.BRepAdaptor
import OCC.Core.GeomAdaptor
import OCC.Core.Geom2dAdaptor
import OCC.Core.TopExp
import OCC.Core.Extrema

from enum import IntEnum
from OCC.Core.Exception import *

BRepAlgo_OK = _BRepAlgo.BRepAlgo_OK
BRepAlgo_NOK = _BRepAlgo.BRepAlgo_NOK


class BRepAlgo_CheckStatus(IntEnum):
	BRepAlgo_OK = 0
	BRepAlgo_NOK = 1
BRepAlgo_OK = BRepAlgo_CheckStatus.BRepAlgo_OK
BRepAlgo_NOK = BRepAlgo_CheckStatus.BRepAlgo_NOK


def Handle_BRepAlgo_AsDes_Create() -> "opencascade::handle< BRepAlgo_AsDes >":
    return _BRepAlgo.Handle_BRepAlgo_AsDes_Create()

def Handle_BRepAlgo_AsDes_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< BRepAlgo_AsDes >":
    return _BRepAlgo.Handle_BRepAlgo_AsDes_DownCast(t)

def Handle_BRepAlgo_AsDes_IsNull(t: "opencascade::handle< BRepAlgo_AsDes > const &") -> "bool":
    return _BRepAlgo.Handle_BRepAlgo_AsDes_IsNull(t)
class brepalgo(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def ConcatenateWire(*args) -> "TopoDS_Wire":
        r"""
        This method makes a wire whose edges are c1 from a wire whose edges could be g1. it removes a vertex between g1 edges. option can be g1 or c1.

        Parameters
        ----------
        Wire: TopoDS_Wire
        Option: GeomAbs_Shape
        AngularTolerance: float,optional
        	default value is 1.0e-4

        Returns
        -------
        TopoDS_Wire

        """
        return _BRepAlgo.brepalgo_ConcatenateWire(*args)

    @staticmethod
    def ConcatenateWireC0(*args) -> "TopoDS_Edge":
        r"""
        This method makes an edge from a wire. junction points between edges of wire may be sharp, resulting curve of the resulting edge may be c0.

        Parameters
        ----------
        Wire: TopoDS_Wire

        Returns
        -------
        TopoDS_Edge

        """
        return _BRepAlgo.brepalgo_ConcatenateWireC0(*args)

    @staticmethod
    def IsTopologicallyValid(*args) -> "Standard_Boolean":
        r"""
        Checks if the shape is 'correct'. if not, returns <standard_false>, else returns <standard_true>. this method differs from the previous one in the fact that no geometric contols (intersection of wires, pcurve validity) are performed.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        bool

        """
        return _BRepAlgo.brepalgo_IsTopologicallyValid(*args)

    @staticmethod
    def IsValid(*args) -> "Standard_Boolean":
        r"""
        Checks if the shape is 'correct'. if not, returns <standard_false>, else returns <standard_true>.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        bool
        Checks if the generated and modified faces from the shapes <arguments> in the shape <result> are 'correct'. the args may be empty, then all faces will be checked. if <closed> is true, only closed shape are valid. if <geomctrl> is false the geometry of new vertices and edges are not verified and the auto-intersection of new wires are not searched.

        Parameters
        ----------
        theArgs: TopTools_ListOfShape
        theResult: TopoDS_Shape
        closedSolid: bool,optional
        	default value is Standard_False
        GeomCtrl: bool,optional
        	default value is Standard_True

        Returns
        -------
        bool

        """
        return _BRepAlgo.brepalgo_IsValid(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _BRepAlgo.brepalgo_swiginit(self, _BRepAlgo.new_brepalgo())
    __swig_destroy__ = _BRepAlgo.delete_brepalgo

# Register brepalgo in _BRepAlgo:
_BRepAlgo.brepalgo_swigregister(brepalgo)

def brepalgo_ConcatenateWire(*args) -> "TopoDS_Wire":
    r"""
    This method makes a wire whose edges are c1 from a wire whose edges could be g1. it removes a vertex between g1 edges. option can be g1 or c1.

    Parameters
    ----------
    Wire: TopoDS_Wire
    Option: GeomAbs_Shape
    AngularTolerance: float,optional
    	default value is 1.0e-4

    Returns
    -------
    TopoDS_Wire

    """
    return _BRepAlgo.brepalgo_ConcatenateWire(*args)

def brepalgo_ConcatenateWireC0(*args) -> "TopoDS_Edge":
    r"""
    This method makes an edge from a wire. junction points between edges of wire may be sharp, resulting curve of the resulting edge may be c0.

    Parameters
    ----------
    Wire: TopoDS_Wire

    Returns
    -------
    TopoDS_Edge

    """
    return _BRepAlgo.brepalgo_ConcatenateWireC0(*args)

def brepalgo_IsTopologicallyValid(*args) -> "Standard_Boolean":
    r"""
    Checks if the shape is 'correct'. if not, returns <standard_false>, else returns <standard_true>. this method differs from the previous one in the fact that no geometric contols (intersection of wires, pcurve validity) are performed.

    Parameters
    ----------
    S: TopoDS_Shape

    Returns
    -------
    bool

    """
    return _BRepAlgo.brepalgo_IsTopologicallyValid(*args)

def brepalgo_IsValid(*args) -> "Standard_Boolean":
    r"""
    Checks if the shape is 'correct'. if not, returns <standard_false>, else returns <standard_true>.

    Parameters
    ----------
    S: TopoDS_Shape

    Returns
    -------
    bool
    Checks if the generated and modified faces from the shapes <arguments> in the shape <result> are 'correct'. the args may be empty, then all faces will be checked. if <closed> is true, only closed shape are valid. if <geomctrl> is false the geometry of new vertices and edges are not verified and the auto-intersection of new wires are not searched.

    Parameters
    ----------
    theArgs: TopTools_ListOfShape
    theResult: TopoDS_Shape
    closedSolid: bool,optional
    	default value is Standard_False
    GeomCtrl: bool,optional
    	default value is Standard_True

    Returns
    -------
    bool

    """
    return _BRepAlgo.brepalgo_IsValid(*args)

class BRepAlgo_AsDes(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Creates an empty asdes.

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_AsDes_swiginit(self, _BRepAlgo.new_BRepAlgo_AsDes(*args))

    def Add(self, *args) -> "void":
        r"""
        Stores <ss> as a futur subshape of <s>.

        Parameters
        ----------
        S: TopoDS_Shape
        SS: TopoDS_Shape

        Returns
        -------
        None
        Stores <ss> as futurs subshapes of <s>.

        Parameters
        ----------
        S: TopoDS_Shape
        SS: TopTools_ListOfShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_AsDes_Add(self, *args)

    def Ascendant(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the shape containing <s>.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_AsDes_Ascendant(self, *args)

    def ChangeDescendant(self, *args) -> "TopTools_ListOfShape &":
        r"""
        Returns futur subhapes of <s>.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_AsDes_ChangeDescendant(self, *args)

    def Clear(self, *args) -> "void":
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_AsDes_Clear(self, *args)

    def Descendant(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns futur subhapes of <s>.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_AsDes_Descendant(self, *args)

    def HasAscendant(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_AsDes_HasAscendant(self, *args)

    def HasCommonDescendant(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if (s1> and <s2> has common descendants. stores in <lc> the commons descendants.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        LC: TopTools_ListOfShape

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_AsDes_HasCommonDescendant(self, *args)

    def HasDescendant(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_AsDes_HasDescendant(self, *args)

    def Remove(self, *args) -> "void":
        r"""
        Remove <s> from me.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_AsDes_Remove(self, *args)

    def Replace(self, *args) -> "void":
        r"""
        Replace <olds> by <news>. <olds> disapear from <self>.

        Parameters
        ----------
        OldS: TopoDS_Shape
        NewS: TopoDS_Shape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_AsDes_Replace(self, *args)


    @staticmethod
    def DownCast(t):
      return Handle_BRepAlgo_AsDes_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_AsDes

# Register BRepAlgo_AsDes in _BRepAlgo:
_BRepAlgo.BRepAlgo_AsDes_swigregister(BRepAlgo_AsDes)

class BRepAlgo_BooleanOperation(OCC.Core.BRepBuilderAPI.BRepBuilderAPI_MakeShape):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def Builder(self, *args) -> "opencascade::handle< TopOpeBRepBuild_HBuilder >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<TopOpeBRepBuild_HBuilder>

        """
        return _BRepAlgo.BRepAlgo_BooleanOperation_Builder(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        St1: TopAbs_State
        St2: TopAbs_State

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_BooleanOperation_Perform(self, *args)

    def PerformDS(self, *args) -> "void":
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_BooleanOperation_PerformDS(self, *args)

    def Shape1(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the first shape involved in this boolean operation.

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepAlgo.BRepAlgo_BooleanOperation_Shape1(self, *args)

    def Shape2(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the second shape involved in this boolean operation.

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepAlgo.BRepAlgo_BooleanOperation_Shape2(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_BooleanOperation

# Register BRepAlgo_BooleanOperation in _BRepAlgo:
_BRepAlgo.BRepAlgo_BooleanOperation_swigregister(BRepAlgo_BooleanOperation)

class BRepAlgo_FaceRestrictor(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_FaceRestrictor_swiginit(self, _BRepAlgo.new_BRepAlgo_FaceRestrictor(*args))

    def Add(self, *args) -> "void":
        r"""
        Add the wire <w> to the set of wires. //! warning: the wires must be closed. //! the edges of <w> can be modified if they have not pcurves on the surface <s> of <f>. in this case if <proj> is false the first pcurve of the edge is positionned on <s>. if <proj> is true ,the pcurve on <s> is the projection of the curve 3d on <f>.

        Parameters
        ----------
        W: TopoDS_Wire

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_FaceRestrictor_Add(self, *args)

    def Clear(self, *args) -> "void":
        r"""
        Removes all the wires.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_FaceRestrictor_Clear(self, *args)

    def Current(self, *args) -> "TopoDS_Face":
        r"""
        No available documentation.

        Returns
        -------
        TopoDS_Face

        """
        return _BRepAlgo.BRepAlgo_FaceRestrictor_Current(self, *args)

    def Init(self, *args) -> "void":
        r"""
        The surface of <f> will be the the surface of each new faces built. <proj> is used to update pcurves on edges if necessary. see add().

        Parameters
        ----------
        F: TopoDS_Face
        Proj: bool,optional
        	default value is Standard_False
        ControlOrientation: bool,optional
        	default value is Standard_False

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_FaceRestrictor_Init(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_FaceRestrictor_IsDone(self, *args)

    def More(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_FaceRestrictor_More(self, *args)

    def Next(self, *args) -> "void":
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_FaceRestrictor_Next(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Evaluate all the faces limited by the set of wires.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_FaceRestrictor_Perform(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_FaceRestrictor

# Register BRepAlgo_FaceRestrictor in _BRepAlgo:
_BRepAlgo.BRepAlgo_FaceRestrictor_swigregister(BRepAlgo_FaceRestrictor)

class BRepAlgo_Image(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_Image_swiginit(self, _BRepAlgo.new_BRepAlgo_Image(*args))

    def Add(self, *args) -> "void":
        r"""
        Add <news> to the image of <olds>.

        Parameters
        ----------
        OldS: TopoDS_Shape
        NewS: TopoDS_Shape

        Returns
        -------
        None
        Add <news> to the image of <olds>.

        Parameters
        ----------
        OldS: TopoDS_Shape
        NewS: TopTools_ListOfShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_Add(self, *args)

    def Bind(self, *args) -> "void":
        r"""
        Links <news> as image of <olds>.

        Parameters
        ----------
        OldS: TopoDS_Shape
        NewS: TopoDS_Shape

        Returns
        -------
        None
        Links <news> as image of <olds>.

        Parameters
        ----------
        OldS: TopoDS_Shape
        NewS: TopTools_ListOfShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_Bind(self, *args)

    def Clear(self, *args) -> "void":
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_Clear(self, *args)

    def Compact(self, *args) -> "void":
        r"""
        Keeps only the link between roots and lastimage.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_Compact(self, *args)

    def Filter(self, *args) -> "void":
        r"""
        Deletes in the images the shape of type <shapetype> which are not in <s>. warning: compact() must be call before.

        Parameters
        ----------
        S: TopoDS_Shape
        ShapeType: TopAbs_ShapeEnum

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_Filter(self, *args)

    def HasImage(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_Image_HasImage(self, *args)

    def Image(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the image of <s>. returns <s> in the list if hasimage(s) is false.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_Image_Image(self, *args)

    def ImageFrom(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the generator of <s>.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepAlgo.BRepAlgo_Image_ImageFrom(self, *args)

    def IsImage(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_Image_IsImage(self, *args)

    def LastImage(self, *args) -> "void":
        r"""
        Stores in <l> the images of images of...images of <s>. <l> contains only <s> if hasimage(s) is false.

        Parameters
        ----------
        S: TopoDS_Shape
        L: TopTools_ListOfShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_LastImage(self, *args)

    def Remove(self, *args) -> "void":
        r"""
        Remove <s> to set of images.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_Remove(self, *args)

    def RemoveRoot(self, *args) -> "void":
        r"""
        Removes the root <theroot> from the list of roots and up and down maps.

        Parameters
        ----------
        Root: TopoDS_Shape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_RemoveRoot(self, *args)

    def ReplaceRoot(self, *args) -> "void":
        r"""
        Replaces the <oldroot> with the <newroot>, so all images of the <oldroot> become the images of the <newroot>. the <oldroot> is removed.

        Parameters
        ----------
        OldRoot: TopoDS_Shape
        NewRoot: TopoDS_Shape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_ReplaceRoot(self, *args)

    def Root(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the upper generator of <s>.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepAlgo.BRepAlgo_Image_Root(self, *args)

    def Roots(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        No available documentation.

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_Image_Roots(self, *args)

    def SetRoot(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Image_SetRoot(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_Image

# Register BRepAlgo_Image in _BRepAlgo:
_BRepAlgo.BRepAlgo_Image_swigregister(BRepAlgo_Image)

class BRepAlgo_Loop(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_Loop_swiginit(self, _BRepAlgo.new_BRepAlgo_Loop(*args))

    def AddConstEdge(self, *args) -> "void":
        r"""
        Add <e> as const edge, e can be in the result.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_AddConstEdge(self, *args)

    def AddConstEdges(self, *args) -> "void":
        r"""
        Add <le> as a set of const edges.

        Parameters
        ----------
        LE: TopTools_ListOfShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_AddConstEdges(self, *args)

    def AddEdge(self, *args) -> "void":
        r"""
        Add e with <lv>. <e> will be copied and trim by vertices in <lv>.

        Parameters
        ----------
        E: TopoDS_Edge
        LV: TopTools_ListOfShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_AddEdge(self, *args)

    def CutEdge(self, *args) -> "void":
        r"""
        Cut the edge <e> in several edges <ne> on the vertices<vone>.

        Parameters
        ----------
        E: TopoDS_Edge
        VonE: TopTools_ListOfShape
        NE: TopTools_ListOfShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_CutEdge(self, *args)

    def GetVerticesForSubstitute(self, *args) -> "void":
        r"""
        Returns the datamap of vertices with their substitutes.

        Parameters
        ----------
        VerVerMap: TopTools_DataMapOfShapeShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_GetVerticesForSubstitute(self, *args)

    def Init(self, *args) -> "void":
        r"""
        Init with <f> the set of edges must have pcurves on <f>.

        Parameters
        ----------
        F: TopoDS_Face

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_Init(self, *args)

    def NewEdges(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the list of new edges built from an edge <e> it can be an empty list.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_Loop_NewEdges(self, *args)

    def NewFaces(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the list of faces. warning: the method <wirestofaces> as to be called before. can be an empty list.

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_Loop_NewFaces(self, *args)

    def NewWires(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the list of wires performed. can be an empty list.

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_Loop_NewWires(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Make loops.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_Perform(self, *args)

    def VerticesForSubstitute(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        VerVerMap: TopTools_DataMapOfShapeShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_VerticesForSubstitute(self, *args)

    def WiresToFaces(self, *args) -> "void":
        r"""
        Build faces from the wires result.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_WiresToFaces(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_Loop

# Register BRepAlgo_Loop in _BRepAlgo:
_BRepAlgo.BRepAlgo_Loop_swigregister(BRepAlgo_Loop)

class BRepAlgo_NormalProjection(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_NormalProjection_swiginit(self, _BRepAlgo.new_BRepAlgo_NormalProjection(*args))

    def Add(self, *args) -> "void":
        r"""
        Add an edge or a wire to the list of shape to project.

        Parameters
        ----------
        ToProj: TopoDS_Shape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_Add(self, *args)

    def Ancestor(self, *args) -> "TopoDS_Shape const":
        r"""
        For a resulting edge, returns the corresponding initial edge.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_Ancestor(self, *args)

    def Build(self, *args) -> "void":
        r"""
        Builds the result as a compound.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_Build(self, *args)

    def BuildWire(self, *args) -> "Standard_Boolean":
        r"""
        Build the result as a list of wire if possible in -- a first returns a wire only if there is only a wire.

        Parameters
        ----------
        Liste: TopTools_ListOfShape

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_BuildWire(self, *args)

    def Compute3d(self, *args) -> "void":
        r"""
        If with3d = standard_false the 3dcurve is not computed the initial 3dcurve is kept to build the resulting edges.

        Parameters
        ----------
        With3d: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_Compute3d(self, *args)

    def Couple(self, *args) -> "TopoDS_Shape const":
        r"""
        For a projected edge, returns the corresponding initial face.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_Couple(self, *args)

    def Generated(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the list of shapes generated from the shape <s>.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        TopTools_ListOfShape

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_Generated(self, *args)

    def Init(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        S: TopoDS_Shape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_Init(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_IsDone(self, *args)

    def IsElementary(self, *args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_Curve

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_IsElementary(self, *args)

    def Projection(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the result.

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_Projection(self, *args)

    def SetDefaultParams(self, *args) -> "void":
        r"""
        Set the parameters used for computation in their default values.

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_SetDefaultParams(self, *args)

    def SetLimit(self, *args) -> "void":
        r"""
        Manage limitation of projected edges.

        Parameters
        ----------
        FaceBoundaries: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_SetLimit(self, *args)

    def SetMaxDistance(self, *args) -> "void":
        r"""
        Sets the maximum distance between target shape and shape to project. if this condition is not satisfied then corresponding part of solution is discarded. if maxdist < 0 then this method does not affect the algorithm.

        Parameters
        ----------
        MaxDist: float

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_SetMaxDistance(self, *args)

    def SetParams(self, *args) -> "void":
        r"""
        Set the parameters used for computation tol3d is the requiered tolerance between the 3d projected curve and its 2d representation internalcontinuity is the order of constraints used for approximation. maxdeg and maxseg are the maximum degree and the maximum number of segment for bspline resulting of an approximation.

        Parameters
        ----------
        Tol3D: float
        Tol2D: float
        InternalContinuity: GeomAbs_Shape
        MaxDegree: int
        MaxSeg: int

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_NormalProjection_SetParams(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_NormalProjection

# Register BRepAlgo_NormalProjection in _BRepAlgo:
_BRepAlgo.BRepAlgo_NormalProjection_swigregister(BRepAlgo_NormalProjection)

class BRepAlgo_Tool(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def Deboucle3D(*args) -> "TopoDS_Shape":
        r"""
        Remove the non valid part of an offsetshape 1 - remove all the free boundary and the faces connex to such edges. 2 - remove all the shapes not valid in the result (according to the side of offseting) in this verion only the first point is implemented.

        Parameters
        ----------
        S: TopoDS_Shape
        Boundary: TopTools_MapOfShape

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepAlgo.BRepAlgo_Tool_Deboucle3D(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _BRepAlgo.BRepAlgo_Tool_swiginit(self, _BRepAlgo.new_BRepAlgo_Tool())
    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_Tool

# Register BRepAlgo_Tool in _BRepAlgo:
_BRepAlgo.BRepAlgo_Tool_swigregister(BRepAlgo_Tool)

def BRepAlgo_Tool_Deboucle3D(*args) -> "TopoDS_Shape":
    r"""
    Remove the non valid part of an offsetshape 1 - remove all the free boundary and the faces connex to such edges. 2 - remove all the shapes not valid in the result (according to the side of offseting) in this verion only the first point is implemented.

    Parameters
    ----------
    S: TopoDS_Shape
    Boundary: TopTools_MapOfShape

    Returns
    -------
    TopoDS_Shape

    """
    return _BRepAlgo.BRepAlgo_Tool_Deboucle3D(*args)

class BRepAlgo_Common(BRepAlgo_BooleanOperation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Constructs the common part of shapes s1 and s2.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_Common_swiginit(self, _BRepAlgo.new_BRepAlgo_Common(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_Common

# Register BRepAlgo_Common in _BRepAlgo:
_BRepAlgo.BRepAlgo_Common_swigregister(BRepAlgo_Common)

class BRepAlgo_Cut(BRepAlgo_BooleanOperation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Cuts the shape s2 from the shape s1.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_Cut_swiginit(self, _BRepAlgo.new_BRepAlgo_Cut(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_Cut

# Register BRepAlgo_Cut in _BRepAlgo:
_BRepAlgo.BRepAlgo_Cut_swigregister(BRepAlgo_Cut)

class BRepAlgo_Fuse(BRepAlgo_BooleanOperation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Fuse s1 and s2.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_Fuse_swiginit(self, _BRepAlgo.new_BRepAlgo_Fuse(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_Fuse

# Register BRepAlgo_Fuse in _BRepAlgo:
_BRepAlgo.BRepAlgo_Fuse_swigregister(BRepAlgo_Fuse)

class BRepAlgo_Section(BRepAlgo_BooleanOperation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Parameters
        ----------
        Sh1: TopoDS_Shape
        Sh2: TopoDS_Shape
        PerformNow: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        Sh: TopoDS_Shape
        Pl: gp_Pln
        PerformNow: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        Sh: TopoDS_Shape
        Sf: Geom_Surface
        PerformNow: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        Sf: Geom_Surface
        Sh: TopoDS_Shape
        PerformNow: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        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();.

        Parameters
        ----------
        Sf1: Geom_Surface
        Sf2: Geom_Surface
        PerformNow: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        _BRepAlgo.BRepAlgo_Section_swiginit(self, _BRepAlgo.new_BRepAlgo_Section(*args))

    def Approximation(self, *args) -> "void":
        r"""
        Defines an option for computation 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.

        Parameters
        ----------
        B: bool

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Section_Approximation(self, *args)

    def ComputePCurveOn1(self, *args) -> "void":
        r"""
        Indicates if the pcurve must be (or not) performed on first part.

        Parameters
        ----------
        B: bool

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Section_ComputePCurveOn1(self, *args)

    def ComputePCurveOn2(self, *args) -> "void":
        r"""
        Define options for the computation of further 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.

        Parameters
        ----------
        B: bool

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Section_ComputePCurveOn2(self, *args)

    def HasAncestorFaceOn1(self, *args) -> "Standard_Boolean":
        r"""
        Identifies the ancestor faces of the new 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.

        Parameters
        ----------
        E: TopoDS_Shape
        F: TopoDS_Shape

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_Section_HasAncestorFaceOn1(self, *args)

    def HasAncestorFaceOn2(self, *args) -> "Standard_Boolean":
        r"""
        Identifies the ancestor faces of the new 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.

        Parameters
        ----------
        E: TopoDS_Shape
        F: TopoDS_Shape

        Returns
        -------
        bool

        """
        return _BRepAlgo.BRepAlgo_Section_HasAncestorFaceOn2(self, *args)

    def Init1(self, *args) -> "void":
        r"""
        Initializes the first part.

        Parameters
        ----------
        S1: TopoDS_Shape

        Returns
        -------
        None
        Initializes the first part.

        Parameters
        ----------
        Pl: gp_Pln

        Returns
        -------
        None
        Initializes the first part.

        Parameters
        ----------
        Sf: Geom_Surface

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Section_Init1(self, *args)

    def Init2(self, *args) -> "void":
        r"""
        Initialize second part.

        Parameters
        ----------
        S2: TopoDS_Shape

        Returns
        -------
        None
        Initializes the second part.

        Parameters
        ----------
        Pl: gp_Pln

        Returns
        -------
        None
        This and the above algorithms 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.

        Parameters
        ----------
        Sf: Geom_Surface

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Section_Init2(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgo.delete_BRepAlgo_Section

# Register BRepAlgo_Section in _BRepAlgo:
_BRepAlgo.BRepAlgo_Section_swigregister(BRepAlgo_Section)





