# 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.6.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.Adaptor3d
import OCC.Core.Geom
import OCC.Core.TColgp
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.math

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




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 false, else returns true. this method differs from the previous one in the fact that no geometric controls (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 false, else returns true. this method differs from the previous one in the fact that no geometric controls (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 thes from me.

        Parameters
        ----------
        theS: TopoDS_Shape

        Returns
        -------
        None

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

    def Replace(self, *args) -> "void":
        r"""
        Replace theolds by thenews. theolds disappear from this.

        Parameters
        ----------
        theOldS: TopoDS_Shape
        theNewS: 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_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 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 SetImageVV(self, *args) -> "void":
        r"""
        Sets the image vertex - vertex.

        Parameters
        ----------
        theImageVV: BRepAlgo_Image

        Returns
        -------
        None

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

    def UpdateVEmap(self, *args) -> "void":
        r"""
        Update ve map according to image vertex - vertex.

        Parameters
        ----------
        theVEmap: TopTools_IndexedDataMapOfShapeListOfShape

        Returns
        -------
        None

        """
        return _BRepAlgo.BRepAlgo_Loop_UpdateVEmap(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 required 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)





