# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.4.1
#
# 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://dev.opencascade.org/doc/occt-7.9.0/refman/html/package_brepclass3d.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __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 == "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__ = _BRepClass3d.delete_SwigPyIterator

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    def __sub__(self, *args):
        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, method_name, class_name):
    return _BRepClass3d.process_exception(error, method_name, class_name)

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

class ios_base(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")
    __repr__ = _swig_repr
    erase_event = _BRepClass3d.ios_base_erase_event
    imbue_event = _BRepClass3d.ios_base_imbue_event
    copyfmt_event = _BRepClass3d.ios_base_copyfmt_event

    def register_callback(self, __fn, __index):
        return _BRepClass3d.ios_base_register_callback(self, __fn, __index)

    def flags(self, *args):
        return _BRepClass3d.ios_base_flags(self, *args)

    def setf(self, *args):
        return _BRepClass3d.ios_base_setf(self, *args)

    def unsetf(self, __mask):
        return _BRepClass3d.ios_base_unsetf(self, __mask)

    def precision(self, *args):
        return _BRepClass3d.ios_base_precision(self, *args)

    def width(self, *args):
        return _BRepClass3d.ios_base_width(self, *args)

    @staticmethod
    def sync_with_stdio(__sync=True):
        return _BRepClass3d.ios_base_sync_with_stdio(__sync)

    def imbue(self, __loc):
        return _BRepClass3d.ios_base_imbue(self, __loc)

    def getloc(self):
        return _BRepClass3d.ios_base_getloc(self)

    @staticmethod
    def xalloc():
        return _BRepClass3d.ios_base_xalloc()

    def iword(self, __ix):
        return _BRepClass3d.ios_base_iword(self, __ix)

    def pword(self, __ix):
        return _BRepClass3d.ios_base_pword(self, __ix)
    __swig_destroy__ = _BRepClass3d.delete_ios_base

# Register ios_base in _BRepClass3d:
_BRepClass3d.ios_base_swigregister(ios_base)
cvar = _BRepClass3d.cvar
ios_base.boolalpha = _BRepClass3d.cvar.ios_base_boolalpha
ios_base.dec = _BRepClass3d.cvar.ios_base_dec
ios_base.fixed = _BRepClass3d.cvar.ios_base_fixed
ios_base.hex = _BRepClass3d.cvar.ios_base_hex
ios_base.internal = _BRepClass3d.cvar.ios_base_internal
ios_base.left = _BRepClass3d.cvar.ios_base_left
ios_base.oct = _BRepClass3d.cvar.ios_base_oct
ios_base.right = _BRepClass3d.cvar.ios_base_right
ios_base.scientific = _BRepClass3d.cvar.ios_base_scientific
ios_base.showbase = _BRepClass3d.cvar.ios_base_showbase
ios_base.showpoint = _BRepClass3d.cvar.ios_base_showpoint
ios_base.showpos = _BRepClass3d.cvar.ios_base_showpos
ios_base.skipws = _BRepClass3d.cvar.ios_base_skipws
ios_base.unitbuf = _BRepClass3d.cvar.ios_base_unitbuf
ios_base.uppercase = _BRepClass3d.cvar.ios_base_uppercase
ios_base.adjustfield = _BRepClass3d.cvar.ios_base_adjustfield
ios_base.basefield = _BRepClass3d.cvar.ios_base_basefield
ios_base.floatfield = _BRepClass3d.cvar.ios_base_floatfield
ios_base.badbit = _BRepClass3d.cvar.ios_base_badbit
ios_base.eofbit = _BRepClass3d.cvar.ios_base_eofbit
ios_base.failbit = _BRepClass3d.cvar.ios_base_failbit
ios_base.goodbit = _BRepClass3d.cvar.ios_base_goodbit
ios_base.app = _BRepClass3d.cvar.ios_base_app
ios_base.ate = _BRepClass3d.cvar.ios_base_ate
ios_base.binary = _BRepClass3d.cvar.ios_base_binary
ios_base.ios_base_in = _BRepClass3d.cvar.ios_base_ios_base_in
ios_base.out = _BRepClass3d.cvar.ios_base_out
ios_base.trunc = _BRepClass3d.cvar.ios_base_trunc
ios_base.beg = _BRepClass3d.cvar.ios_base_beg
ios_base.cur = _BRepClass3d.cvar.ios_base_cur
ios_base.end = _BRepClass3d.cvar.ios_base_end

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

    def rdstate(self):
        return _BRepClass3d.ios_rdstate(self)

    def clear(self, *args):
        return _BRepClass3d.ios_clear(self, *args)

    def setstate(self, __state):
        return _BRepClass3d.ios_setstate(self, __state)

    def good(self):
        return _BRepClass3d.ios_good(self)

    def eof(self):
        return _BRepClass3d.ios_eof(self)

    def fail(self):
        return _BRepClass3d.ios_fail(self)

    def bad(self):
        return _BRepClass3d.ios_bad(self)

    def exceptions(self, *args):
        return _BRepClass3d.ios_exceptions(self, *args)

    def __init__(self, __sb):
        _BRepClass3d.ios_swiginit(self, _BRepClass3d.new_ios(__sb))
    __swig_destroy__ = _BRepClass3d.delete_ios

    def tie(self, *args):
        return _BRepClass3d.ios_tie(self, *args)

    def rdbuf(self, *args):
        return _BRepClass3d.ios_rdbuf(self, *args)

    def copyfmt(self, __rhs):
        return _BRepClass3d.ios_copyfmt(self, __rhs)

    def fill(self, *args):
        return _BRepClass3d.ios_fill(self, *args)

    def imbue(self, __loc):
        return _BRepClass3d.ios_imbue(self, __loc)

    def narrow(self, __c, __dfault):
        return _BRepClass3d.ios_narrow(self, __c, __dfault)

    def widen(self, __c):
        return _BRepClass3d.ios_widen(self, __c)

# Register ios in _BRepClass3d:
_BRepClass3d.ios_swigregister(ios)
class ostream(ios):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _BRepClass3d.ostream_swiginit(self, _BRepClass3d.new_ostream(__sb))
    __swig_destroy__ = _BRepClass3d.delete_ostream

    def __lshift__(self, *args):
        return _BRepClass3d.ostream___lshift__(self, *args)

    def put(self, __c):
        return _BRepClass3d.ostream_put(self, __c)

    def write(self, __s, __n):
        return _BRepClass3d.ostream_write(self, __s, __n)

    def flush(self):
        return _BRepClass3d.ostream_flush(self)

    def tellp(self):
        return _BRepClass3d.ostream_tellp(self)

    def seekp(self, *args):
        return _BRepClass3d.ostream_seekp(self, *args)

# Register ostream in _BRepClass3d:
_BRepClass3d.ostream_swigregister(ostream)
class istream(ios):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _BRepClass3d.istream_swiginit(self, _BRepClass3d.new_istream(__sb))
    __swig_destroy__ = _BRepClass3d.delete_istream

    def __rshift__(self, *args):
        return _BRepClass3d.istream___rshift__(self, *args)

    def gcount(self):
        return _BRepClass3d.istream_gcount(self)

    def get(self, *args):
        return _BRepClass3d.istream_get(self, *args)

    def getline(self, *args):
        return _BRepClass3d.istream_getline(self, *args)

    def ignore(self, *args):
        return _BRepClass3d.istream_ignore(self, *args)

    def peek(self):
        return _BRepClass3d.istream_peek(self)

    def read(self, __s, __n):
        return _BRepClass3d.istream_read(self, __s, __n)

    def readsome(self, __s, __n):
        return _BRepClass3d.istream_readsome(self, __s, __n)

    def putback(self, __c):
        return _BRepClass3d.istream_putback(self, __c)

    def unget(self):
        return _BRepClass3d.istream_unget(self)

    def sync(self):
        return _BRepClass3d.istream_sync(self)

    def tellg(self):
        return _BRepClass3d.istream_tellg(self)

    def seekg(self, *args):
        return _BRepClass3d.istream_seekg(self, *args)

# Register istream in _BRepClass3d:
_BRepClass3d.istream_swigregister(istream)
class iostream(istream, ostream):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _BRepClass3d.iostream_swiginit(self, _BRepClass3d.new_iostream(__sb))
    __swig_destroy__ = _BRepClass3d.delete_iostream

# Register iostream in _BRepClass3d:
_BRepClass3d.iostream_swigregister(iostream)
cin = cvar.cin
cout = cvar.cout
cerr = cvar.cerr
clog = cvar.clog

endl_cb_ptr = _BRepClass3d.endl_cb_ptr
endl = _BRepClass3d.endl
ends_cb_ptr = _BRepClass3d.ends_cb_ptr
ends = _BRepClass3d.ends
flush_cb_ptr = _BRepClass3d.flush_cb_ptr
flush = _BRepClass3d.flush
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.Geom2dAdaptor
import OCC.Core.GeomAdaptor

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, theBnd):
        return _BRepClass3d.BRepClass3d_BndBoxTree_Add(self, theObj, theBnd)

    def Select(self, theSelector):
        return _BRepClass3d.BRepClass3d_BndBoxTree_Select(self, theSelector)

    def Clear(self, aNewAlloc=0):
        return _BRepClass3d.BRepClass3d_BndBoxTree_Clear(self, aNewAlloc)

    def IsEmpty(self):
        return _BRepClass3d.BRepClass3d_BndBoxTree_IsEmpty(self)

    def Root(self):
        return _BRepClass3d.BRepClass3d_BndBoxTree_Root(self)
    __swig_destroy__ = _BRepClass3d.delete_BRepClass3d_BndBoxTree

    def Allocator(self):
        return _BRepClass3d.BRepClass3d_BndBoxTree_Allocator(self)

