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

"""
BRepExtrema module, see official documentation at
https://www.opencascade.com/doc/occt-7.7.0/refman/html/package_brepextrema.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _BRepExtrema
else:
    import _BRepExtrema

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 == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(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__ = _BRepExtrema.delete_SwigPyIterator

    def value(self):
        return _BRepExtrema.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _BRepExtrema.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _BRepExtrema.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _BRepExtrema.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _BRepExtrema.SwigPyIterator_equal(self, x)

    def copy(self):
        return _BRepExtrema.SwigPyIterator_copy(self)

    def next(self):
        return _BRepExtrema.SwigPyIterator_next(self)

    def __next__(self):
        return _BRepExtrema.SwigPyIterator___next__(self)

    def previous(self):
        return _BRepExtrema.SwigPyIterator_previous(self)

    def advance(self, n):
        return _BRepExtrema.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _BRepExtrema.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _BRepExtrema.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _BRepExtrema.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _BRepExtrema.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _BRepExtrema.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _BRepExtrema.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _BRepExtrema:
_BRepExtrema.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, method_name, class_name):
    return _BRepExtrema.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.Extrema
import OCC.Core.math
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.GeomAdaptor
import OCC.Core.Bnd
import OCC.Core.BVH
import OCC.Core.Poly
import OCC.Core.TShort

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

BRepExtrema_IsVertex = _BRepExtrema.BRepExtrema_IsVertex
BRepExtrema_IsOnEdge = _BRepExtrema.BRepExtrema_IsOnEdge
BRepExtrema_IsInFace = _BRepExtrema.BRepExtrema_IsInFace


class BRepExtrema_SupportType(IntEnum):
	BRepExtrema_IsVertex = 0
	BRepExtrema_IsOnEdge = 1
	BRepExtrema_IsInFace = 2
BRepExtrema_IsVertex = BRepExtrema_SupportType.BRepExtrema_IsVertex
BRepExtrema_IsOnEdge = BRepExtrema_SupportType.BRepExtrema_IsOnEdge
BRepExtrema_IsInFace = BRepExtrema_SupportType.BRepExtrema_IsInFace


def Handle_BRepExtrema_TriangleSet_Create():
    return _BRepExtrema.Handle_BRepExtrema_TriangleSet_Create()

def Handle_BRepExtrema_TriangleSet_DownCast(t):
    return _BRepExtrema.Handle_BRepExtrema_TriangleSet_DownCast(t)

def Handle_BRepExtrema_TriangleSet_IsNull(t):
    return _BRepExtrema.Handle_BRepExtrema_TriangleSet_IsNull(t)
class BRepExtrema_MapOfIntegerPackedMapOfInteger(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_begin(self)

    def end(self):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_end(self)

    def cbegin(self):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_cbegin(self)

    def cend(self):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_cend(self)

    def __init__(self, *args):
        _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_swiginit(self, _BRepExtrema.new_BRepExtrema_MapOfIntegerPackedMapOfInteger(*args))

    def Exchange(self, theOther):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Exchange(self, theOther)

    def Assign(self, theOther):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Assign(self, theOther)

    def Set(self, theOther):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Set(self, theOther)

    def ReSize(self, N):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_ReSize(self, N)

    def Bind(self, theKey, theItem):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Bind(self, theKey, theItem)

    def Bound(self, theKey, theItem):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Bound(self, theKey, theItem)

    def IsBound(self, theKey):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_IsBound(self, theKey)

    def UnBind(self, theKey):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_UnBind(self, theKey)

    def Seek(self, theKey):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Seek(self, theKey)

    def Find(self, *args):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Find(self, *args)

    def ChangeSeek(self, theKey):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_ChangeFind(self, theKey)

    def __call__(self, *args):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger___call__(self, *args)

    def Clear(self, *args):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Clear(self, *args)
    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_MapOfIntegerPackedMapOfInteger

    def Size(self):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Size(self)

    def Keys(self):
        return _BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_Keys(self)

# Register BRepExtrema_MapOfIntegerPackedMapOfInteger in _BRepExtrema:
_BRepExtrema.BRepExtrema_MapOfIntegerPackedMapOfInteger_swigregister(BRepExtrema_MapOfIntegerPackedMapOfInteger)
class BRepExtrema_SeqOfSolution(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_begin(self)

    def end(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_end(self)

    def cbegin(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_cbegin(self)

    def cend(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_cend(self)

    def __init__(self, *args):
        _BRepExtrema.BRepExtrema_SeqOfSolution_swiginit(self, _BRepExtrema.new_BRepExtrema_SeqOfSolution(*args))

    def Size(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Size(self)

    def Length(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Length(self)

    def Lower(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Lower(self)

    def Upper(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Upper(self)

    def IsEmpty(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_IsEmpty(self)

    def Reverse(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Reverse(self)

    def Exchange(self, I, J):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Exchange(self, I, J)

    @staticmethod
    def delNode(theNode, theAl):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_delNode(theNode, theAl)

    def Clear(self, theAllocator=0):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Clear(self, theAllocator)

    def Assign(self, theOther):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Assign(self, theOther)

    def Set(self, theOther):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Set(self, theOther)

    def Remove(self, *args):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Remove(self, *args)

    def Append(self, *args):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Append(self, *args)

    def Prepend(self, *args):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Prepend(self, *args)

    def InsertBefore(self, *args):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_InsertBefore(self, *args)

    def InsertAfter(self, *args):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_InsertAfter(self, *args)

    def Split(self, theIndex, theSeq):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Split(self, theIndex, theSeq)

    def First(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_First(self)

    def ChangeFirst(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_ChangeFirst(self)

    def Last(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Last(self)

    def ChangeLast(self):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_ChangeLast(self)

    def Value(self, theIndex):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_Value(self, theIndex)

    def ChangeValue(self, theIndex):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_ChangeValue(self, theIndex)

    def __call__(self, *args):
        return _BRepExtrema.BRepExtrema_SeqOfSolution___call__(self, *args)

    def SetValue(self, theIndex, theItem):
        return _BRepExtrema.BRepExtrema_SeqOfSolution_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_SeqOfSolution

    def __len__(self):
        return self.Size()


# Register BRepExtrema_SeqOfSolution in _BRepExtrema:
_BRepExtrema.BRepExtrema_SeqOfSolution_swigregister(BRepExtrema_SeqOfSolution)
class BRepExtrema_ShapeList(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self):
        return _BRepExtrema.BRepExtrema_ShapeList_begin(self)

    def end(self):
        return _BRepExtrema.BRepExtrema_ShapeList_end(self)

    def cbegin(self):
        return _BRepExtrema.BRepExtrema_ShapeList_cbegin(self)

    def cend(self):
        return _BRepExtrema.BRepExtrema_ShapeList_cend(self)

    def __init__(self, *args):
        _BRepExtrema.BRepExtrema_ShapeList_swiginit(self, _BRepExtrema.new_BRepExtrema_ShapeList(*args))
    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ShapeList

    def Length(self):
        return _BRepExtrema.BRepExtrema_ShapeList_Length(self)

    def Size(self):
        return _BRepExtrema.BRepExtrema_ShapeList_Size(self)

    def Lower(self):
        return _BRepExtrema.BRepExtrema_ShapeList_Lower(self)

    def Upper(self):
        return _BRepExtrema.BRepExtrema_ShapeList_Upper(self)

    def IsEmpty(self):
        return _BRepExtrema.BRepExtrema_ShapeList_IsEmpty(self)

    def Assign(self, *args):
        return _BRepExtrema.BRepExtrema_ShapeList_Assign(self, *args)

    def Set(self, theOther):
        return _BRepExtrema.BRepExtrema_ShapeList_Set(self, theOther)

    def Append(self, theValue):
        return _BRepExtrema.BRepExtrema_ShapeList_Append(self, theValue)

    def Appended(self):
        return _BRepExtrema.BRepExtrema_ShapeList_Appended(self)

    def Value(self, theIndex):
        return _BRepExtrema.BRepExtrema_ShapeList_Value(self, theIndex)

    def First(self):
        return _BRepExtrema.BRepExtrema_ShapeList_First(self)

    def ChangeFirst(self):
        return _BRepExtrema.BRepExtrema_ShapeList_ChangeFirst(self)

    def Last(self):
        return _BRepExtrema.BRepExtrema_ShapeList_Last(self)

    def ChangeLast(self):
        return _BRepExtrema.BRepExtrema_ShapeList_ChangeLast(self)

    def __call__(self, *args):
        return _BRepExtrema.BRepExtrema_ShapeList___call__(self, *args)

    def ChangeValue(self, theIndex):
        return _BRepExtrema.BRepExtrema_ShapeList_ChangeValue(self, theIndex)

    def SetValue(self, theIndex, theValue):
        return _BRepExtrema.BRepExtrema_ShapeList_SetValue(self, theIndex, theValue)

# Register BRepExtrema_ShapeList in _BRepExtrema:
_BRepExtrema.BRepExtrema_ShapeList_swigregister(BRepExtrema_ShapeList)
class BRepExtrema_DistShapeShape(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"""
        Return
        -------
        None

        Description
        -----------
        Create empty tool.

        Parameters
        ----------
        Shape1: TopoDS_Shape
        Shape2: TopoDS_Shape
        F: Extrema_ExtFlag (optional, default to Extrema_ExtFlag_MINMAX)
        A: Extrema_ExtAlgo (optional, default to Extrema_ExtAlgo_Grad)
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Create tool and computation of the minimum distance (value and pair of points) using default deflection in single thread mode. default deflection value is precision::confusion(). @param shape1 - the first shape for distance computation @param shape2 - the second shape for distance computation @param f and @param a are not used in computation and are obsolete. @param therange - the progress indicator of algorithm.

        Parameters
        ----------
        Shape1: TopoDS_Shape
        Shape2: TopoDS_Shape
        theDeflection: float
        F: Extrema_ExtFlag (optional, default to Extrema_ExtFlag_MINMAX)
        A: Extrema_ExtAlgo (optional, default to Extrema_ExtAlgo_Grad)
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Create tool and computation of the minimum distance (value and pair of points) in single thread mode. default deflection value is precision::confusion(). @param shape1 - the first shape for distance computation @param shape2 - the second shape for distance computation @param thedeflection - the presition of distance computation @param f and @param a are not used in computation and are obsolete. @param therange - the progress indicator of algorithm.

        """
        _BRepExtrema.BRepExtrema_DistShapeShape_swiginit(self, _BRepExtrema.new_BRepExtrema_DistShapeShape(*args))

    def DumpToString(self):
        r"""DumpToString(BRepExtrema_DistShapeShape self) -> std::string"""
        return _BRepExtrema.BRepExtrema_DistShapeShape_DumpToString(self)

    def InnerSolution(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if one of the shapes is a solid and the other shape is completely or partially inside the solid. .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_InnerSolution(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if the minimum distance is found. .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_IsDone(self, *args)

    def IsMultiThread(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns standard_true then computation will be performed in parallel default value is standard_false.

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_IsMultiThread(self, *args)

    def LoadS1(self, *args):
        r"""

        Parameters
        ----------
        Shape1: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Load first shape into extrema .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_LoadS1(self, *args)

    def LoadS2(self, *args):
        r"""

        Parameters
        ----------
        Shape1: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Load second shape into extrema .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_LoadS2(self, *args)

    def NbSolution(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the number of solutions satisfying the minimum distance. .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_NbSolution(self, *args)

    def ParOnEdgeS1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        t: float

        Description
        -----------
        Gives the corresponding parameter t if the nth solution is situated on an edge of the first shape .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_ParOnEdgeS1(self, *args)

    def ParOnEdgeS2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        t: float

        Description
        -----------
        Gives the corresponding parameter t if the nth solution is situated on an edge of the first shape .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_ParOnEdgeS2(self, *args)

    def ParOnFaceS1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        u: float
        v: float

        Description
        -----------
        Gives the corresponding parameters (u,v) if the nth solution is situated on an face of the first shape .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_ParOnFaceS1(self, *args)

    def ParOnFaceS2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        u: float
        v: float

        Description
        -----------
        Gives the corresponding parameters (u,v) if the nth solution is situated on an face of the second shape .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_ParOnFaceS2(self, *args)

    def Perform(self, *args):
        r"""

        Parameters
        ----------
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        bool

        Description
        -----------
        Computation of the minimum distance (value and  couple of points). parameter thedeflection is used  to specify a maximum deviation of extreme distances  from the minimum one.  returns isdone status. therange - the progress indicator of algorithm.

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_Perform(self, *args)

    def PointOnShape1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point corresponding to the <n>th solution on the first shape .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_PointOnShape1(self, *args)

    def PointOnShape2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point corresponding to the <n>th solution on the second shape .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_PointOnShape2(self, *args)

    def SetAlgo(self, *args):
        r"""

        Parameters
        ----------
        A: Extrema_ExtAlgo

        Return
        -------
        None

        Description
        -----------
        Sets unused parameter obsolete .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_SetAlgo(self, *args)

    def SetDeflection(self, *args):
        r"""

        Parameters
        ----------
        theDeflection: float

        Return
        -------
        None

        Description
        -----------
        Sets deflection to computation of the minimum distance .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_SetDeflection(self, *args)

    def SetFlag(self, *args):
        r"""

        Parameters
        ----------
        F: Extrema_ExtFlag

        Return
        -------
        None

        Description
        -----------
        Sets unused parameter obsolete .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_SetFlag(self, *args)

    def SetMultiThread(self, *args):
        r"""

        Parameters
        ----------
        theIsMultiThread: bool

        Return
        -------
        None

        Description
        -----------
        If ismultithread == standard_true then computation will be performed in parallel.

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_SetMultiThread(self, *args)

    def SupportOnShape1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        TopoDS_Shape

        Description
        -----------
        Gives the support where the nth solution on the first shape is situated. this support can be a vertex, an edge or a face. .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_SupportOnShape1(self, *args)

    def SupportOnShape2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        TopoDS_Shape

        Description
        -----------
        Gives the support where the nth solution on the second shape is situated. this support can be a vertex, an edge or a face. .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_SupportOnShape2(self, *args)

    def SupportTypeShape1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        BRepExtrema_SupportType

        Description
        -----------
        Gives the type of the support where the nth solution on the first shape is situated: isvertex => the nth solution on the first shape is a vertex isonedge => the nth soluion on the first shape is on a edge isinface => the nth solution on the first shape is inside a face the corresponding support is obtained by the method supportonshape1 .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_SupportTypeShape1(self, *args)

    def SupportTypeShape2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        BRepExtrema_SupportType

        Description
        -----------
        Gives the type of the support where the nth solution on the second shape is situated: isvertex => the nth solution on the second shape is a vertex isonedge => the nth soluion on the secondt shape is on a edge isinface => the nth solution on the second shape is inside a face the corresponding support is obtained by the method supportonshape2 .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_SupportTypeShape2(self, *args)

    def Value(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the value of the minimum distance. .

        """
        return _BRepExtrema.BRepExtrema_DistShapeShape_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_DistShapeShape

# Register BRepExtrema_DistShapeShape in _BRepExtrema:
_BRepExtrema.BRepExtrema_DistShapeShape_swigregister(BRepExtrema_DistShapeShape)
class BRepExtrema_DistanceSS(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"""

        Parameters
        ----------
        theS1: TopoDS_Shape
        theS2: TopoDS_Shape
        theBox1: Bnd_Box
        theBox2: Bnd_Box
        theDstRef: float
        theDeflection: float (optional, default to Precision::Confusion())
        theExtFlag: Extrema_ExtFlag (optional, default to Extrema_ExtFlag_MINMAX)
        theExtAlgo: Extrema_ExtAlgo (optional, default to Extrema_ExtAlgo_Grad)

        Return
        -------
        None

        Description
        -----------
        Computes the distance between two shapes (face edge vertex). @param thes1 - first shape @param thes2 - second shape @param thebox1 - bounding box of first shape @param thebox2 - bounding box of second shape @param thedstref - initial distance between the shapes to start with @param thedeflection - maximum deviation of extreme distances from the minimum one (default is precision::confusion()). @param theextflag - specifies which extrema solutions to look for (default is minmax, applied only to point-face extrema) @param theextalgo - specifies which extrema algorithm is to be used (default is grad algo, applied only to point-face extrema).

        """
        _BRepExtrema.BRepExtrema_DistanceSS_swiginit(self, _BRepExtrema.new_BRepExtrema_DistanceSS(*args))

    def DistValue(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the distance value.

        """
        return _BRepExtrema.BRepExtrema_DistanceSS_DistValue(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the distance has been computed, false otherwise.

        """
        return _BRepExtrema.BRepExtrema_DistanceSS_IsDone(self, *args)

    def Seq1Value(self, *args):
        r"""
        Return
        -------
        BRepExtrema_SeqOfSolution

        Description
        -----------
        Returns the list of solutions on the first shape.

        """
        return _BRepExtrema.BRepExtrema_DistanceSS_Seq1Value(self, *args)

    def Seq2Value(self, *args):
        r"""
        Return
        -------
        BRepExtrema_SeqOfSolution

        Description
        -----------
        Returns the list of solutions on the second shape.

        """
        return _BRepExtrema.BRepExtrema_DistanceSS_Seq2Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_DistanceSS

# Register BRepExtrema_DistanceSS in _BRepExtrema:
_BRepExtrema.BRepExtrema_DistanceSS_swigregister(BRepExtrema_DistanceSS)
class BRepExtrema_ElementFilter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    NoCheck = _BRepExtrema.BRepExtrema_ElementFilter_NoCheck
    Overlap = _BRepExtrema.BRepExtrema_ElementFilter_Overlap
    DoCheck = _BRepExtrema.BRepExtrema_ElementFilter_DoCheck


    class FilterResult(IntEnum):
    	NoCheck = 0
    	Overlap = 1
    	DoCheck = 2
    NoCheck = FilterResult.NoCheck
    Overlap = FilterResult.Overlap
    DoCheck = FilterResult.DoCheck


    def PreCheckElements(self, *args):
        r"""

        Parameters
        ----------
        Standard_Integer: 
        Standard_Integer: 

        Return
        -------
        BRepExtrema_ElementFilter::FilterResult

        Description
        -----------
        Checks if two mesh elements should be tested for overlapping/intersection (used for detection correct/incorrect cases of shared edges and vertices).

        """
        return _BRepExtrema.BRepExtrema_ElementFilter_PreCheckElements(self, *args)

    __repr__ = _dumps_object


    def __init__(self):
        _BRepExtrema.BRepExtrema_ElementFilter_swiginit(self, _BRepExtrema.new_BRepExtrema_ElementFilter())
    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ElementFilter

# Register BRepExtrema_ElementFilter in _BRepExtrema:
_BRepExtrema.BRepExtrema_ElementFilter_swigregister(BRepExtrema_ElementFilter)
class BRepExtrema_ExtCC(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"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        E1: TopoDS_Edge
        E2: TopoDS_Edge

        Return
        -------
        None

        Description
        -----------
        It calculates all the distances. .

        """
        _BRepExtrema.BRepExtrema_ExtCC_swiginit(self, _BRepExtrema.new_BRepExtrema_ExtCC(*args))

    def Initialize(self, *args):
        r"""

        Parameters
        ----------
        E2: TopoDS_Edge

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _BRepExtrema.BRepExtrema_ExtCC_Initialize(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if the distances are found. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_IsDone(self, *args)

    def IsParallel(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if e1 and e2 are parallel. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_IsParallel(self, *args)

    def NbExt(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the number of extremum distances. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_NbExt(self, *args)

    def ParameterOnE1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the parameter on the first edge of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_ParameterOnE1(self, *args)

    def ParameterOnE2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the parameter on the second edge of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_ParameterOnE2(self, *args)

    def Perform(self, *args):
        r"""

        Parameters
        ----------
        E1: TopoDS_Edge

        Return
        -------
        None

        Description
        -----------
        An exception is raised if the fields have not been initialized. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_Perform(self, *args)

    def PointOnE1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point of the <n>th extremum distance on the edge e1. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_PointOnE1(self, *args)

    def PointOnE2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point of the <n>th extremum distance on the edge e2. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_PointOnE2(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the value of the <n>th extremum square distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args):
        r"""

        Parameters
        ----------
        P11: gp_Pnt
        P12: gp_Pnt
        P21: gp_Pnt
        P22: gp_Pnt

        Return
        -------
        dist11: float
        distP12: float
        distP21: float
        distP22: float

        Description
        -----------
        If the edges is a trimmed curve, dist11 is a square distance between the point on e1 of parameter firstparameter and the point of parameter firstparameter on e2. .

        """
        return _BRepExtrema.BRepExtrema_ExtCC_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ExtCC

# Register BRepExtrema_ExtCC in _BRepExtrema:
_BRepExtrema.BRepExtrema_ExtCC_swigregister(BRepExtrema_ExtCC)
class BRepExtrema_ExtCF(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"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        E: TopoDS_Edge
        F: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        It calculates all the distances. .

        """
        _BRepExtrema.BRepExtrema_ExtCF_swiginit(self, _BRepExtrema.new_BRepExtrema_ExtCF(*args))

    def Initialize(self, *args):
        r"""

        Parameters
        ----------
        E: TopoDS_Edge
        F: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _BRepExtrema.BRepExtrema_ExtCF_Initialize(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if the distances are found. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_IsDone(self, *args)

    def IsParallel(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the curve is on a parallel surface. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_IsParallel(self, *args)

    def NbExt(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the number of extremum distances. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_NbExt(self, *args)

    def ParameterOnEdge(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the parameters on the edge of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_ParameterOnEdge(self, *args)

    def ParameterOnFace(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        U: float
        V: float

        Description
        -----------
        Returns the parameters on the face of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_ParameterOnFace(self, *args)

    def Perform(self, *args):
        r"""

        Parameters
        ----------
        E: TopoDS_Edge
        F: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        An exception is raised if the fields have not been initialized. be careful: this method uses the face only for classify not for the fields. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_Perform(self, *args)

    def PointOnEdge(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_PointOnEdge(self, *args)

    def PointOnFace(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_PointOnFace(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the value of the <n>th extremum square distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtCF_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ExtCF

# Register BRepExtrema_ExtCF in _BRepExtrema:
_BRepExtrema.BRepExtrema_ExtCF_swigregister(BRepExtrema_ExtCF)
class BRepExtrema_ExtFF(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"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        F1: TopoDS_Face
        F2: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        It calculates all the distances. .

        """
        _BRepExtrema.BRepExtrema_ExtFF_swiginit(self, _BRepExtrema.new_BRepExtrema_ExtFF(*args))

    def Initialize(self, *args):
        r"""

        Parameters
        ----------
        F2: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _BRepExtrema.BRepExtrema_ExtFF_Initialize(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if the distances are found. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_IsDone(self, *args)

    def IsParallel(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Returns true if the surfaces are parallel. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_IsParallel(self, *args)

    def NbExt(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the number of extremum distances. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_NbExt(self, *args)

    def ParameterOnFace1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        U: float
        V: float

        Description
        -----------
        Returns the parameters on the face f1 of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_ParameterOnFace1(self, *args)

    def ParameterOnFace2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        U: float
        V: float

        Description
        -----------
        Returns the parameters on the face f2 of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_ParameterOnFace2(self, *args)

    def Perform(self, *args):
        r"""

        Parameters
        ----------
        F1: TopoDS_Face
        F2: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        An exception is raised if the fields have not been initialized. be careful: this method uses the face f2 only for classify, not for the fields. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_Perform(self, *args)

    def PointOnFace1(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_PointOnFace1(self, *args)

    def PointOnFace2(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_PointOnFace2(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the value of the <n>th extremum square distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtFF_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ExtFF

# Register BRepExtrema_ExtFF in _BRepExtrema:
_BRepExtrema.BRepExtrema_ExtFF_swigregister(BRepExtrema_ExtFF)
class BRepExtrema_ExtPC(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"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        V: TopoDS_Vertex
        E: TopoDS_Edge

        Return
        -------
        None

        Description
        -----------
        It calculates all the distances. .

        """
        _BRepExtrema.BRepExtrema_ExtPC_swiginit(self, _BRepExtrema.new_BRepExtrema_ExtPC(*args))

    def Initialize(self, *args):
        r"""

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

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _BRepExtrema.BRepExtrema_ExtPC_Initialize(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if the distances are found. .

        """
        return _BRepExtrema.BRepExtrema_ExtPC_IsDone(self, *args)

    def IsMin(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        bool

        Description
        -----------
        Returns true if the <n>th extremum distance is a minimum. .

        """
        return _BRepExtrema.BRepExtrema_ExtPC_IsMin(self, *args)

    def NbExt(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the number of extremum distances. .

        """
        return _BRepExtrema.BRepExtrema_ExtPC_NbExt(self, *args)

    def Parameter(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the parameter on the edge of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtPC_Parameter(self, *args)

    def Perform(self, *args):
        r"""

        Parameters
        ----------
        V: TopoDS_Vertex

        Return
        -------
        None

        Description
        -----------
        An exception is raised if the fields have not been initialized. .

        """
        return _BRepExtrema.BRepExtrema_ExtPC_Perform(self, *args)

    def Point(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtPC_Point(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the value of the <n>th extremum square distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtPC_SquareDistance(self, *args)

    def TrimmedSquareDistances(self, *args):
        r"""

        Parameters
        ----------
        pnt1: gp_Pnt
        pnt2: gp_Pnt

        Return
        -------
        dist1: float
        dist2: float

        Description
        -----------
        If the curve is a trimmed curve, dist1 is a square distance between <p> and the point of parameter firstparameter <pnt1> and dist2 is a square distance between <p> and the point of parameter lastparameter <pnt2>. .

        """
        return _BRepExtrema.BRepExtrema_ExtPC_TrimmedSquareDistances(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ExtPC

# Register BRepExtrema_ExtPC in _BRepExtrema:
_BRepExtrema.BRepExtrema_ExtPC_swigregister(BRepExtrema_ExtPC)
class BRepExtrema_ExtPF(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"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        TheVertex: TopoDS_Vertex
        TheFace: TopoDS_Face
        TheFlag: Extrema_ExtFlag (optional, default to Extrema_ExtFlag_MINMAX)
        TheAlgo: Extrema_ExtAlgo (optional, default to Extrema_ExtAlgo_Grad)

        Return
        -------
        None

        Description
        -----------
        It calculates all the distances. .

        """
        _BRepExtrema.BRepExtrema_ExtPF_swiginit(self, _BRepExtrema.new_BRepExtrema_ExtPF(*args))

    def Initialize(self, *args):
        r"""

        Parameters
        ----------
        TheFace: TopoDS_Face
        TheFlag: Extrema_ExtFlag (optional, default to Extrema_ExtFlag_MINMAX)
        TheAlgo: Extrema_ExtAlgo (optional, default to Extrema_ExtAlgo_Grad)

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _BRepExtrema.BRepExtrema_ExtPF_Initialize(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if the distances are found. .

        """
        return _BRepExtrema.BRepExtrema_ExtPF_IsDone(self, *args)

    def NbExt(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the number of extremum distances. .

        """
        return _BRepExtrema.BRepExtrema_ExtPF_NbExt(self, *args)

    def Parameter(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        U: float
        V: float

        Description
        -----------
        Returns the parameters on the face of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtPF_Parameter(self, *args)

    def Perform(self, *args):
        r"""

        Parameters
        ----------
        TheVertex: TopoDS_Vertex
        TheFace: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        An exception is raised if the fields have not been initialized. be careful: this method uses the face only for classify not for the fields. .

        """
        return _BRepExtrema.BRepExtrema_ExtPF_Perform(self, *args)

    def Point(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point of the <n>th extremum distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtPF_Point(self, *args)

    def SetAlgo(self, *args):
        r"""

        Parameters
        ----------
        A: Extrema_ExtAlgo

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _BRepExtrema.BRepExtrema_ExtPF_SetAlgo(self, *args)

    def SetFlag(self, *args):
        r"""

        Parameters
        ----------
        F: Extrema_ExtFlag

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _BRepExtrema.BRepExtrema_ExtPF_SetFlag(self, *args)

    def SquareDistance(self, *args):
        r"""

        Parameters
        ----------
        N: int

        Return
        -------
        float

        Description
        -----------
        Returns the value of the <n>th extremum square distance. .

        """
        return _BRepExtrema.BRepExtrema_ExtPF_SquareDistance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ExtPF

# Register BRepExtrema_ExtPF in _BRepExtrema:
_BRepExtrema.BRepExtrema_ExtPF_swigregister(BRepExtrema_ExtPF)
class BRepExtrema_Poly(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def Distance(*args):
        r"""

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        P1: gp_Pnt
        P2: gp_Pnt

        Return
        -------
        dist: float

        Description
        -----------
        Returns standard_true if ok.

        """
        return _BRepExtrema.BRepExtrema_Poly_Distance(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _BRepExtrema.BRepExtrema_Poly_swiginit(self, _BRepExtrema.new_BRepExtrema_Poly())
    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_Poly

# Register BRepExtrema_Poly in _BRepExtrema:
_BRepExtrema.BRepExtrema_Poly_swigregister(BRepExtrema_Poly)
class BRepExtrema_ProximityDistTool(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ProxPnt_Status_BORDER = _BRepExtrema.BRepExtrema_ProximityDistTool_ProxPnt_Status_BORDER
    ProxPnt_Status_MIDDLE = _BRepExtrema.BRepExtrema_ProximityDistTool_ProxPnt_Status_MIDDLE
    ProxPnt_Status_UNKNOWN = _BRepExtrema.BRepExtrema_ProximityDistTool_ProxPnt_Status_UNKNOWN


    class ProxPnt_Status(IntEnum):
    	ProxPnt_Status_BORDER = 0
    	ProxPnt_Status_MIDDLE = 1
    	ProxPnt_Status_UNKNOWN = 2
    ProxPnt_Status_BORDER = ProxPnt_Status.ProxPnt_Status_BORDER
    ProxPnt_Status_MIDDLE = ProxPnt_Status.ProxPnt_Status_MIDDLE
    ProxPnt_Status_UNKNOWN = ProxPnt_Status.ProxPnt_Status_UNKNOWN


    def __init__(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Creates new unitialized tool.

        Parameters
        ----------
        theSet1: BRepExtrema_TriangleSet
        theNbSamples1: int
        theAddVertices1: BVH_Array3d
        theAddStatus1: NCollection_Vector<ProxPnt_Status>
        theSet2: BRepExtrema_TriangleSet
        theShapeList1: BRepExtrema_ShapeList
        theShapeList2: BRepExtrema_ShapeList

        Return
        -------
        None

        Description
        -----------
        Creates new tool for the given element sets.

        """
        _BRepExtrema.BRepExtrema_ProximityDistTool_swiginit(self, _BRepExtrema.new_BRepExtrema_ProximityDistTool(*args))

    def Accept(self, *args):
        r"""

        Parameters
        ----------
        theSgmIdx: int
        &: float

        Return
        -------
        bool

        Description
        -----------
        Defines the rules for leaf acceptance.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_Accept(self, *args)

    @staticmethod
    def IsEdgeOnBorder(*args):
        r"""

        Parameters
        ----------
        theTrgIdx: int
        theFirstEdgeNodeIdx: int
        theSecondEdgeNodeIdx: int
        theTr: Handle ( Poly_Triangulation )

        Return
        -------
        bool

        Description
        -----------
        Returns true if the edge is on the boarder.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_IsEdgeOnBorder(*args)

    @staticmethod
    def IsNodeOnBorder(*args):
        r"""

        Parameters
        ----------
        theNodeIdx: int
        theTr: Handle ( Poly_Triangulation )

        Return
        -------
        bool

        Description
        -----------
        Returns true if the node is on the boarder.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_IsNodeOnBorder(*args)

    def LoadShapeLists(self, *args):
        r"""

        Parameters
        ----------
        theShapeList1: BRepExtrema_ShapeList
        theShapeList2: BRepExtrema_ShapeList

        Return
        -------
        None

        Description
        -----------
        Loads the given list of subshapes into the tool.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_LoadShapeLists(self, *args)

    def LoadTriangleSets(self, *args):
        r"""

        Parameters
        ----------
        theSet1: BRepExtrema_TriangleSet
        theSet2: BRepExtrema_TriangleSet

        Return
        -------
        None

        Description
        -----------
        Loads the given element sets into the tool.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_LoadTriangleSets(self, *args)

    def Perform(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Performs searching of the proximity distance.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_Perform(self, *args)

    def ProximityDistance(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the computed distance.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_ProximityDistance(self, *args)

    def ProximityPoints(self, *args):
        r"""

        Parameters
        ----------
        thePoint1: BVH_Vec3d
        thePoint2: BVH_Vec3d

        Return
        -------
        None

        Description
        -----------
        Returns points on triangles sets, which provide the proximity distance.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_ProximityPoints(self, *args)

    def ProximityPointsStatus(self, *args):
        r"""

        Parameters
        ----------
        thePointStatus1: ProxPnt_Status
        thePointStatus2: ProxPnt_Status

        Return
        -------
        None

        Description
        -----------
        Returns status of points on triangles sets, which provide the proximity distance.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_ProximityPointsStatus(self, *args)

    def RejectNode(self, *args):
        r"""

        Parameters
        ----------
        theCornerMin: BVH_Vec3d
        theCornerMax: BVH_Vec3d

        Return
        -------
        theMetric: float

        Description
        -----------
        Defines the rules for node rejection by bounding box.

        """
        return _BRepExtrema.BRepExtrema_ProximityDistTool_RejectNode(self, *args)

    __repr__ = _dumps_object

    @methodnotwrapped
    def LoadAdditionalPointsFirstSet(self):
    	pass

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ProximityDistTool

# Register BRepExtrema_ProximityDistTool in _BRepExtrema:
_BRepExtrema.BRepExtrema_ProximityDistTool_swigregister(BRepExtrema_ProximityDistTool)
class BRepExtrema_ShapeProximity(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"""

        Parameters
        ----------
        theTolerance: float (optional, default to Precision::Infinite())

        Return
        -------
        None

        Description
        -----------
        Creates empty proximity tool.

        Parameters
        ----------
        theShape1: TopoDS_Shape
        theShape2: TopoDS_Shape
        theTolerance: float (optional, default to Precision::Infinite())

        Return
        -------
        None

        Description
        -----------
        Creates proximity tool for the given two shapes.

        """
        _BRepExtrema.BRepExtrema_ShapeProximity_swiginit(self, _BRepExtrema.new_BRepExtrema_ShapeProximity(*args))

    def ElementSet1(self, *args):
        r"""
        Return
        -------
        opencascade::handle<BRepExtrema_TriangleSet>

        Description
        -----------
        Returns set of all the face triangles of the 1st shape.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_ElementSet1(self, *args)

    def ElementSet2(self, *args):
        r"""
        Return
        -------
        opencascade::handle<BRepExtrema_TriangleSet>

        Description
        -----------
        Returns set of all the face triangles of the 2nd shape.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_ElementSet2(self, *args)

    def GetSubShape1(self, *args):
        r"""

        Parameters
        ----------
        theID: int

        Return
        -------
        TopoDS_Shape

        Description
        -----------
        Returns sub-shape from 1st shape with the given index (started from 0).

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_GetSubShape1(self, *args)

    def GetSubShape2(self, *args):
        r"""

        Parameters
        ----------
        theID: int

        Return
        -------
        TopoDS_Shape

        Description
        -----------
        Returns sub-shape from 1st shape with the given index (started from 0).

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_GetSubShape2(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if the search is completed.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_IsDone(self, *args)

    def LoadShape1(self, *args):
        r"""

        Parameters
        ----------
        theShape1: TopoDS_Shape

        Return
        -------
        bool

        Description
        -----------
        Loads 1st shape into proximity tool.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_LoadShape1(self, *args)

    def LoadShape2(self, *args):
        r"""

        Parameters
        ----------
        theShape2: TopoDS_Shape

        Return
        -------
        bool

        Description
        -----------
        Loads 2nd shape into proximity tool.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_LoadShape2(self, *args)

    def OverlapSubShapes1(self, *args):
        r"""
        Return
        -------
        BRepExtrema_MapOfIntegerPackedMapOfInteger

        Description
        -----------
        Returns set of ids of overlapped faces of 1st shape (started from 0).

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_OverlapSubShapes1(self, *args)

    def OverlapSubShapes2(self, *args):
        r"""
        Return
        -------
        BRepExtrema_MapOfIntegerPackedMapOfInteger

        Description
        -----------
        Returns set of ids of overlapped faces of 2nd shape (started from 0).

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_OverlapSubShapes2(self, *args)

    def Perform(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Performs search of overlapped faces.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_Perform(self, *args)

    def ProxPntStatus1(self, *args):
        r"""
        Return
        -------
        ProxPnt_Status

        Description
        -----------
        Returns the status of point on the 1st shape, which could be used as a reference point for the value of the proximity.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_ProxPntStatus1(self, *args)

    def ProxPntStatus2(self, *args):
        r"""
        Return
        -------
        ProxPnt_Status

        Description
        -----------
        Returns the status of point on the 2nd shape, which could be used as a reference point for the value of the proximity.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_ProxPntStatus2(self, *args)

    def Proximity(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns proximity value calculated for the whole input shapes.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_Proximity(self, *args)

    def ProximityPoint1(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point on the 1st shape, which could be used as a reference point for the value of the proximity.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_ProximityPoint1(self, *args)

    def ProximityPoint2(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the point on the 2nd shape, which could be used as a reference point for the value of the proximity.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_ProximityPoint2(self, *args)

    def SetNbSamples1(self, *args):
        r"""

        Parameters
        ----------
        theNbSamples: int

        Return
        -------
        None

        Description
        -----------
        Set number of sample points on the 1st shape used to compute the proximity value. in case of 0, all triangulation nodes will be used.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_SetNbSamples1(self, *args)

    def SetNbSamples2(self, *args):
        r"""

        Parameters
        ----------
        theNbSamples: int

        Return
        -------
        None

        Description
        -----------
        Set number of sample points on the 2nd shape used to compute the proximity value. in case of 0, all triangulation nodes will be used.

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_SetNbSamples2(self, *args)

    def SetTolerance(self, *args):
        r"""

        Parameters
        ----------
        theTolerance: float

        Return
        -------
        None

        Description
        -----------
        Sets tolerance value for overlap test (distance between shapes).

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_SetTolerance(self, *args)

    def Tolerance(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns tolerance value for overlap test (distance between shapes).

        """
        return _BRepExtrema.BRepExtrema_ShapeProximity_Tolerance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_ShapeProximity

# Register BRepExtrema_ShapeProximity in _BRepExtrema:
_BRepExtrema.BRepExtrema_ShapeProximity_swigregister(BRepExtrema_ShapeProximity)
class BRepExtrema_SolutionElem(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"""
        Return
        -------
        None

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        theDist: float
        thePoint: gp_Pnt
        theSolType: BRepExtrema_SupportType
        theVertex: TopoDS_Vertex

        Return
        -------
        None

        Description
        -----------
        This constructor is used when the solution of a distance is a vertex. the different initialized fields are: @param thedist the distance @param thepoint the solution point @param thesoltype the type of solution @param thevertex and the vertex.

        Parameters
        ----------
        theDist: float
        thePoint: gp_Pnt
        theSolType: BRepExtrema_SupportType
        theEdge: TopoDS_Edge
        theParam: float

        Return
        -------
        None

        Description
        -----------
        This constructor is used when the solution of distance is on an edge. the different initialized fields are: @param thedist the distance @param thepoint the solution point @param thesoltype the type of solution @param theedge the edge @param theparam the parameter to locate the solution.

        Parameters
        ----------
        theDist: float
        thePoint: gp_Pnt
        theSolType: BRepExtrema_SupportType
        theFace: TopoDS_Face
        theU: float
        theV: float

        Return
        -------
        None

        Description
        -----------
        This constructor is used when the solution of distance is in a face. the different initialized fields are: @param thedist the distance @param thepoint the solution point @param thesoltype the type of solution @param theface the face @param theu u parameter to locate the solution @param thev v parameter to locate the solution.

        """
        _BRepExtrema.BRepExtrema_SolutionElem_swiginit(self, _BRepExtrema.new_BRepExtrema_SolutionElem(*args))

    def Dist(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the value of the minimum distance.

        """
        return _BRepExtrema.BRepExtrema_SolutionElem_Dist(self, *args)

    def Edge(self, *args):
        r"""
        Return
        -------
        TopoDS_Edge

        Description
        -----------
        Returns the vertex if the solution is an edge.

        """
        return _BRepExtrema.BRepExtrema_SolutionElem_Edge(self, *args)

    def EdgeParameter(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theParam: float

        Description
        -----------
        Returns the parameter value if the solution is on edge.

        """
        return _BRepExtrema.BRepExtrema_SolutionElem_EdgeParameter(self, *args)

    def Face(self, *args):
        r"""
        Return
        -------
        TopoDS_Face

        Description
        -----------
        Returns the vertex if the solution is an face.

        """
        return _BRepExtrema.BRepExtrema_SolutionElem_Face(self, *args)

    def FaceParameter(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        theU: float
        theV: float

        Description
        -----------
        Returns the parameters u and v if the solution is in a face.

        """
        return _BRepExtrema.BRepExtrema_SolutionElem_FaceParameter(self, *args)

    def Point(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the solution point.

        """
        return _BRepExtrema.BRepExtrema_SolutionElem_Point(self, *args)

    def SupportKind(self, *args):
        r"""
        Return
        -------
        BRepExtrema_SupportType

        Description
        -----------
        Returns the support type: isvertex => the solution is a vertex. isonedge => the solution belongs to an edge. isinface => the solution is inside a face.

        """
        return _BRepExtrema.BRepExtrema_SolutionElem_SupportKind(self, *args)

    def Vertex(self, *args):
        r"""
        Return
        -------
        TopoDS_Vertex

        Description
        -----------
        Returns the vertex if the solution is a vertex.

        """
        return _BRepExtrema.BRepExtrema_SolutionElem_Vertex(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_SolutionElem

# Register BRepExtrema_SolutionElem in _BRepExtrema:
_BRepExtrema.BRepExtrema_SolutionElem_swigregister(BRepExtrema_SolutionElem)
class BRepExtrema_TriangleSet(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"""
        Return
        -------
        None

        Description
        -----------
        Creates empty triangle set.

        Parameters
        ----------
        theFaces: BRepExtrema_ShapeList

        Return
        -------
        None

        Description
        -----------
        Creates triangle set from the given face.

        """
        _BRepExtrema.BRepExtrema_TriangleSet_swiginit(self, _BRepExtrema.new_BRepExtrema_TriangleSet(*args))

    def Box(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        BVH_Box<float, 3 >

        Description
        -----------
        Returns aabb of the given triangle.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_Box(self, *args)

    def Center(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theAxis: int

        Return
        -------
        float

        Description
        -----------
        Returns centroid position along specified axis.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_Center(self, *args)

    def Clear(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Clears triangle set data.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_Clear(self, *args)

    def GetFaceID(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        int

        Description
        -----------
        Returns face id of the given triangle.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_GetFaceID(self, *args)

    def GetShapeIDOfVtx(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        int

        Description
        -----------
        Returns shape id of the given vertex index.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_GetShapeIDOfVtx(self, *args)

    def GetTrgIdxInShape(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        int

        Description
        -----------
        Returns triangle index (before swapping) in tringulation of the shape, which triangle belongs, with the given trg id in whole set (after swapping).

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_GetTrgIdxInShape(self, *args)

    def GetVertices(self, *args):
        r"""
        Return
        -------
        BVH_Array3d

        Description
        -----------
        Returns all vertices.

        Parameters
        ----------
        theIndex: int
        theVertex1: BVH_Vec3d
        theVertex2: BVH_Vec3d
        theVertex3: BVH_Vec3d

        Return
        -------
        None

        Description
        -----------
        Returns vertices of the given triangle.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_GetVertices(self, *args)

    def GetVtxIdxInShape(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int

        Return
        -------
        int

        Description
        -----------
        Returns vertex index in tringulation of the shape, which vertex belongs, with the given vtx id in whole set.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_GetVtxIdxInShape(self, *args)

    def GetVtxIndices(self, *args):
        r"""

        Parameters
        ----------
        theIndex: int
        theVtxIndices: NCollection_Array1<int>

        Return
        -------
        None

        Description
        -----------
        Returns vertex indices of the given triangle.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_GetVtxIndices(self, *args)

    def Init(self, *args):
        r"""

        Parameters
        ----------
        theShapes: BRepExtrema_ShapeList

        Return
        -------
        bool

        Description
        -----------
        Initializes triangle set.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_Init(self, *args)

    def Size(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns total number of triangles.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_Size(self, *args)

    def Swap(self, *args):
        r"""

        Parameters
        ----------
        theIndex1: int
        theIndex2: int

        Return
        -------
        None

        Description
        -----------
        Swaps indices of two specified triangles.

        """
        return _BRepExtrema.BRepExtrema_TriangleSet_Swap(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_TriangleSet

# Register BRepExtrema_TriangleSet in _BRepExtrema:
_BRepExtrema.BRepExtrema_TriangleSet_swigregister(BRepExtrema_TriangleSet)
class BRepExtrema_SelfIntersection(BRepExtrema_ElementFilter):
    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"""

        Parameters
        ----------
        theTolerance: float (optional, default to 0.0)

        Return
        -------
        None

        Description
        -----------
        Creates uninitialized self-intersection tool.

        Parameters
        ----------
        theShape: TopoDS_Shape
        theTolerance: float (optional, default to 0.0)

        Return
        -------
        None

        Description
        -----------
        Creates self-intersection tool for the given shape.

        """
        _BRepExtrema.BRepExtrema_SelfIntersection_swiginit(self, _BRepExtrema.new_BRepExtrema_SelfIntersection(*args))

    def ElementSet(self, *args):
        r"""
        Return
        -------
        opencascade::handle<BRepExtrema_TriangleSet>

        Description
        -----------
        Returns set of all the face triangles of the shape.

        """
        return _BRepExtrema.BRepExtrema_SelfIntersection_ElementSet(self, *args)

    def GetSubShape(self, *args):
        r"""

        Parameters
        ----------
        theID: int

        Return
        -------
        TopoDS_Face

        Description
        -----------
        Returns sub-shape from the shape for the given index (started from 0).

        """
        return _BRepExtrema.BRepExtrema_SelfIntersection_GetSubShape(self, *args)

    def IsDone(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        True if the detection is completed.

        """
        return _BRepExtrema.BRepExtrema_SelfIntersection_IsDone(self, *args)

    def LoadShape(self, *args):
        r"""

        Parameters
        ----------
        theShape: TopoDS_Shape

        Return
        -------
        bool

        Description
        -----------
        Loads shape for detection of self-intersections.

        """
        return _BRepExtrema.BRepExtrema_SelfIntersection_LoadShape(self, *args)

    def OverlapElements(self, *args):
        r"""
        Return
        -------
        BRepExtrema_MapOfIntegerPackedMapOfInteger

        Description
        -----------
        Returns set of ids of overlapped sub-shapes (started from 0).

        """
        return _BRepExtrema.BRepExtrema_SelfIntersection_OverlapElements(self, *args)

    def Perform(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Performs detection of self-intersections.

        """
        return _BRepExtrema.BRepExtrema_SelfIntersection_Perform(self, *args)

    def SetTolerance(self, *args):
        r"""

        Parameters
        ----------
        theTolerance: float

        Return
        -------
        None

        Description
        -----------
        Sets tolerance value used for self-intersection test.

        """
        return _BRepExtrema.BRepExtrema_SelfIntersection_SetTolerance(self, *args)

    def Tolerance(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns tolerance value used for self-intersection test.

        """
        return _BRepExtrema.BRepExtrema_SelfIntersection_Tolerance(self, *args)

    __repr__ = _dumps_object

    @methodnotwrapped
    def OverlapTriangles(self):
    	pass

    __swig_destroy__ = _BRepExtrema.delete_BRepExtrema_SelfIntersection

# Register BRepExtrema_SelfIntersection in _BRepExtrema:
_BRepExtrema.BRepExtrema_SelfIntersection_swigregister(BRepExtrema_SelfIntersection)

@classnotwrapped
class BRepExtrema_OverlapTool:
	pass





@deprecated
def BRepExtrema_Poly_Distance(*args):
	return BRepExtrema_Poly.Distance(*args)

@deprecated
def BRepExtrema_ProximityDistTool_IsEdgeOnBorder(*args):
	return BRepExtrema_ProximityDistTool.IsEdgeOnBorder(*args)

@deprecated
def BRepExtrema_ProximityDistTool_IsNodeOnBorder(*args):
	return BRepExtrema_ProximityDistTool.IsNodeOnBorder(*args)



