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

"""
BRepClass3d module, see official documentation at
https://www.opencascade.com/doc/occt-7.4.0/refman/html/package_brepclass3d.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 _BRepClass3d
else:
    import _BRepClass3d

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__ = _BRepClass3d.delete_SwigPyIterator

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _BRepClass3d:
_BRepClass3d.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 _BRepClass3d.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.IntCurveSurface
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.Intf
import OCC.Core.Bnd
import OCC.Core.BVH
import OCC.Core.IntSurf
import OCC.Core.TopTools
import OCC.Core.IntCurvesFace
import OCC.Core.BRepAdaptor
import OCC.Core.GeomAdaptor
import OCC.Core.Geom2dAdaptor

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



class BRepClass3d_BndBoxTree(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):
        _BRepClass3d.BRepClass3d_BndBoxTree_swiginit(self, _BRepClass3d.new_BRepClass3d_BndBoxTree(*args))

    def Add(self, theObj: "int const &", theBnd: "Bnd_Box") -> "Standard_Boolean":
        return _BRepClass3d.BRepClass3d_BndBoxTree_Add(self, theObj, theBnd)

    def Select(self, theSelector: "NCollection_UBTree< int,Bnd_Box >::Selector &") -> "Standard_Integer":
        return _BRepClass3d.BRepClass3d_BndBoxTree_Select(self, theSelector)

    def Clear(self, aNewAlloc: "IntSurf_Allocator"=0) -> "void":
        return _BRepClass3d.BRepClass3d_BndBoxTree_Clear(self, aNewAlloc)

    def IsEmpty(self) -> "Standard_Boolean":
        return _BRepClass3d.BRepClass3d_BndBoxTree_IsEmpty(self)

    def Root(self) -> "NCollection_UBTree< int,Bnd_Box >::TreeNode const &":
        return _BRepClass3d.BRepClass3d_BndBoxTree_Root(self)
    __swig_destroy__ = _BRepClass3d.delete_BRepClass3d_BndBoxTree

    def Allocator(self) -> "opencascade::handle< NCollection_BaseAllocator > const &":
        return _BRepClass3d.BRepClass3d_BndBoxTree_Allocator(self)

# Register BRepClass3d_BndBoxTree in _BRepClass3d:
_BRepClass3d.BRepClass3d_BndBoxTree_swigregister(BRepClass3d_BndBoxTree)

class BRepClass3d_MapOfInter(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) -> "NCollection_DataMap< TopoDS_Shape,void *,TopTools_ShapeMapHasher >::iterator":
        return _BRepClass3d.BRepClass3d_MapOfInter_begin(self)

    def end(self) -> "NCollection_DataMap< TopoDS_Shape,void *,TopTools_ShapeMapHasher >::iterator":
        return _BRepClass3d.BRepClass3d_MapOfInter_end(self)

    def cbegin(self) -> "NCollection_DataMap< TopoDS_Shape,void *,TopTools_ShapeMapHasher >::const_iterator":
        return _BRepClass3d.BRepClass3d_MapOfInter_cbegin(self)

    def cend(self) -> "NCollection_DataMap< TopoDS_Shape,void *,TopTools_ShapeMapHasher >::const_iterator":
        return _BRepClass3d.BRepClass3d_MapOfInter_cend(self)

    def __init__(self, *args):
        _BRepClass3d.BRepClass3d_MapOfInter_swiginit(self, _BRepClass3d.new_BRepClass3d_MapOfInter(*args))

    def Exchange(self, theOther: "BRepClass3d_MapOfInter") -> "void":
        return _BRepClass3d.BRepClass3d_MapOfInter_Exchange(self, theOther)

    def Assign(self, theOther: "BRepClass3d_MapOfInter") -> "NCollection_DataMap< TopoDS_Shape,void *,TopTools_ShapeMapHasher > &":
        return _BRepClass3d.BRepClass3d_MapOfInter_Assign(self, theOther)

    def Set(self, theOther: "BRepClass3d_MapOfInter") -> "NCollection_DataMap< TopoDS_Shape,void *,TopTools_ShapeMapHasher > &":
        return _BRepClass3d.BRepClass3d_MapOfInter_Set(self, theOther)

    def ReSize(self, N: "Standard_Integer const") -> "void":
        return _BRepClass3d.BRepClass3d_MapOfInter_ReSize(self, N)

    def Bind(self, theKey: "TopoDS_Shape", theItem: "void *const &") -> "Standard_Boolean":
        return _BRepClass3d.BRepClass3d_MapOfInter_Bind(self, theKey, theItem)

    def Bound(self, theKey: "TopoDS_Shape", theItem: "void *const &") -> "void **":
        return _BRepClass3d.BRepClass3d_MapOfInter_Bound(self, theKey, theItem)

    def IsBound(self, theKey: "TopoDS_Shape") -> "Standard_Boolean":
        return _BRepClass3d.BRepClass3d_MapOfInter_IsBound(self, theKey)

    def UnBind(self, theKey: "TopoDS_Shape") -> "Standard_Boolean":
        return _BRepClass3d.BRepClass3d_MapOfInter_UnBind(self, theKey)

    def Seek(self, theKey: "TopoDS_Shape") -> "void *const *":
        return _BRepClass3d.BRepClass3d_MapOfInter_Seek(self, theKey)

    def Find(self, *args) -> "Standard_Boolean":
        return _BRepClass3d.BRepClass3d_MapOfInter_Find(self, *args)

    def ChangeSeek(self, theKey: "TopoDS_Shape") -> "void **":
        return _BRepClass3d.BRepClass3d_MapOfInter_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey: "TopoDS_Shape") -> "void *&":
        return _BRepClass3d.BRepClass3d_MapOfInter_ChangeFind(self, theKey)

    def __call__(self, *args) -> "void *&":
        return _BRepClass3d.BRepClass3d_MapOfInter___call__(self, *args)

    def Clear(self, *args) -> "void":
        return _BRepClass3d.BRepClass3d_MapOfInter_Clear(self, *args)
    __swig_destroy__ = _BRepClass3d.delete_BRepClass3d_MapOfInter

    def Size(self) -> "Standard_Integer":
        return _BRepClass3d.BRepClass3d_MapOfInter_Size(self)

# Register BRepClass3d_MapOfInter in _BRepClass3d:
_BRepClass3d.BRepClass3d_MapOfInter_swigregister(BRepClass3d_MapOfInter)

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

    @staticmethod
    def OuterShell(*args) -> "TopoDS_Shell":
        r"""
        Returns the outer most shell of <s>. returns a null shell if <s> has no outer shell. if <s> has only one shell, then it will return, without checking orientation.

        Parameters
        ----------
        S: TopoDS_Solid

        Returns
        -------
        TopoDS_Shell

        """
        return _BRepClass3d.brepclass3d_OuterShell(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _BRepClass3d.brepclass3d_swiginit(self, _BRepClass3d.new_brepclass3d())
    __swig_destroy__ = _BRepClass3d.delete_brepclass3d

# Register brepclass3d in _BRepClass3d:
_BRepClass3d.brepclass3d_swigregister(brepclass3d)

def brepclass3d_OuterShell(*args) -> "TopoDS_Shell":
    r"""
    Returns the outer most shell of <s>. returns a null shell if <s> has no outer shell. if <s> has only one shell, then it will return, without checking orientation.

    Parameters
    ----------
    S: TopoDS_Solid

    Returns
    -------
    TopoDS_Shell

    """
    return _BRepClass3d.brepclass3d_OuterShell(*args)

class BRepClass3d_Intersector3d(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"""
        Empty constructor.

        Returns
        -------
        None

        """
        _BRepClass3d.BRepClass3d_Intersector3d_swiginit(self, _BRepClass3d.new_BRepClass3d_Intersector3d(*args))

    def Face(self, *args) -> "TopoDS_Face const":
        r"""
        Returns the significant face used to determine the intersection.

        Returns
        -------
        TopoDS_Face

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_Face(self, *args)

    def HasAPoint(self, *args) -> "Standard_Boolean":
        r"""
        True is returned if a point has been found.

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_HasAPoint(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        True is returned when the intersection have been computed.

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_IsDone(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Perform the intersection between the segment l(0) ... l(prm) and the shape <sh>. //! only the point with the smallest parameter on the line is returned. //! the tolerance <tol> is used to determine if the first point of the segment is near the face. in that case, the parameter of the intersection point on the line can be a negative value (greater than -tol).

        Parameters
        ----------
        L: gp_Lin
        Prm: float
        Tol: float
        F: TopoDS_Face

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_Perform(self, *args)

    def Pnt(self, *args) -> "gp_Pnt const":
        r"""
        Returns the geometric point of the intersection between the line and the surface.

        Returns
        -------
        gp_Pnt

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_Pnt(self, *args)

    def State(self, *args) -> "TopAbs_State":
        r"""
        Returns the state of the point on the face. the values can be either topabs_in ( the point is in the face) or topabs_on ( the point is on a boudary of the face).

        Returns
        -------
        TopAbs_State

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_State(self, *args)

    def Transition(self, *args) -> "IntCurveSurface_TransitionOnCurve":
        r"""
        Returns the transition of the line on the surface.

        Returns
        -------
        IntCurveSurface_TransitionOnCurve

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_Transition(self, *args)

    def UParameter(self, *args) -> "Standard_Real":
        r"""
        Returns the u parameter of the intersection point on the surface.

        Returns
        -------
        float

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_UParameter(self, *args)

    def VParameter(self, *args) -> "Standard_Real":
        r"""
        Returns the v parameter of the intersection point on the surface.

        Returns
        -------
        float

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_VParameter(self, *args)

    def WParameter(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter of the intersection point on the line.

        Returns
        -------
        float

        """
        return _BRepClass3d.BRepClass3d_Intersector3d_WParameter(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepClass3d.delete_BRepClass3d_Intersector3d

# Register BRepClass3d_Intersector3d in _BRepClass3d:
_BRepClass3d.BRepClass3d_Intersector3d_swigregister(BRepClass3d_Intersector3d)

class BRepClass3d_SClassifier(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"""
        Empty constructor.

        Returns
        -------
        None
        Constructor to classify the point p with the tolerance tol on the solid s.

        Parameters
        ----------
        S: BRepClass3d_SolidExplorer
        P: gp_Pnt
        Tol: float

        Returns
        -------
        None

        """
        _BRepClass3d.BRepClass3d_SClassifier_swiginit(self, _BRepClass3d.new_BRepClass3d_SClassifier(*args))

    def Face(self, *args) -> "TopoDS_Face":
        r"""
        Returns the face used to determine the classification. when the state is on, this is the face containing the point. //! when rejected() returns true, face() has no signification.

        Returns
        -------
        TopoDS_Face

        """
        return _BRepClass3d.BRepClass3d_SClassifier_Face(self, *args)

    def IsOnAFace(self, *args) -> "Standard_Boolean":
        r"""
        Returns true when the point is a point of a face.

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_SClassifier_IsOnAFace(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Classify the point p with the tolerance tol on the solid s.

        Parameters
        ----------
        S: BRepClass3d_SolidExplorer
        P: gp_Pnt
        Tol: float

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SClassifier_Perform(self, *args)

    def PerformInfinitePoint(self, *args) -> "void":
        r"""
        Classify an infinite point with the tolerance tol on the solid s.

        Parameters
        ----------
        S: BRepClass3d_SolidExplorer
        Tol: float

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SClassifier_PerformInfinitePoint(self, *args)

    def Rejected(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the classification has been computed by rejection. the state is then out.

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_SClassifier_Rejected(self, *args)

    def State(self, *args) -> "TopAbs_State":
        r"""
        Returns the result of the classification.

        Returns
        -------
        TopAbs_State

        """
        return _BRepClass3d.BRepClass3d_SClassifier_State(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepClass3d.delete_BRepClass3d_SClassifier

# Register BRepClass3d_SClassifier in _BRepClass3d:
_BRepClass3d.BRepClass3d_SClassifier_swigregister(BRepClass3d_SClassifier)

class BRepClass3d_SolidExplorer(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

        """
        _BRepClass3d.BRepClass3d_SolidExplorer_swiginit(self, _BRepClass3d.new_BRepClass3d_SolidExplorer(*args))

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

        Returns
        -------
        Bnd_Box

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_Box(self, *args)

    def CurrentFace(self, *args) -> "TopoDS_Face":
        r"""
        Returns the current face.

        Returns
        -------
        TopoDS_Face

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_CurrentFace(self, *args)

    def CurrentShell(self, *args) -> "TopoDS_Shell":
        r"""
        Returns the current shell.

        Returns
        -------
        TopoDS_Shell

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_CurrentShell(self, *args)

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

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_Destroy(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt
        L: gp_Lin
        Par: float
        S: TopAbs_State

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_DumpSegment(self, *args)

    @staticmethod
    def FindAPointInTheFace(*args) -> "Standard_Real &, Standard_Real &":
        r"""
        Compute a point p in the face f. param is a real in ]0,1[ and is used to initialise the algorithm. for different values , different points are returned.

        Parameters
        ----------
        F: TopoDS_Face
        P: gp_Pnt

        Returns
        -------
        Param: float
        No available documentation.

        Parameters
        ----------
        F: TopoDS_Face
        P: gp_Pnt

        Returns
        -------
        u: float
        v: float
        Param: float
        No available documentation.

        Parameters
        ----------
        F: TopoDS_Face
        P: gp_Pnt
        theVecD1U: gp_Vec
        theVecD1V: gp_Vec

        Returns
        -------
        u: float
        v: float
        Param: float
        No available documentation.

        Parameters
        ----------
        F: TopoDS_Face
        P: gp_Pnt

        Returns
        -------
        u: float
        v: float
        No available documentation.

        Parameters
        ----------
        F: TopoDS_Face
        P: gp_Pnt

        Returns
        -------
        bool
        No available documentation.

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

        Returns
        -------
        u: float
        v: float

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_FindAPointInTheFace(*args)

    def GetFaceSegmentIndex(self, *args) -> "Standard_Integer":
        r"""
        Returns the index of face for which last segment is calculated.

        Returns
        -------
        int

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_GetFaceSegmentIndex(self, *args)

    def GetMapEV(self, *args) -> "TopTools_IndexedMapOfShape const &":
        r"""
        Return edge/vertices map for current shape.

        Returns
        -------
        TopTools_IndexedMapOfShape

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_GetMapEV(self, *args)

    def GetShape(self, *args) -> "TopoDS_Shape const":
        r"""
        No available documentation.

        Returns
        -------
        TopoDS_Shape

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_GetShape(self, *args)

    def GetTree(self, *args) -> "BRepClass3d_BndBoxTree const &":
        r"""
        Return ub-tree instance which is used for edge / vertex checks.

        Returns
        -------
        BRepClass3d_BndBoxTree

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_GetTree(self, *args)

    def InitFace(self, *args) -> "void":
        r"""
        Starts an exploration of the faces of the current shell.

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_InitFace(self, *args)

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

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

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_InitShape(self, *args)

    def InitShell(self, *args) -> "void":
        r"""
        Starts an exploration of the shells.

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_InitShell(self, *args)

    def Intersector(self, *args) -> "IntCurvesFace_Intersector &":
        r"""
        No available documentation.

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

        Returns
        -------
        IntCurvesFace_Intersector

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_Intersector(self, *args)

    def MoreFace(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if current face in current shell.

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_MoreFace(self, *args)

    def MoreShell(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if there is a current shell.

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_MoreShell(self, *args)

    def NextFace(self, *args) -> "void":
        r"""
        Sets the explorer to the next face of the current shell.

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_NextFace(self, *args)

    def NextShell(self, *args) -> "void":
        r"""
        Sets the explorer to the next shell.

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_NextShell(self, *args)

    def OtherSegment(self, *args) -> "Standard_Integer":
        r"""
        Returns in <l>, <par> a segment having at least one intersection with the shape boundary to compute intersections. //! the first call to this method returns a line which point to a point of the first face of the shape. the second call provide a line to the second face and so on.

        Parameters
        ----------
        P: gp_Pnt
        L: gp_Lin

        Returns
        -------
        Par: float

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_OtherSegment(self, *args)

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

        Parameters
        ----------
        F: TopoDS_Face
        P: gp_Pnt

        Returns
        -------
        u: float
        v: float
        Param: float
        Index: int
        No available documentation.

        Parameters
        ----------
        F: TopoDS_Face
        P: gp_Pnt
        surf: BRepAdaptor_HSurface
        u1: float
        v1: float
        u2: float
        v2: float

        Returns
        -------
        u: float
        v: float
        Param: float
        Index: int
        <index> gives point index to search from and returns point index of succeseful search.

        Parameters
        ----------
        F: TopoDS_Face
        P: gp_Pnt
        surf: BRepAdaptor_HSurface
        u1: float
        v1: float
        u2: float
        v2: float
        theVecD1U: gp_Vec
        theVecD1V: gp_Vec

        Returns
        -------
        u: float
        v: float
        Param: float
        Index: int

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_PointInTheFace(self, *args)

    def Reject(self, *args) -> "Standard_Boolean":
        r"""
        Should return true if p outside of bounding vol. of the shape.

        Parameters
        ----------
        P: gp_Pnt

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_Reject(self, *args)

    def RejectFace(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the face is rejected.

        Parameters
        ----------
        L: gp_Lin

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_RejectFace(self, *args)

    def RejectShell(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the shell is rejected.

        Parameters
        ----------
        L: gp_Lin

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_RejectShell(self, *args)

    def Segment(self, *args) -> "Standard_Integer":
        r"""
        Returns in <l>, <par> a segment having at least one intersection with the shape boundary to compute intersections.

        Parameters
        ----------
        P: gp_Pnt
        L: gp_Lin

        Returns
        -------
        Par: float

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_Segment(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepClass3d.delete_BRepClass3d_SolidExplorer

# Register BRepClass3d_SolidExplorer in _BRepClass3d:
_BRepClass3d.BRepClass3d_SolidExplorer_swigregister(BRepClass3d_SolidExplorer)

def BRepClass3d_SolidExplorer_FindAPointInTheFace(*args) -> "Standard_Real &, Standard_Real &":
    r"""
    Compute a point p in the face f. param is a real in ]0,1[ and is used to initialise the algorithm. for different values , different points are returned.

    Parameters
    ----------
    F: TopoDS_Face
    P: gp_Pnt

    Returns
    -------
    Param: float
    No available documentation.

    Parameters
    ----------
    F: TopoDS_Face
    P: gp_Pnt

    Returns
    -------
    u: float
    v: float
    Param: float
    No available documentation.

    Parameters
    ----------
    F: TopoDS_Face
    P: gp_Pnt
    theVecD1U: gp_Vec
    theVecD1V: gp_Vec

    Returns
    -------
    u: float
    v: float
    Param: float
    No available documentation.

    Parameters
    ----------
    F: TopoDS_Face
    P: gp_Pnt

    Returns
    -------
    u: float
    v: float
    No available documentation.

    Parameters
    ----------
    F: TopoDS_Face
    P: gp_Pnt

    Returns
    -------
    bool
    No available documentation.

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

    Returns
    -------
    u: float
    v: float

    """
    return _BRepClass3d.BRepClass3d_SolidExplorer_FindAPointInTheFace(*args)

class BRepClass3d_SolidPassiveClassifier(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"""
        Creates an undefined classifier.

        Returns
        -------
        None

        """
        _BRepClass3d.BRepClass3d_SolidPassiveClassifier_swiginit(self, _BRepClass3d.new_BRepClass3d_SolidPassiveClassifier(*args))

    def Compare(self, *args) -> "void":
        r"""
        Updates the classification process with the face <f> from the boundary.

        Parameters
        ----------
        F: TopoDS_Face
        Or: TopAbs_Orientation

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidPassiveClassifier_Compare(self, *args)

    def HasIntersection(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if an intersection is computed.

        Returns
        -------
        bool

        """
        return _BRepClass3d.BRepClass3d_SolidPassiveClassifier_HasIntersection(self, *args)

    def Intersector(self, *args) -> "BRepClass3d_Intersector3d &":
        r"""
        Returns the intersecting algorithm.

        Returns
        -------
        BRepClass3d_Intersector3d

        """
        return _BRepClass3d.BRepClass3d_SolidPassiveClassifier_Intersector(self, *args)

    def Parameter(self, *args) -> "Standard_Real":
        r"""
        Returns the current value of the parameter.

        Returns
        -------
        float

        """
        return _BRepClass3d.BRepClass3d_SolidPassiveClassifier_Parameter(self, *args)

    def Reset(self, *args) -> "void":
        r"""
        Starts a classification process. the point to classify is the origin of the line <l>. <p> is the original length of the segment on <l> used to compute intersections. <tol> is the tolerance attached to the intersections.

        Parameters
        ----------
        L: gp_Lin
        P: float
        Tol: float

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidPassiveClassifier_Reset(self, *args)

    def State(self, *args) -> "TopAbs_State":
        r"""
        Returns the current state of the point.

        Returns
        -------
        TopAbs_State

        """
        return _BRepClass3d.BRepClass3d_SolidPassiveClassifier_State(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepClass3d.delete_BRepClass3d_SolidPassiveClassifier

# Register BRepClass3d_SolidPassiveClassifier in _BRepClass3d:
_BRepClass3d.BRepClass3d_SolidPassiveClassifier_swigregister(BRepClass3d_SolidPassiveClassifier)

class BRepClass3d_SolidClassifier(BRepClass3d_SClassifier):
    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"""
        Empty constructor.

        Returns
        -------
        None
        Constructor from a shape.

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

        Returns
        -------
        None
        Constructor to classify the point p with the tolerance tol on the solid s.

        Parameters
        ----------
        S: TopoDS_Shape
        P: gp_Pnt
        Tol: float

        Returns
        -------
        None

        """
        _BRepClass3d.BRepClass3d_SolidClassifier_swiginit(self, _BRepClass3d.new_BRepClass3d_SolidClassifier(*args))

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

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidClassifier_Destroy(self, *args)

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

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

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidClassifier_Load(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Classify the point p with the tolerance tol on the solid s.

        Parameters
        ----------
        P: gp_Pnt
        Tol: float

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidClassifier_Perform(self, *args)

    def PerformInfinitePoint(self, *args) -> "void":
        r"""
        Classify an infinite point with the tolerance tol on the solid s. useful for compute the orientation of a solid.

        Parameters
        ----------
        Tol: float

        Returns
        -------
        None

        """
        return _BRepClass3d.BRepClass3d_SolidClassifier_PerformInfinitePoint(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepClass3d.delete_BRepClass3d_SolidClassifier

# Register BRepClass3d_SolidClassifier in _BRepClass3d:
_BRepClass3d.BRepClass3d_SolidClassifier_swigregister(BRepClass3d_SolidClassifier)


@classnotwrapped
class BRepClass3d_BndBoxTreeSelectorLine:
	pass

@classnotwrapped
class BRepClass3d_BndBoxTreeSelectorPoint:
	pass