# Register BRepClass3d_BndBoxTree in _BRepClass3d:
_BRepClass3d.BRepClass3d_BndBoxTree_swigregister(BRepClass3d_BndBoxTree)
class BRepClass3d_MapOfInter(OCC.Core.NCollection.NCollection_BaseMap):
    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 _BRepClass3d.BRepClass3d_MapOfInter_begin(self)

    def end(self):
        return _BRepClass3d.BRepClass3d_MapOfInter_end(self)

    def cbegin(self):
        return _BRepClass3d.BRepClass3d_MapOfInter_cbegin(self)

    def cend(self):
        return _BRepClass3d.BRepClass3d_MapOfInter_cend(self)

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

    def Exchange(self, theOther):
        return _BRepClass3d.BRepClass3d_MapOfInter_Exchange(self, theOther)

    def Assign(self, theOther):
        return _BRepClass3d.BRepClass3d_MapOfInter_Assign(self, theOther)

    def Set(self, *args):
        return _BRepClass3d.BRepClass3d_MapOfInter_Set(self, *args)

    def ReSize(self, N):
        return _BRepClass3d.BRepClass3d_MapOfInter_ReSize(self, N)

    def Bind(self, *args):
        return _BRepClass3d.BRepClass3d_MapOfInter_Bind(self, *args)

    def Bound(self, *args):
        return _BRepClass3d.BRepClass3d_MapOfInter_Bound(self, *args)

    def IsBound(self, theKey):
        return _BRepClass3d.BRepClass3d_MapOfInter_IsBound(self, theKey)

    def UnBind(self, theKey):
        return _BRepClass3d.BRepClass3d_MapOfInter_UnBind(self, theKey)

    def Seek(self, theKey):
        return _BRepClass3d.BRepClass3d_MapOfInter_Seek(self, theKey)

    def Find(self, *args):
        return _BRepClass3d.BRepClass3d_MapOfInter_Find(self, *args)

    def ChangeSeek(self, theKey):
        return _BRepClass3d.BRepClass3d_MapOfInter_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey):
        return _BRepClass3d.BRepClass3d_MapOfInter_ChangeFind(self, theKey)

    def __call__(self, *args):
        return _BRepClass3d.BRepClass3d_MapOfInter___call__(self, *args)

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

    def Size(self):
        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):
        r"""

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

        Return
        -------
        TopoDS_Shell

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

        """
        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)
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"""
        Return
        -------
        None

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

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

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

        Description
        -----------
        Returns the significant face used to determine the intersection.

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

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

        Description
        -----------
        True is returned if a point has been found.

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

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

        Description
        -----------
        True is returned when the intersection have been computed.

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

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

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

        Return
        -------
        None

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

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

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

        Description
        -----------
        Returns the geometric point of the intersection between the line and the surface.

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

    def State(self, *args):
        r"""
        Return
        -------
        TopAbs_State

        Description
        -----------
        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 boundary of the face).

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

    def Transition(self, *args):
        r"""
        Return
        -------
        IntCurveSurface_TransitionOnCurve

        Description
        -----------
        Returns the transition of the line on the surface.

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

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

        Description
        -----------
        Returns the U parameter of the intersection point on the surface.

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

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

        Description
        -----------
        Returns the V parameter of the intersection point on the surface.

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

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

        Description
        -----------
        Returns the parameter of the intersection point on the line.

        """
        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"""
        Return
        -------
        None

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

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

        Return
        -------
        None

        Description
        -----------
        Constructor to classify the point P with the tolerance Tol on the solid S.

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

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

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

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

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

        Description
        -----------
        Returns True when the point is a point of a face.

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

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

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

        Return
        -------
        None

        Description
        -----------
        Classify the point P with the tolerance Tol on the solid S.

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

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

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

        Return
        -------
        None

        Description
        -----------
        Classify an infinite point with the tolerance Tol on the solid S.

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

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

        Description
        -----------
        Returns True if the classification has been computed by rejection. The State is then OUT.

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

    def State(self, *args):
        r"""
        Return
        -------
        TopAbs_State

        Description
        -----------
        Returns the result of the classification.

        """
        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"""
        Return
        -------
        None

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

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

        Return
        -------
        None

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

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

    def Box(self, *args):
        r"""
        Return
        -------
        Bnd_Box

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

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

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

        Description
        -----------
        Returns the current face.

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

    def CurrentShell(self, *args):
        r"""
        Return
        -------
        TopoDS_Shell

        Description
        -----------
        Returns the current shell.

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

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

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

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

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

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

        Return
        -------
        None

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

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

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

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

        Return
        -------
        Param: float

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

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

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

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

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

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

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

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

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

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

        Return
        -------
        bool

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

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

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

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

        """
        return _BRepClass3d.BRepClass3d_SolidExplorer_FindAPointInTheFace(*args)

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

        Description
        -----------
        Returns the index of face for which last segment is calculated.

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

    def GetMapEV(self, *args):
        r"""
        Return
        -------
        TopTools_IndexedMapOfShape

        Description
        -----------
        Return edge/vertices map for current shape.

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

    def GetShape(self, *args):
        r"""
        Return
        -------
        TopoDS_Shape

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

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

    def GetTree(self, *args):
        r"""
        Return
        -------
        BRepClass3d_BndBoxTree

        Description
        -----------
        Return UB-tree instance which is used for edge / vertex checks.

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

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

        Description
        -----------
        Starts an exploration of the faces of the current shell.

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

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

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

        Return
        -------
        None

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

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

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

        Description
        -----------
        Starts an exploration of the shells.

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

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

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

        Return
        -------
        IntCurvesFace_Intersector

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

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

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

        Description
        -----------
        Returns True if current face in current shell.

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

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

        Description
        -----------
        Returns True if there is a current shell.

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

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

        Description
        -----------
        Sets the explorer to the next Face of the current shell.

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

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

        Description
        -----------
        Sets the explorer to the next shell.

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

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

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

        Return
        -------
        Par: float

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

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

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

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

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

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

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

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

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

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

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

        Description
        -----------
        <Index> gives point index to search from and returns point index of succeseful search.

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

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

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

        Return
        -------
        bool

        Description
        -----------
        Should return True if P outside of bounding vol. of the shape.

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

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

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

        Return
        -------
        bool

        Description
        -----------
        returns True if the face is rejected.

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

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

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

        Return
        -------
        bool

        Description
        -----------
        Returns True if the Shell is rejected.

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

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

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

        Return
        -------
        Par: float

        Description
        -----------
        Returns in <L>, <Par> a segment having at least one intersection with the shape boundary to compute intersections.

        """
        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)
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"""
        Return
        -------
        None

        Description
        -----------
        Creates an undefined classifier.

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

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

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

        Return
        -------
        None

        Description
        -----------
        Updates the classification process with the face <F> from the boundary.

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

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

        Description
        -----------
        Returns True if an intersection is computed.

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

    def Intersector(self, *args):
        r"""
        Return
        -------
        BRepClass3d_Intersector3d

        Description
        -----------
        Returns the intersecting algorithm.

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

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

        Description
        -----------
        Returns the current value of the parameter.

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

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

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

        Return
        -------
        None

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

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

    def State(self, *args):
        r"""
        Return
        -------
        TopAbs_State

        Description
        -----------
        Returns the current state of the point.

        """
        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"""
        Return
        -------
        None

        Description
        -----------
        empty constructor.

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

        Return
        -------
        None

        Description
        -----------
        Constructor from a Shape.

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

        Return
        -------
        None

        Description
        -----------
        Constructor to classify the point P with the tolerance Tol on the solid S.

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

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

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

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

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

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

        Return
        -------
        None

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

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

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

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

        Return
        -------
        None

        Description
        -----------
        Classify the point P with the tolerance Tol on the solid S.

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

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

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

        Return
        -------
        None

        Description
        -----------
        Classify an infinite point with the tolerance Tol on the solid S. Useful for compute the orientation of a solid.

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





@deprecated
def brepclass3d_OuterShell(*args):
	return brepclass3d.OuterShell(*args)

@deprecated
def BRepClass3d_SolidExplorer_FindAPointInTheFace(*args):
	return BRepClass3d_SolidExplorer.FindAPointInTheFace(*args)

@deprecated
def BRepClass3d_SolidExplorer_FindAPointInTheFace(*args):
	return BRepClass3d_SolidExplorer.FindAPointInTheFace(*args)

@deprecated
def BRepClass3d_SolidExplorer_FindAPointInTheFace(*args):
	return BRepClass3d_SolidExplorer.FindAPointInTheFace(*args)

@deprecated
def BRepClass3d_SolidExplorer_FindAPointInTheFace(*args):
	return BRepClass3d_SolidExplorer.FindAPointInTheFace(*args)

@deprecated
def BRepClass3d_SolidExplorer_FindAPointInTheFace(*args):
	return BRepClass3d_SolidExplorer.FindAPointInTheFace(*args)

@deprecated
def BRepClass3d_SolidExplorer_FindAPointInTheFace(*args):
	return BRepClass3d_SolidExplorer.FindAPointInTheFace(*args)



