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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _Bnd:
_Bnd.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 _Bnd.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.gp
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.TColgp
import OCC.Core.BVH

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




def Handle_Bnd_HArray1OfBox_Create() -> "opencascade::handle< Bnd_HArray1OfBox >":
    return _Bnd.Handle_Bnd_HArray1OfBox_Create()

def Handle_Bnd_HArray1OfBox_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Bnd_HArray1OfBox >":
    return _Bnd.Handle_Bnd_HArray1OfBox_DownCast(t)

def Handle_Bnd_HArray1OfBox_IsNull(t: "opencascade::handle< Bnd_HArray1OfBox > const &") -> "bool":
    return _Bnd.Handle_Bnd_HArray1OfBox_IsNull(t)

def Handle_Bnd_HArray1OfSphere_Create() -> "opencascade::handle< Bnd_HArray1OfSphere >":
    return _Bnd.Handle_Bnd_HArray1OfSphere_Create()

def Handle_Bnd_HArray1OfSphere_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Bnd_HArray1OfSphere >":
    return _Bnd.Handle_Bnd_HArray1OfSphere_DownCast(t)

def Handle_Bnd_HArray1OfSphere_IsNull(t: "opencascade::handle< Bnd_HArray1OfSphere > const &") -> "bool":
    return _Bnd.Handle_Bnd_HArray1OfSphere_IsNull(t)

def Handle_Bnd_HArray1OfBox2d_Create() -> "opencascade::handle< Bnd_HArray1OfBox2d >":
    return _Bnd.Handle_Bnd_HArray1OfBox2d_Create()

def Handle_Bnd_HArray1OfBox2d_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Bnd_HArray1OfBox2d >":
    return _Bnd.Handle_Bnd_HArray1OfBox2d_DownCast(t)

def Handle_Bnd_HArray1OfBox2d_IsNull(t: "opencascade::handle< Bnd_HArray1OfBox2d > const &") -> "bool":
    return _Bnd.Handle_Bnd_HArray1OfBox2d_IsNull(t)
class Bnd_Array1OfBox(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_Array1< Bnd_Box >::iterator":
        return _Bnd.Bnd_Array1OfBox_begin(self)

    def end(self) -> "NCollection_Array1< Bnd_Box >::iterator":
        return _Bnd.Bnd_Array1OfBox_end(self)

    def cbegin(self) -> "NCollection_Array1< Bnd_Box >::const_iterator":
        return _Bnd.Bnd_Array1OfBox_cbegin(self)

    def cend(self) -> "NCollection_Array1< Bnd_Box >::const_iterator":
        return _Bnd.Bnd_Array1OfBox_cend(self)

    def __init__(self, *args):
        _Bnd.Bnd_Array1OfBox_swiginit(self, _Bnd.new_Bnd_Array1OfBox(*args))

    def Init(self, theValue: "Bnd_Box") -> "void":
        return _Bnd.Bnd_Array1OfBox_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfBox_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfBox_Length(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfBox_IsEmpty(self)

    def Lower(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfBox_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfBox_Upper(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfBox_IsDeletable(self)

    def IsAllocated(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfBox_IsAllocated(self)

    def Assign(self, theOther: "Bnd_Array1OfBox") -> "NCollection_Array1< Bnd_Box > &":
        return _Bnd.Bnd_Array1OfBox_Assign(self, theOther)

    def Move(self, theOther: "Bnd_Array1OfBox") -> "NCollection_Array1< Bnd_Box > &":
        return _Bnd.Bnd_Array1OfBox_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array1< Bnd_Box > &":
        return _Bnd.Bnd_Array1OfBox_Set(self, *args)

    def First(self) -> "Bnd_Box const &":
        return _Bnd.Bnd_Array1OfBox_First(self)

    def ChangeFirst(self) -> "Bnd_Box &":
        return _Bnd.Bnd_Array1OfBox_ChangeFirst(self)

    def Last(self) -> "Bnd_Box const &":
        return _Bnd.Bnd_Array1OfBox_Last(self)

    def ChangeLast(self) -> "Bnd_Box &":
        return _Bnd.Bnd_Array1OfBox_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Bnd_Box const &":
        return _Bnd.Bnd_Array1OfBox_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Bnd_Box &":
        return _Bnd.Bnd_Array1OfBox_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Bnd_Box &":
        return _Bnd.Bnd_Array1OfBox___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Bnd_Box") -> "void":
        return _Bnd.Bnd_Array1OfBox_SetValue(self, theIndex, theItem)

    def Resize(self, theLower: "Standard_Integer const", theUpper: "Standard_Integer const", theToCopyData: "Standard_Boolean const") -> "void":
        return _Bnd.Bnd_Array1OfBox_Resize(self, theLower, theUpper, theToCopyData)
    __swig_destroy__ = _Bnd.delete_Bnd_Array1OfBox

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

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

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Bnd_Array1OfBox in _Bnd:
_Bnd.Bnd_Array1OfBox_swigregister(Bnd_Array1OfBox)

class Bnd_Array1OfBox2d(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_Array1< Bnd_Box2d >::iterator":
        return _Bnd.Bnd_Array1OfBox2d_begin(self)

    def end(self) -> "NCollection_Array1< Bnd_Box2d >::iterator":
        return _Bnd.Bnd_Array1OfBox2d_end(self)

    def cbegin(self) -> "NCollection_Array1< Bnd_Box2d >::const_iterator":
        return _Bnd.Bnd_Array1OfBox2d_cbegin(self)

    def cend(self) -> "NCollection_Array1< Bnd_Box2d >::const_iterator":
        return _Bnd.Bnd_Array1OfBox2d_cend(self)

    def __init__(self, *args):
        _Bnd.Bnd_Array1OfBox2d_swiginit(self, _Bnd.new_Bnd_Array1OfBox2d(*args))

    def Init(self, theValue: "Bnd_Box2d") -> "void":
        return _Bnd.Bnd_Array1OfBox2d_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfBox2d_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfBox2d_Length(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfBox2d_IsEmpty(self)

    def Lower(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfBox2d_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfBox2d_Upper(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfBox2d_IsDeletable(self)

    def IsAllocated(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfBox2d_IsAllocated(self)

    def Assign(self, theOther: "Bnd_Array1OfBox2d") -> "NCollection_Array1< Bnd_Box2d > &":
        return _Bnd.Bnd_Array1OfBox2d_Assign(self, theOther)

    def Move(self, theOther: "Bnd_Array1OfBox2d") -> "NCollection_Array1< Bnd_Box2d > &":
        return _Bnd.Bnd_Array1OfBox2d_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array1< Bnd_Box2d > &":
        return _Bnd.Bnd_Array1OfBox2d_Set(self, *args)

    def First(self) -> "Bnd_Box2d const &":
        return _Bnd.Bnd_Array1OfBox2d_First(self)

    def ChangeFirst(self) -> "Bnd_Box2d &":
        return _Bnd.Bnd_Array1OfBox2d_ChangeFirst(self)

    def Last(self) -> "Bnd_Box2d const &":
        return _Bnd.Bnd_Array1OfBox2d_Last(self)

    def ChangeLast(self) -> "Bnd_Box2d &":
        return _Bnd.Bnd_Array1OfBox2d_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Bnd_Box2d const &":
        return _Bnd.Bnd_Array1OfBox2d_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Bnd_Box2d &":
        return _Bnd.Bnd_Array1OfBox2d_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Bnd_Box2d &":
        return _Bnd.Bnd_Array1OfBox2d___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Bnd_Box2d") -> "void":
        return _Bnd.Bnd_Array1OfBox2d_SetValue(self, theIndex, theItem)

    def Resize(self, theLower: "Standard_Integer const", theUpper: "Standard_Integer const", theToCopyData: "Standard_Boolean const") -> "void":
        return _Bnd.Bnd_Array1OfBox2d_Resize(self, theLower, theUpper, theToCopyData)
    __swig_destroy__ = _Bnd.delete_Bnd_Array1OfBox2d

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

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

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Bnd_Array1OfBox2d in _Bnd:
_Bnd.Bnd_Array1OfBox2d_swigregister(Bnd_Array1OfBox2d)

class Bnd_Array1OfSphere(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_Array1< Bnd_Sphere >::iterator":
        return _Bnd.Bnd_Array1OfSphere_begin(self)

    def end(self) -> "NCollection_Array1< Bnd_Sphere >::iterator":
        return _Bnd.Bnd_Array1OfSphere_end(self)

    def cbegin(self) -> "NCollection_Array1< Bnd_Sphere >::const_iterator":
        return _Bnd.Bnd_Array1OfSphere_cbegin(self)

    def cend(self) -> "NCollection_Array1< Bnd_Sphere >::const_iterator":
        return _Bnd.Bnd_Array1OfSphere_cend(self)

    def __init__(self, *args):
        _Bnd.Bnd_Array1OfSphere_swiginit(self, _Bnd.new_Bnd_Array1OfSphere(*args))

    def Init(self, theValue: "Bnd_Sphere") -> "void":
        return _Bnd.Bnd_Array1OfSphere_Init(self, theValue)

    def Size(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfSphere_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfSphere_Length(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfSphere_IsEmpty(self)

    def Lower(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfSphere_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Bnd.Bnd_Array1OfSphere_Upper(self)

    def IsDeletable(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfSphere_IsDeletable(self)

    def IsAllocated(self) -> "Standard_Boolean":
        return _Bnd.Bnd_Array1OfSphere_IsAllocated(self)

    def Assign(self, theOther: "Bnd_Array1OfSphere") -> "NCollection_Array1< Bnd_Sphere > &":
        return _Bnd.Bnd_Array1OfSphere_Assign(self, theOther)

    def Move(self, theOther: "Bnd_Array1OfSphere") -> "NCollection_Array1< Bnd_Sphere > &":
        return _Bnd.Bnd_Array1OfSphere_Move(self, theOther)

    def Set(self, *args) -> "NCollection_Array1< Bnd_Sphere > &":
        return _Bnd.Bnd_Array1OfSphere_Set(self, *args)

    def First(self) -> "Bnd_Sphere const &":
        return _Bnd.Bnd_Array1OfSphere_First(self)

    def ChangeFirst(self) -> "Bnd_Sphere &":
        return _Bnd.Bnd_Array1OfSphere_ChangeFirst(self)

    def Last(self) -> "Bnd_Sphere const &":
        return _Bnd.Bnd_Array1OfSphere_Last(self)

    def ChangeLast(self) -> "Bnd_Sphere &":
        return _Bnd.Bnd_Array1OfSphere_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Bnd_Sphere const &":
        return _Bnd.Bnd_Array1OfSphere_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Bnd_Sphere &":
        return _Bnd.Bnd_Array1OfSphere_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Bnd_Sphere &":
        return _Bnd.Bnd_Array1OfSphere___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Bnd_Sphere") -> "void":
        return _Bnd.Bnd_Array1OfSphere_SetValue(self, theIndex, theItem)

    def Resize(self, theLower: "Standard_Integer const", theUpper: "Standard_Integer const", theToCopyData: "Standard_Boolean const") -> "void":
        return _Bnd.Bnd_Array1OfSphere_Resize(self, theLower, theUpper, theToCopyData)
    __swig_destroy__ = _Bnd.delete_Bnd_Array1OfSphere

    def __getitem__(self, index):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            return self.Value(index + self.Lower())

    def __setitem__(self, index, value):
        if index + self.Lower() > self.Upper():
            raise IndexError("index out of range")
        else:
            self.SetValue(index + self.Lower(), value)

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

    def __iter__(self):
        self.low = self.Lower()
        self.up = self.Upper()
        self.current = self.Lower() - 1
        return self

    def next(self):
        if self.current >= self.Upper():
            raise StopIteration
        else:
            self.current += 1
        return self.Value(self.current)

    __next__ = next


# Register Bnd_Array1OfSphere in _Bnd:
_Bnd.Bnd_Array1OfSphere_swigregister(Bnd_Array1OfSphere)

class Bnd_SeqOfBox(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_Sequence< Bnd_Box >::iterator":
        return _Bnd.Bnd_SeqOfBox_begin(self)

    def end(self) -> "NCollection_Sequence< Bnd_Box >::iterator":
        return _Bnd.Bnd_SeqOfBox_end(self)

    def cbegin(self) -> "NCollection_Sequence< Bnd_Box >::const_iterator":
        return _Bnd.Bnd_SeqOfBox_cbegin(self)

    def cend(self) -> "NCollection_Sequence< Bnd_Box >::const_iterator":
        return _Bnd.Bnd_SeqOfBox_cend(self)

    def __init__(self, *args):
        _Bnd.Bnd_SeqOfBox_swiginit(self, _Bnd.new_Bnd_SeqOfBox(*args))

    def Size(self) -> "Standard_Integer":
        return _Bnd.Bnd_SeqOfBox_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Bnd.Bnd_SeqOfBox_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _Bnd.Bnd_SeqOfBox_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Bnd.Bnd_SeqOfBox_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Bnd.Bnd_SeqOfBox_IsEmpty(self)

    def Reverse(self) -> "void":
        return _Bnd.Bnd_SeqOfBox_Reverse(self)

    def Exchange(self, I: "Standard_Integer const", J: "Standard_Integer const") -> "void":
        return _Bnd.Bnd_SeqOfBox_Exchange(self, I, J)

    @staticmethod
    def delNode(theNode: "NCollection_SeqNode *", theAl: "opencascade::handle< NCollection_BaseAllocator > &") -> "void":
        return _Bnd.Bnd_SeqOfBox_delNode(theNode, theAl)

    def Clear(self, theAllocator: "opencascade::handle< NCollection_BaseAllocator > const &"=0) -> "void":
        return _Bnd.Bnd_SeqOfBox_Clear(self, theAllocator)

    def Assign(self, theOther: "Bnd_SeqOfBox") -> "NCollection_Sequence< Bnd_Box > &":
        return _Bnd.Bnd_SeqOfBox_Assign(self, theOther)

    def Set(self, theOther: "Bnd_SeqOfBox") -> "NCollection_Sequence< Bnd_Box > &":
        return _Bnd.Bnd_SeqOfBox_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _Bnd.Bnd_SeqOfBox_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _Bnd.Bnd_SeqOfBox_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _Bnd.Bnd_SeqOfBox_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _Bnd.Bnd_SeqOfBox_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _Bnd.Bnd_SeqOfBox_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "Bnd_SeqOfBox") -> "void":
        return _Bnd.Bnd_SeqOfBox_Split(self, theIndex, theSeq)

    def First(self) -> "Bnd_Box const &":
        return _Bnd.Bnd_SeqOfBox_First(self)

    def ChangeFirst(self) -> "Bnd_Box &":
        return _Bnd.Bnd_SeqOfBox_ChangeFirst(self)

    def Last(self) -> "Bnd_Box const &":
        return _Bnd.Bnd_SeqOfBox_Last(self)

    def ChangeLast(self) -> "Bnd_Box &":
        return _Bnd.Bnd_SeqOfBox_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Bnd_Box const &":
        return _Bnd.Bnd_SeqOfBox_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Bnd_Box &":
        return _Bnd.Bnd_SeqOfBox_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Bnd_Box &":
        return _Bnd.Bnd_SeqOfBox___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Bnd_Box") -> "void":
        return _Bnd.Bnd_SeqOfBox_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _Bnd.delete_Bnd_SeqOfBox

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


# Register Bnd_SeqOfBox in _Bnd:
_Bnd.Bnd_SeqOfBox_swigregister(Bnd_SeqOfBox)

def Bnd_SeqOfBox_delNode(theNode: "NCollection_SeqNode *", theAl: "opencascade::handle< NCollection_BaseAllocator > &") -> "void":
    return _Bnd.Bnd_SeqOfBox_delNode(theNode, theAl)

class Bnd_B2d(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.

        Parameters
        ----------
        theCenter: gp_XY
        theHSize: gp_XY

        Returns
        -------
        None

        """
        _Bnd.Bnd_B2d_swiginit(self, _Bnd.new_Bnd_B2d(*args))

    def Add(self, *args) -> "void":
        r"""
        Update the box by a point.

        Parameters
        ----------
        thePnt: gp_XY

        Returns
        -------
        None
        Update the box by a point.

        Parameters
        ----------
        thePnt: gp_Pnt2d

        Returns
        -------
        None
        Update the box by another box.

        Parameters
        ----------
        theBox: Bnd_B2d

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2d_Add(self, *args)

    def Clear(self, *args) -> "void":
        r"""
        Reset the box data.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2d_Clear(self, *args)

    def CornerMax(self, *args) -> "gp_XY":
        r"""
        Query a box corner: (center + hsize). you must make sure that the box is not void (see isvoid()), otherwise the method returns irrelevant result.

        Returns
        -------
        gp_XY

        """
        return _Bnd.Bnd_B2d_CornerMax(self, *args)

    def CornerMin(self, *args) -> "gp_XY":
        r"""
        Query a box corner: (center - hsize). you must make sure that the box is not void (see isvoid()), otherwise the method returns irrelevant result.

        Returns
        -------
        gp_XY

        """
        return _Bnd.Bnd_B2d_CornerMin(self, *args)

    def Enlarge(self, *args) -> "void":
        r"""
        Extend the box by the absolute value of thediff.

        Parameters
        ----------
        theDiff: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2d_Enlarge(self, *args)

    def IsIn(self, *args) -> "Standard_Boolean":
        r"""
        Check that the box 'this' is inside the given box 'thebox'. returns true if 'this' box is fully inside 'thebox'.

        Parameters
        ----------
        theBox: Bnd_B2d

        Returns
        -------
        bool
        Check that the box 'this' is inside the given box 'thebox' transformed by 'thetrsf'. returns true if 'this' box is fully inside the transformed 'thebox'.

        Parameters
        ----------
        theBox: Bnd_B2d
        theTrsf: gp_Trsf2d

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B2d_IsIn(self, *args)

    def IsOut(self, *args) -> "Standard_Boolean":
        r"""
        Check the given point for the inclusion in the box. returns true if the point is outside.

        Parameters
        ----------
        thePnt: gp_XY

        Returns
        -------
        bool
        Check a circle for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theCenter: gp_XY
        theRadius: float
        isCircleHollow: bool,optional
        	default value is Standard_False

        Returns
        -------
        bool
        Check the given box for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theOtherBox: Bnd_B2d

        Returns
        -------
        bool
        Check the given box oriented by the given transformation for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theOtherBox: Bnd_B2d
        theTrsf: gp_Trsf2d

        Returns
        -------
        bool
        Check the given line for the intersection with the current box. returns true if there is no intersection.

        Parameters
        ----------
        theLine: gp_Ax2d

        Returns
        -------
        bool
        Check the segment defined by the couple of input points for the intersection with the current box. returns true if there is no intersection.

        Parameters
        ----------
        theP0: gp_XY
        theP1: gp_XY

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B2d_IsOut(self, *args)

    def IsVoid(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the box is void (non-initialized).

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B2d_IsVoid(self, *args)

    def Limit(self, *args) -> "Standard_Boolean":
        r"""
        Limit the box by the internals of theotherbox. returns true if the limitation takes place, otherwise false indicating that the boxes do not intersect.

        Parameters
        ----------
        theOtherBox: Bnd_B2d

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B2d_Limit(self, *args)

    def SetCenter(self, *args) -> "void":
        r"""
        Set the center coordinates.

        Parameters
        ----------
        theCenter: gp_XY

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2d_SetCenter(self, *args)

    def SetHSize(self, *args) -> "void":
        r"""
        Set the hsize (half-diagonal) coordinates. all components of thehsize must be non-negative.

        Parameters
        ----------
        theHSize: gp_XY

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2d_SetHSize(self, *args)

    def SquareExtent(self, *args) -> "Standard_Real":
        r"""
        Query the square diagonal. if the box is void (see method isvoid()) then a very big real value is returned.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_B2d_SquareExtent(self, *args)

    def Transformed(self, *args) -> "Bnd_B2d":
        r"""
        Transform the bounding box with the given transformation. the resulting box will be larger if thetrsf contains rotation.

        Parameters
        ----------
        theTrsf: gp_Trsf2d

        Returns
        -------
        Bnd_B2d

        """
        return _Bnd.Bnd_B2d_Transformed(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_B2d

# Register Bnd_B2d in _Bnd:
_Bnd.Bnd_B2d_swigregister(Bnd_B2d)

class Bnd_B2f(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.

        Parameters
        ----------
        theCenter: gp_XY
        theHSize: gp_XY

        Returns
        -------
        None

        """
        _Bnd.Bnd_B2f_swiginit(self, _Bnd.new_Bnd_B2f(*args))

    def Add(self, *args) -> "void":
        r"""
        Update the box by a point.

        Parameters
        ----------
        thePnt: gp_XY

        Returns
        -------
        None
        Update the box by a point.

        Parameters
        ----------
        thePnt: gp_Pnt2d

        Returns
        -------
        None
        Update the box by another box.

        Parameters
        ----------
        theBox: Bnd_B2f

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2f_Add(self, *args)

    def Clear(self, *args) -> "void":
        r"""
        Reset the box data.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2f_Clear(self, *args)

    def CornerMax(self, *args) -> "gp_XY":
        r"""
        Query a box corner: (center + hsize). you must make sure that the box is not void (see isvoid()), otherwise the method returns irrelevant result.

        Returns
        -------
        gp_XY

        """
        return _Bnd.Bnd_B2f_CornerMax(self, *args)

    def CornerMin(self, *args) -> "gp_XY":
        r"""
        Query a box corner: (center - hsize). you must make sure that the box is not void (see isvoid()), otherwise the method returns irrelevant result.

        Returns
        -------
        gp_XY

        """
        return _Bnd.Bnd_B2f_CornerMin(self, *args)

    def Enlarge(self, *args) -> "void":
        r"""
        Extend the box by the absolute value of thediff.

        Parameters
        ----------
        theDiff: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2f_Enlarge(self, *args)

    def IsIn(self, *args) -> "Standard_Boolean":
        r"""
        Check that the box 'this' is inside the given box 'thebox'. returns true if 'this' box is fully inside 'thebox'.

        Parameters
        ----------
        theBox: Bnd_B2f

        Returns
        -------
        bool
        Check that the box 'this' is inside the given box 'thebox' transformed by 'thetrsf'. returns true if 'this' box is fully inside the transformed 'thebox'.

        Parameters
        ----------
        theBox: Bnd_B2f
        theTrsf: gp_Trsf2d

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B2f_IsIn(self, *args)

    def IsOut(self, *args) -> "Standard_Boolean":
        r"""
        Check the given point for the inclusion in the box. returns true if the point is outside.

        Parameters
        ----------
        thePnt: gp_XY

        Returns
        -------
        bool
        Check a circle for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theCenter: gp_XY
        theRadius: float
        isCircleHollow: bool,optional
        	default value is Standard_False

        Returns
        -------
        bool
        Check the given box for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theOtherBox: Bnd_B2f

        Returns
        -------
        bool
        Check the given box oriented by the given transformation for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theOtherBox: Bnd_B2f
        theTrsf: gp_Trsf2d

        Returns
        -------
        bool
        Check the given line for the intersection with the current box. returns true if there is no intersection.

        Parameters
        ----------
        theLine: gp_Ax2d

        Returns
        -------
        bool
        Check the segment defined by the couple of input points for the intersection with the current box. returns true if there is no intersection.

        Parameters
        ----------
        theP0: gp_XY
        theP1: gp_XY

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B2f_IsOut(self, *args)

    def IsVoid(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the box is void (non-initialized).

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B2f_IsVoid(self, *args)

    def Limit(self, *args) -> "Standard_Boolean":
        r"""
        Limit the box by the internals of theotherbox. returns true if the limitation takes place, otherwise false indicating that the boxes do not intersect.

        Parameters
        ----------
        theOtherBox: Bnd_B2f

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B2f_Limit(self, *args)

    def SetCenter(self, *args) -> "void":
        r"""
        Set the center coordinates.

        Parameters
        ----------
        theCenter: gp_XY

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2f_SetCenter(self, *args)

    def SetHSize(self, *args) -> "void":
        r"""
        Set the hsize (half-diagonal) coordinates. all components of thehsize must be non-negative.

        Parameters
        ----------
        theHSize: gp_XY

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B2f_SetHSize(self, *args)

    def SquareExtent(self, *args) -> "Standard_Real":
        r"""
        Query the square diagonal. if the box is void (see method isvoid()) then a very big real value is returned.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_B2f_SquareExtent(self, *args)

    def Transformed(self, *args) -> "Bnd_B2f":
        r"""
        Transform the bounding box with the given transformation. the resulting box will be larger if thetrsf contains rotation.

        Parameters
        ----------
        theTrsf: gp_Trsf2d

        Returns
        -------
        Bnd_B2f

        """
        return _Bnd.Bnd_B2f_Transformed(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_B2f

# Register Bnd_B2f in _Bnd:
_Bnd.Bnd_B2f_swigregister(Bnd_B2f)

class Bnd_B3d(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.

        Parameters
        ----------
        theCenter: gp_XYZ
        theHSize: gp_XYZ

        Returns
        -------
        None

        """
        _Bnd.Bnd_B3d_swiginit(self, _Bnd.new_Bnd_B3d(*args))

    def Add(self, *args) -> "void":
        r"""
        Update the box by a point.

        Parameters
        ----------
        thePnt: gp_XYZ

        Returns
        -------
        None
        Update the box by a point.

        Parameters
        ----------
        thePnt: gp_Pnt

        Returns
        -------
        None
        Update the box by another box.

        Parameters
        ----------
        theBox: Bnd_B3d

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3d_Add(self, *args)

    def Clear(self, *args) -> "void":
        r"""
        Reset the box data.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3d_Clear(self, *args)

    def CornerMax(self, *args) -> "gp_XYZ":
        r"""
        Query the upper corner: (center + hsize). you must make sure that the box is not void (see isvoid()), otherwise the method returns irrelevant result.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_B3d_CornerMax(self, *args)

    def CornerMin(self, *args) -> "gp_XYZ":
        r"""
        Query the lower corner: (center - hsize). you must make sure that the box is not void (see isvoid()), otherwise the method returns irrelevant result.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_B3d_CornerMin(self, *args)

    def Enlarge(self, *args) -> "void":
        r"""
        Extend the box by the absolute value of thediff.

        Parameters
        ----------
        theDiff: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3d_Enlarge(self, *args)

    def IsIn(self, *args) -> "Standard_Boolean":
        r"""
        Check that the box 'this' is inside the given box 'thebox'. returns true if 'this' box is fully inside 'thebox'.

        Parameters
        ----------
        theBox: Bnd_B3d

        Returns
        -------
        bool
        Check that the box 'this' is inside the given box 'thebox' transformed by 'thetrsf'. returns true if 'this' box is fully inside the transformed 'thebox'.

        Parameters
        ----------
        theBox: Bnd_B3d
        theTrsf: gp_Trsf

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B3d_IsIn(self, *args)

    def IsOut(self, *args) -> "Standard_Boolean":
        r"""
        Check the given point for the inclusion in the box. returns true if the point is outside.

        Parameters
        ----------
        thePnt: gp_XYZ

        Returns
        -------
        bool
        Check a sphere for the intersection with the current box. returns true if there is no intersection between boxes. if the parameter 'isspherehollow' is true, then the intersection is not reported for a box that is completely inside the sphere (otherwise this method would report an intersection).

        Parameters
        ----------
        theCenter: gp_XYZ
        theRadius: float
        isSphereHollow: bool,optional
        	default value is Standard_False

        Returns
        -------
        bool
        Check the given box for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theOtherBox: Bnd_B3d

        Returns
        -------
        bool
        Check the given box oriented by the given transformation for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theOtherBox: Bnd_B3d
        theTrsf: gp_Trsf

        Returns
        -------
        bool
        Check the given line for the intersection with the current box. returns true if there is no intersection. isray==true means intersection check with the positive half-line theoverthickness is the addition to the size of the current box (may be negative). if positive, it can be treated as the thickness of the line 'theline' or the radius of the cylinder along 'theline'.

        Parameters
        ----------
        theLine: gp_Ax1
        isRay: bool,optional
        	default value is Standard_False
        theOverthickness: float,optional
        	default value is 0.0

        Returns
        -------
        bool
        Check the given plane for the intersection with the current box. returns true if there is no intersection.

        Parameters
        ----------
        thePlane: gp_Ax3

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B3d_IsOut(self, *args)

    def IsVoid(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the box is void (non-initialized).

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B3d_IsVoid(self, *args)

    def Limit(self, *args) -> "Standard_Boolean":
        r"""
        Limit the box by the internals of theotherbox. returns true if the limitation takes place, otherwise false indicating that the boxes do not intersect.

        Parameters
        ----------
        theOtherBox: Bnd_B3d

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B3d_Limit(self, *args)

    def SetCenter(self, *args) -> "void":
        r"""
        Set the center coordinates.

        Parameters
        ----------
        theCenter: gp_XYZ

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3d_SetCenter(self, *args)

    def SetHSize(self, *args) -> "void":
        r"""
        Set the hsize (half-diagonal) coordinates. all components of thehsize must be non-negative.

        Parameters
        ----------
        theHSize: gp_XYZ

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3d_SetHSize(self, *args)

    def SquareExtent(self, *args) -> "Standard_Real":
        r"""
        Query the square diagonal. if the box is void (see method isvoid()) then a very big real value is returned.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_B3d_SquareExtent(self, *args)

    def Transformed(self, *args) -> "Bnd_B3d":
        r"""
        Transform the bounding box with the given transformation. the resulting box will be larger if thetrsf contains rotation.

        Parameters
        ----------
        theTrsf: gp_Trsf

        Returns
        -------
        Bnd_B3d

        """
        return _Bnd.Bnd_B3d_Transformed(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_B3d

# Register Bnd_B3d in _Bnd:
_Bnd.Bnd_B3d_swigregister(Bnd_B3d)

class Bnd_B3f(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.

        Parameters
        ----------
        theCenter: gp_XYZ
        theHSize: gp_XYZ

        Returns
        -------
        None

        """
        _Bnd.Bnd_B3f_swiginit(self, _Bnd.new_Bnd_B3f(*args))

    def Add(self, *args) -> "void":
        r"""
        Update the box by a point.

        Parameters
        ----------
        thePnt: gp_XYZ

        Returns
        -------
        None
        Update the box by a point.

        Parameters
        ----------
        thePnt: gp_Pnt

        Returns
        -------
        None
        Update the box by another box.

        Parameters
        ----------
        theBox: Bnd_B3f

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3f_Add(self, *args)

    def Clear(self, *args) -> "void":
        r"""
        Reset the box data.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3f_Clear(self, *args)

    def CornerMax(self, *args) -> "gp_XYZ":
        r"""
        Query the upper corner: (center + hsize). you must make sure that the box is not void (see isvoid()), otherwise the method returns irrelevant result.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_B3f_CornerMax(self, *args)

    def CornerMin(self, *args) -> "gp_XYZ":
        r"""
        Query the lower corner: (center - hsize). you must make sure that the box is not void (see isvoid()), otherwise the method returns irrelevant result.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_B3f_CornerMin(self, *args)

    def Enlarge(self, *args) -> "void":
        r"""
        Extend the box by the absolute value of thediff.

        Parameters
        ----------
        theDiff: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3f_Enlarge(self, *args)

    def IsIn(self, *args) -> "Standard_Boolean":
        r"""
        Check that the box 'this' is inside the given box 'thebox'. returns true if 'this' box is fully inside 'thebox'.

        Parameters
        ----------
        theBox: Bnd_B3f

        Returns
        -------
        bool
        Check that the box 'this' is inside the given box 'thebox' transformed by 'thetrsf'. returns true if 'this' box is fully inside the transformed 'thebox'.

        Parameters
        ----------
        theBox: Bnd_B3f
        theTrsf: gp_Trsf

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B3f_IsIn(self, *args)

    def IsOut(self, *args) -> "Standard_Boolean":
        r"""
        Check the given point for the inclusion in the box. returns true if the point is outside.

        Parameters
        ----------
        thePnt: gp_XYZ

        Returns
        -------
        bool
        Check a sphere for the intersection with the current box. returns true if there is no intersection between boxes. if the parameter 'isspherehollow' is true, then the intersection is not reported for a box that is completely inside the sphere (otherwise this method would report an intersection).

        Parameters
        ----------
        theCenter: gp_XYZ
        theRadius: float
        isSphereHollow: bool,optional
        	default value is Standard_False

        Returns
        -------
        bool
        Check the given box for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theOtherBox: Bnd_B3f

        Returns
        -------
        bool
        Check the given box oriented by the given transformation for the intersection with the current box. returns true if there is no intersection between boxes.

        Parameters
        ----------
        theOtherBox: Bnd_B3f
        theTrsf: gp_Trsf

        Returns
        -------
        bool
        Check the given line for the intersection with the current box. returns true if there is no intersection. isray==true means intersection check with the positive half-line theoverthickness is the addition to the size of the current box (may be negative). if positive, it can be treated as the thickness of the line 'theline' or the radius of the cylinder along 'theline'.

        Parameters
        ----------
        theLine: gp_Ax1
        isRay: bool,optional
        	default value is Standard_False
        theOverthickness: float,optional
        	default value is 0.0

        Returns
        -------
        bool
        Check the given plane for the intersection with the current box. returns true if there is no intersection.

        Parameters
        ----------
        thePlane: gp_Ax3

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B3f_IsOut(self, *args)

    def IsVoid(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the box is void (non-initialized).

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B3f_IsVoid(self, *args)

    def Limit(self, *args) -> "Standard_Boolean":
        r"""
        Limit the box by the internals of theotherbox. returns true if the limitation takes place, otherwise false indicating that the boxes do not intersect.

        Parameters
        ----------
        theOtherBox: Bnd_B3f

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_B3f_Limit(self, *args)

    def SetCenter(self, *args) -> "void":
        r"""
        Set the center coordinates.

        Parameters
        ----------
        theCenter: gp_XYZ

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3f_SetCenter(self, *args)

    def SetHSize(self, *args) -> "void":
        r"""
        Set the hsize (half-diagonal) coordinates. all components of thehsize must be non-negative.

        Parameters
        ----------
        theHSize: gp_XYZ

        Returns
        -------
        None

        """
        return _Bnd.Bnd_B3f_SetHSize(self, *args)

    def SquareExtent(self, *args) -> "Standard_Real":
        r"""
        Query the square diagonal. if the box is void (see method isvoid()) then a very big real value is returned.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_B3f_SquareExtent(self, *args)

    def Transformed(self, *args) -> "Bnd_B3f":
        r"""
        Transform the bounding box with the given transformation. the resulting box will be larger if thetrsf contains rotation.

        Parameters
        ----------
        theTrsf: gp_Trsf

        Returns
        -------
        Bnd_B3f

        """
        return _Bnd.Bnd_B3f_Transformed(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_B3f

# Register Bnd_B3f in _Bnd:
_Bnd.Bnd_B3f_swigregister(Bnd_B3f)

class Bnd_BoundSortBox(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"""
        Constructs an empty comparison algorithm for bounding boxes. the bounding boxes are then defined using the initialize function.

        Returns
        -------
        None

        """
        _Bnd.Bnd_BoundSortBox_swiginit(self, _Bnd.new_Bnd_BoundSortBox(*args))

    def Add(self, *args) -> "void":
        r"""
        Adds the bounding box thebox at position boxindex in the array of boxes to be sorted by this comparison algorithm. this function is used only in conjunction with the third syntax described in the synopsis of initialize. //! exceptions: //! - standard_outofrange if boxindex is not in the range [ 1,nbcomponents ] where nbcomponents is the maximum number of bounding boxes declared for this comparison algorithm at initialization. //! - standard_multiplydefined if a box already exists at position boxindex in the array of boxes to be sorted by this comparison algorithm.

        Parameters
        ----------
        theBox: Bnd_Box
        boxIndex: int

        Returns
        -------
        None

        """
        return _Bnd.Bnd_BoundSortBox_Add(self, *args)

    def Compare(self, *args) -> "TColStd_ListOfInteger const &":
        r"""
        Compares the bounding box thebox, with the set of bounding boxes to be sorted by this comparison algorithm, and returns the list of intersecting bounding boxes as a list of indexes on the array of bounding boxes used by this algorithm.

        Parameters
        ----------
        theBox: Bnd_Box

        Returns
        -------
        TColStd_ListOfInteger
        Compares the plane p with the set of bounding boxes to be sorted by this comparison algorithm, and returns the list of intersecting bounding boxes as a list of indexes on the array of bounding boxes used by this algorithm.

        Parameters
        ----------
        P: gp_Pln

        Returns
        -------
        TColStd_ListOfInteger

        """
        return _Bnd.Bnd_BoundSortBox_Compare(self, *args)

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

        Returns
        -------
        None

        """
        return _Bnd.Bnd_BoundSortBox_Destroy(self, *args)

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

        Returns
        -------
        None

        """
        return _Bnd.Bnd_BoundSortBox_Dump(self, *args)

    def Initialize(self, *args) -> "void":
        r"""
        Initializes this comparison algorithm with - the set of bounding boxes setofbox.

        Parameters
        ----------
        CompleteBox: Bnd_Box
        SetOfBox: Bnd_HArray1OfBox

        Returns
        -------
        None
        Initializes this comparison algorithm with - the set of bounding boxes setofbox, where completebox is given as the global bounding box of setofbox.

        Parameters
        ----------
        SetOfBox: Bnd_HArray1OfBox

        Returns
        -------
        None
        Initializes this comparison algorithm, giving it only - the maximum number nbcomponents of the bounding boxes to be managed. use the add function to define the array of bounding boxes to be sorted by this algorithm.

        Parameters
        ----------
        CompleteBox: Bnd_Box
        nbComponents: int

        Returns
        -------
        None

        """
        return _Bnd.Bnd_BoundSortBox_Initialize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_BoundSortBox

# Register Bnd_BoundSortBox in _Bnd:
_Bnd.Bnd_BoundSortBox_swigregister(Bnd_BoundSortBox)

class Bnd_BoundSortBox2d(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"""
        Constructs an empty comparison algorithm for 2d bounding boxes. the bounding boxes are then defined using the initialize function.

        Returns
        -------
        None

        """
        _Bnd.Bnd_BoundSortBox2d_swiginit(self, _Bnd.new_Bnd_BoundSortBox2d(*args))

    def Add(self, *args) -> "void":
        r"""
        Adds the 2d bounding box thebox at position boxindex in the array of boxes to be sorted by this comparison algorithm. this function is used only in conjunction with the third syntax described in the synopsis of initialize. exceptions - standard_outofrange if boxindex is not in the range [ 1,nbcomponents ] where nbcomponents is the maximum number of bounding boxes declared for this comparison algorithm at initialization. - standard_multiplydefined if a box still exists at position boxindex in the array of boxes to be sorted by this comparison algorithm.

        Parameters
        ----------
        theBox: Bnd_Box2d
        boxIndex: int

        Returns
        -------
        None

        """
        return _Bnd.Bnd_BoundSortBox2d_Add(self, *args)

    def Compare(self, *args) -> "TColStd_ListOfInteger const &":
        r"""
        Compares the 2d bounding box thebox with the set of bounding boxes to be sorted by this comparison algorithm, and returns the list of intersecting bounding boxes as a list of indexes on the array of bounding boxes used by this algorithm.

        Parameters
        ----------
        theBox: Bnd_Box2d

        Returns
        -------
        TColStd_ListOfInteger

        """
        return _Bnd.Bnd_BoundSortBox2d_Compare(self, *args)

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

        Returns
        -------
        None

        """
        return _Bnd.Bnd_BoundSortBox2d_Dump(self, *args)

    def Initialize(self, *args) -> "void":
        r"""
        Initializes this comparison algorithm with - the set of 2d bounding boxes setofbox.

        Parameters
        ----------
        CompleteBox: Bnd_Box2d
        SetOfBox: Bnd_HArray1OfBox2d

        Returns
        -------
        None
        Initializes this comparison algorithm with - the set of 2d bounding boxes setofbox, where completebox is given as the global bounding box of setofbox.

        Parameters
        ----------
        SetOfBox: Bnd_HArray1OfBox2d

        Returns
        -------
        None
        Initializes this comparison algorithm, giving it only - the maximum number nbcomponents, and - the global bounding box completebox, of the 2d bounding boxes to be managed. use the add function to define the array of bounding boxes to be sorted by this algorithm.

        Parameters
        ----------
        CompleteBox: Bnd_Box2d
        nbComponents: int

        Returns
        -------
        None

        """
        return _Bnd.Bnd_BoundSortBox2d_Initialize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_BoundSortBox2d

# Register Bnd_BoundSortBox2d in _Bnd:
_Bnd.Bnd_BoundSortBox2d_swigregister(Bnd_BoundSortBox2d)

class Bnd_Box(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 empty box. the constructed box is qualified void. its gap is null.

        Returns
        -------
        None
        Creates a bounding box, it contains: - minimum/maximum point of bouning box, the constructed box is qualified void. its gap is null.

        Parameters
        ----------
        theMin: gp_Pnt
        theMax: gp_Pnt

        Returns
        -------
        None

        """
        _Bnd.Bnd_Box_swiginit(self, _Bnd.new_Bnd_Box(*args))

    def Add(self, *args) -> "void":
        r"""
        Adds the box <other> to <self>.

        Parameters
        ----------
        Other: Bnd_Box

        Returns
        -------
        None
        Adds a pnt to the box.

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

        Returns
        -------
        None
        Extends <self> from the pnt <p> in the direction <d>.

        Parameters
        ----------
        P: gp_Pnt
        D: gp_Dir

        Returns
        -------
        None
        Extends the box in the given direction, i.e. adds an half-line. the box may become infinite in 1,2 or 3 directions.

        Parameters
        ----------
        D: gp_Dir

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_Add(self, *args)

    def CornerMax(self, *args) -> "gp_Pnt":
        r"""
        Returns the upper corner of this bounding box. the gap is included. if this bounding box is infinite (i.e. 'open'), returned values may be equal to +/- precision::infinite(). standard_constructionerror exception will be thrown if the box is void. if isvoid().

        Returns
        -------
        gp_Pnt

        """
        return _Bnd.Bnd_Box_CornerMax(self, *args)

    def CornerMin(self, *args) -> "gp_Pnt":
        r"""
        Returns the lower corner of this bounding box. the gap is included. if this bounding box is infinite (i.e. 'open'), returned values may be equal to +/- precision::infinite(). standard_constructionerror exception will be thrown if the box is void. if isvoid().

        Returns
        -------
        gp_Pnt

        """
        return _Bnd.Bnd_Box_CornerMin(self, *args)

    def Distance(self, *args) -> "Standard_Real":
        r"""
        Computes the minimum distance between two boxes.

        Parameters
        ----------
        Other: Bnd_Box

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Box_Distance(self, *args)

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

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_Dump(self, *args)

    def DumpJsonToString(self, depth: "int"=-1) -> "std::string":
        r"""DumpJsonToString(Bnd_Box self, int depth=-1) -> std::string"""
        return _Bnd.Bnd_Box_DumpJsonToString(self, depth)

    def Enlarge(self, *args) -> "void":
        r"""
        Enlarges the box with a tolerance value. (minvalues-abs(<tol>) and maxvalues+abs(<tol>)) this means that the minimum values of its x, y and z intervals of definition, when they are finite, are reduced by the absolute value of tol, while the maximum values are increased by the same amount.

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

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_Enlarge(self, *args)

    def FinitePart(self, *args) -> "Bnd_Box":
        r"""
        Returns a finite part of an infinite bounding box (returns self if this is already finite box). this can be a void box in case if its sides has been defined as infinite (open) without adding any finite points. warning! this method relies on open flags, the infinite points added using add() method will be returned as is.

        Returns
        -------
        Bnd_Box

        """
        return _Bnd.Bnd_Box_FinitePart(self, *args)

    def Get(self, *args) -> "void":
        r"""
        Returns the bounds of this bounding box. the gap is included. if this bounding box is infinite (i.e. 'open'), returned values may be equal to +/- precision::infinite(). standard_constructionerror exception will be thrown if the box is void. if isvoid().

        Parameters
        ----------

        Returns
        -------
        theXmin: float
        theYmin: float
        theZmin: float
        theXmax: float
        theYmax: float
        theZmax: float

        """
        return _Bnd.Bnd_Box_Get(self, *args)

    def GetGap(self, *args) -> "Standard_Real":
        r"""
        Returns the gap of this bounding box.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Box_GetGap(self, *args)

    def HasFinitePart(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this box has finite part.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_HasFinitePart(self, *args)

    def InitFromJson(self, *args) -> "Standard_Boolean":
        r"""
        Inits the content of me from the stream.

        Parameters
        ----------
        theSStream: Standard_SStream

        Returns
        -------
        theStreamPos: int

        """
        return _Bnd.Bnd_Box_InitFromJson(self, *args)

    def IsOpen(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box has at least one open direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsOpen(self, *args)

    def IsOpenXmax(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the xmax direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsOpenXmax(self, *args)

    def IsOpenXmin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the xmin direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsOpenXmin(self, *args)

    def IsOpenYmax(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the ymax direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsOpenYmax(self, *args)

    def IsOpenYmin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the ymix direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsOpenYmin(self, *args)

    def IsOpenZmax(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the zmax direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsOpenZmax(self, *args)

    def IsOpenZmin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the zmin direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsOpenZmin(self, *args)

    def IsOut(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the pnt is out the box.

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

        Returns
        -------
        bool
        Returns false if the line intersects the box.

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

        Returns
        -------
        bool
        Returns false if the plane intersects the box.

        Parameters
        ----------
        P: gp_Pln

        Returns
        -------
        bool
        Returns false if the <box> intersects or is inside <self>.

        Parameters
        ----------
        Other: Bnd_Box

        Returns
        -------
        bool
        Returns false if the transformed <box> intersects or is inside <self>.

        Parameters
        ----------
        Other: Bnd_Box
        T: gp_Trsf

        Returns
        -------
        bool
        Returns false if the transformed <box> intersects or is inside the transformed box <self>.

        Parameters
        ----------
        T1: gp_Trsf
        Other: Bnd_Box
        T2: gp_Trsf

        Returns
        -------
        bool
        Returns false if the flat band lying between two parallel lines represented by their reference points <p1>, <p2> and direction <d> intersects the box.

        Parameters
        ----------
        P1: gp_Pnt
        P2: gp_Pnt
        D: gp_Dir

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsOut(self, *args)

    def IsThin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if isxthin, isythin and iszthin are all true, i.e. if the box is thin in all three dimensions.

        Parameters
        ----------
        tol: float

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsThin(self, *args)

    def IsVoid(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is empty (void flag).

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsVoid(self, *args)

    def IsWhole(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is infinite in all 6 directions (wholespace flag).

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsWhole(self, *args)

    def IsXThin(self, *args) -> "Standard_Boolean":
        r"""
        True if xmax-xmin < tol.

        Parameters
        ----------
        tol: float

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsXThin(self, *args)

    def IsYThin(self, *args) -> "Standard_Boolean":
        r"""
        True if ymax-ymin < tol.

        Parameters
        ----------
        tol: float

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsYThin(self, *args)

    def IsZThin(self, *args) -> "Standard_Boolean":
        r"""
        True if zmax-zmin < tol.

        Parameters
        ----------
        tol: float

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box_IsZThin(self, *args)

    def OpenXmax(self, *args) -> "void":
        r"""
        The box will be infinitely long in the xmax direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_OpenXmax(self, *args)

    def OpenXmin(self, *args) -> "void":
        r"""
        The box will be infinitely long in the xmin direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_OpenXmin(self, *args)

    def OpenYmax(self, *args) -> "void":
        r"""
        The box will be infinitely long in the ymax direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_OpenYmax(self, *args)

    def OpenYmin(self, *args) -> "void":
        r"""
        The box will be infinitely long in the ymin direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_OpenYmin(self, *args)

    def OpenZmax(self, *args) -> "void":
        r"""
        The box will be infinitely long in the zmax direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_OpenZmax(self, *args)

    def OpenZmin(self, *args) -> "void":
        r"""
        The box will be infinitely long in the zmin direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_OpenZmin(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Sets this bounding box so that it bounds - the point p. this involves first setting this bounding box to be void and then adding the point p.

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

        Returns
        -------
        None
        Sets this bounding box so that it bounds the half-line defined by point p and direction d, i.e. all points m defined by m=p+u*d, where u is greater than or equal to 0, are inside the bounding volume. this involves first setting this box to be void and then adding the half-line.

        Parameters
        ----------
        P: gp_Pnt
        D: gp_Dir

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_Set(self, *args)

    def SetGap(self, *args) -> "void":
        r"""
        Set the gap of this bounding box to abs(tol).

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

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_SetGap(self, *args)

    def SetVoid(self, *args) -> "void":
        r"""
        Sets this bounding box so that it is empty. all points are outside a void box.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_SetVoid(self, *args)

    def SetWhole(self, *args) -> "void":
        r"""
        Sets this bounding box so that it covers the whole of 3d space. it is infinitely long in all directions.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_SetWhole(self, *args)

    def SquareExtent(self, *args) -> "Standard_Real":
        r"""
        Computes the squared diagonal of me.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Box_SquareExtent(self, *args)

    def Transformed(self, *args) -> "Bnd_Box":
        r"""
        Returns a bounding box which is the result of applying the transformation t to this bounding box. warning applying a geometric transformation (for example, a rotation) to a bounding box generally increases its dimensions. this is not optimal for algorithms which use it.

        Parameters
        ----------
        T: gp_Trsf

        Returns
        -------
        Bnd_Box

        """
        return _Bnd.Bnd_Box_Transformed(self, *args)

    def Update(self, *args) -> "void":
        r"""
        Enlarges this bounding box, if required, so that it contains at least: - interval [ axmin,axmax ] in the 'x direction', - interval [ aymin,aymax ] in the 'y direction', - interval [ azmin,azmax ] in the 'z direction';.

        Parameters
        ----------
        aXmin: float
        aYmin: float
        aZmin: float
        aXmax: float
        aYmax: float
        aZmax: float

        Returns
        -------
        None
        Adds a point of coordinates (x,y,z) to this bounding box.

        Parameters
        ----------
        X: float
        Y: float
        Z: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box_Update(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_Box

# Register Bnd_Box in _Bnd:
_Bnd.Bnd_Box_swigregister(Bnd_Box)

class Bnd_Box2d(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 empty 2d bounding box. the constructed box is qualified void. its gap is null.

        Returns
        -------
        None

        """
        _Bnd.Bnd_Box2d_swiginit(self, _Bnd.new_Bnd_Box2d(*args))

    def Add(self, *args) -> "void":
        r"""
        Adds the 2d box <other> to <self>.

        Parameters
        ----------
        Other: Bnd_Box2d

        Returns
        -------
        None
        Adds the 2d point.

        Parameters
        ----------
        thePnt: gp_Pnt2d

        Returns
        -------
        None
        Extends bounding box from thepnt in the direction thedir.

        Parameters
        ----------
        thePnt: gp_Pnt2d
        theDir: gp_Dir2d

        Returns
        -------
        None
        Extends the box in the given direction, i.e. adds a half-line. the box may become infinite in 1 or 2 directions.

        Parameters
        ----------
        D: gp_Dir2d

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_Add(self, *args)

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

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_Dump(self, *args)

    def Enlarge(self, *args) -> "void":
        r"""
        Enlarges the box with a tolerance value. this means that the minimum values of its x and y intervals of definition, when they are finite, are reduced by the absolute value of tol, while the maximum values are increased by the same amount.

        Parameters
        ----------
        theTol: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_Enlarge(self, *args)

    def Get(self, *args) -> "void":
        r"""
        Returns the bounds of this 2d bounding box. the gap is included. if this bounding box is infinite (i.e. 'open'), returned values may be equal to +/- precision::infinite(). if isvoid().

        Parameters
        ----------

        Returns
        -------
        aXmin: float
        aYmin: float
        aXmax: float
        aYmax: float

        """
        return _Bnd.Bnd_Box2d_Get(self, *args)

    def GetGap(self, *args) -> "Standard_Real":
        r"""
        Returns the gap of this 2d bounding box.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Box2d_GetGap(self, *args)

    def IsOpenXmax(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the xmax direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box2d_IsOpenXmax(self, *args)

    def IsOpenXmin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the xmin direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box2d_IsOpenXmin(self, *args)

    def IsOpenYmax(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the ymax direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box2d_IsOpenYmax(self, *args)

    def IsOpenYmin(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is open in the ymin direction.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box2d_IsOpenYmin(self, *args)

    def IsOut(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the 2d pnt <p> is out <self>.

        Parameters
        ----------
        P: gp_Pnt2d

        Returns
        -------
        bool
        Returns true if <box2d> is out <self>.

        Parameters
        ----------
        Other: Bnd_Box2d

        Returns
        -------
        bool
        Returns true if transformed <box2d> is out <self>.

        Parameters
        ----------
        theOther: Bnd_Box2d
        theTrsf: gp_Trsf2d

        Returns
        -------
        bool
        Compares a transformed bounding with a transformed bounding. the default implementation is to make a copy of <self> and <other>, to transform them and to test.

        Parameters
        ----------
        T1: gp_Trsf2d
        Other: Bnd_Box2d
        T2: gp_Trsf2d

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box2d_IsOut(self, *args)

    def IsVoid(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this 2d bounding box is empty (void flag).

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box2d_IsVoid(self, *args)

    def IsWhole(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if this bounding box is infinite in all 4 directions (whole space flag).

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Box2d_IsWhole(self, *args)

    def OpenXmax(self, *args) -> "void":
        r"""
        The box will be infinitely long in the xmax direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_OpenXmax(self, *args)

    def OpenXmin(self, *args) -> "void":
        r"""
        The box will be infinitely long in the xmin direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_OpenXmin(self, *args)

    def OpenYmax(self, *args) -> "void":
        r"""
        The box will be infinitely long in the ymax direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_OpenYmax(self, *args)

    def OpenYmin(self, *args) -> "void":
        r"""
        The box will be infinitely long in the ymin direction.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_OpenYmin(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Sets this 2d bounding box so that it bounds the point p. this involves first setting this bounding box to be void and then adding the point pthe rectangle bounds the point <p>.

        Parameters
        ----------
        thePnt: gp_Pnt2d

        Returns
        -------
        None
        Sets this 2d bounding box so that it bounds the half-line defined by point p and direction d, i.e. all points m defined by m=p+u*d, where u is greater than or equal to 0, are inside the bounding area. this involves first setting this 2d box to be void and then adding the half-line.

        Parameters
        ----------
        thePnt: gp_Pnt2d
        theDir: gp_Dir2d

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_Set(self, *args)

    def SetGap(self, *args) -> "void":
        r"""
        Set the gap of this 2d bounding box to abs(tol).

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

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_SetGap(self, *args)

    def SetVoid(self, *args) -> "void":
        r"""
        Sets this 2d bounding box so that it is empty. all points are outside a void box.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_SetVoid(self, *args)

    def SetWhole(self, *args) -> "void":
        r"""
        Sets this bounding box so that it covers the whole 2d space, i.e. it is infinite in all directions.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_SetWhole(self, *args)

    def SquareExtent(self, *args) -> "Standard_Real":
        r"""
        Computes the squared diagonal of me.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Box2d_SquareExtent(self, *args)

    def Transformed(self, *args) -> "Bnd_Box2d":
        r"""
        Returns a bounding box which is the result of applying the transformation t to this bounding box. warning applying a geometric transformation (for example, a rotation) to a bounding box generally increases its dimensions. this is not optimal for algorithms which use it.

        Parameters
        ----------
        T: gp_Trsf2d

        Returns
        -------
        Bnd_Box2d

        """
        return _Bnd.Bnd_Box2d_Transformed(self, *args)

    def Update(self, *args) -> "void":
        r"""
        Enlarges this 2d bounding box, if required, so that it contains at least: - interval [ axmin,axmax ] in the 'x direction', - interval [ aymin,aymax ] in the 'y direction'.

        Parameters
        ----------
        aXmin: float
        aYmin: float
        aXmax: float
        aYmax: float

        Returns
        -------
        None
        Adds a point of coordinates (x,y) to this bounding box.

        Parameters
        ----------
        X: float
        Y: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Box2d_Update(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_Box2d

# Register Bnd_Box2d in _Bnd:
_Bnd.Bnd_Box2d_swigregister(Bnd_Box2d)

class Bnd_OBB(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 taking all defining parameters.

        Parameters
        ----------
        theCenter: gp_Pnt
        theXDirection: gp_Dir
        theYDirection: gp_Dir
        theZDirection: gp_Dir
        theHXSize: float
        theHYSize: float
        theHZSize: float

        Returns
        -------
        None
        Constructor to create obb from aabb.

        Parameters
        ----------
        theBox: Bnd_Box

        Returns
        -------
        None

        """
        _Bnd.Bnd_OBB_swiginit(self, _Bnd.new_Bnd_OBB(*args))

    def Add(self, *args) -> "void":
        r"""
        Rebuilds this in order to include all previous objects (which it was created from) and theother.

        Parameters
        ----------
        theOther: Bnd_OBB

        Returns
        -------
        None
        Rebuilds this in order to include all previous objects (which it was created from) and thep.

        Parameters
        ----------
        theP: gp_Pnt

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_Add(self, *args)

    def Center(self, *args) -> "gp_XYZ const":
        r"""
        Returns the center of obb.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_OBB_Center(self, *args)

    def DumpJsonToString(self, depth: "int"=-1) -> "std::string":
        r"""DumpJsonToString(Bnd_OBB self, int depth=-1) -> std::string"""
        return _Bnd.Bnd_OBB_DumpJsonToString(self, depth)

    def Enlarge(self, *args) -> "void":
        r"""
        Enlarges the box with the given value.

        Parameters
        ----------
        theGapAdd: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_Enlarge(self, *args)

    def GetVertex(self, *args) -> "Standard_Boolean":
        r"""
        Returns the array of vertices in <this>. the local coordinate of the vertex depending on the index of the array are follow: index == 0: (-xhsize(), -yhsize(), -zhsize()) index == 1: ( xhsize(), -yhsize(), -zhsize()) index == 2: (-xhsize(), yhsize(), -zhsize()) index == 3: ( xhsize(), yhsize(), -zhsize()) index == 4: (-xhsize(), -yhsize(), zhsize()) index == 5: ( xhsize(), -yhsize(), zhsize()) index == 6: (-xhsize(), yhsize(), zhsize()) index == 7: ( xhsize(), yhsize(), zhsize()).

        Parameters
        ----------
        theP: gp_Pnt

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_OBB_GetVertex(self, *args)

    def IsAABox(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the box is axes aligned.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_OBB_IsAABox(self, *args)

    def IsCompletelyInside(self, *args) -> "Standard_Boolean":
        r"""
        Check if the theother is completely inside *this.

        Parameters
        ----------
        theOther: Bnd_OBB

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_OBB_IsCompletelyInside(self, *args)

    def IsOut(self, *args) -> "Standard_Boolean":
        r"""
        Check if the box do not interfere the other box.

        Parameters
        ----------
        theOther: Bnd_OBB

        Returns
        -------
        bool
        Check if the point is inside of <this>.

        Parameters
        ----------
        theP: gp_Pnt

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_OBB_IsOut(self, *args)

    def IsVoid(self, *args) -> "Standard_Boolean":
        r"""
        Checks if the box is empty.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_OBB_IsVoid(self, *args)

    def Position(self, *args) -> "gp_Ax3":
        r"""
        Returns the local coordinates system of this oriented box. so that applying it to axis-aligned box ((-xhsize, -yhsize, -zhsize), (xhsize, yhsize, zhsize)) will produce this oriented box. @code gp_trsf aloc; aloc.settransformation (theobb.position(), gp::xoy()); @endcode.

        Returns
        -------
        gp_Ax3

        """
        return _Bnd.Bnd_OBB_Position(self, *args)

    def ReBuild(self, *args) -> "void":
        r"""
        Creates new obb covering every point in thelistofpoints. tolerance of every such point is set by *thelistoftolerances array. if this array is not void (not null-pointer) then the resulted bnd_obb will be enlarged using tolerances of points lying on the box surface. <theisoptimal> flag defines the mode in which the obb will be built. constructing optimal box takes more time, but the resulting box is usually more tight. in case of construction of optimal obb more possible axes are checked.

        Parameters
        ----------
        theListOfPoints: TColgp_Array1OfPnt
        theListOfTolerances: TColStd_Array1OfReal *,optional
        	default value is 0
        theIsOptimal: bool,optional
        	default value is Standard_False

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_ReBuild(self, *args)

    def SetAABox(self, *args) -> "void":
        r"""
        Sets the flag for axes aligned box.

        Parameters
        ----------
        theFlag: bool

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_SetAABox(self, *args)

    def SetCenter(self, *args) -> "void":
        r"""
        Sets the center of obb.

        Parameters
        ----------
        theCenter: gp_Pnt

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_SetCenter(self, *args)

    def SetVoid(self, *args) -> "void":
        r"""
        Clears this box.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_SetVoid(self, *args)

    def SetXComponent(self, *args) -> "void":
        r"""
        Sets the x component of obb - direction and size.

        Parameters
        ----------
        theXDirection: gp_Dir
        theHXSize: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_SetXComponent(self, *args)

    def SetYComponent(self, *args) -> "void":
        r"""
        Sets the y component of obb - direction and size.

        Parameters
        ----------
        theYDirection: gp_Dir
        theHYSize: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_SetYComponent(self, *args)

    def SetZComponent(self, *args) -> "void":
        r"""
        Sets the z component of obb - direction and size.

        Parameters
        ----------
        theZDirection: gp_Dir
        theHZSize: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_OBB_SetZComponent(self, *args)

    def SquareExtent(self, *args) -> "Standard_Real":
        r"""
        Returns square diagonal of this box.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_OBB_SquareExtent(self, *args)

    def XDirection(self, *args) -> "gp_XYZ const":
        r"""
        Returns the x direction of obb.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_OBB_XDirection(self, *args)

    def XHSize(self, *args) -> "Standard_Real":
        r"""
        Returns the x dimension of obb.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_OBB_XHSize(self, *args)

    def YDirection(self, *args) -> "gp_XYZ const":
        r"""
        Returns the y direction of obb.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_OBB_YDirection(self, *args)

    def YHSize(self, *args) -> "Standard_Real":
        r"""
        Returns the y dimension of obb.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_OBB_YHSize(self, *args)

    def ZDirection(self, *args) -> "gp_XYZ const":
        r"""
        Returns the z direction of obb.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_OBB_ZDirection(self, *args)

    def ZHSize(self, *args) -> "Standard_Real":
        r"""
        Returns the z dimension of obb.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_OBB_ZHSize(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_OBB

# Register Bnd_OBB in _Bnd:
_Bnd.Bnd_OBB_swigregister(Bnd_OBB)

class Bnd_Range(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"""
        Default constructor. creates void range.

        Returns
        -------
        None
        Constructor. never creates void range.

        Parameters
        ----------
        theMin: float
        theMax: float

        Returns
        -------
        None

        """
        _Bnd.Bnd_Range_swiginit(self, _Bnd.new_Bnd_Range(*args))

    def Add(self, *args) -> "void":
        r"""
        Extends <this> to include theparameter.

        Parameters
        ----------
        theParameter: float

        Returns
        -------
        None
        Extends this range to include both ranges. @sa use method ::union() to check if two ranges overlap method merging.

        Parameters
        ----------
        theRange: Bnd_Range

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Range_Add(self, *args)

    def Common(self, *args) -> "void":
        r"""
        Replaces <this> with common-part of <this> and theother.

        Parameters
        ----------
        theOther: Bnd_Range

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Range_Common(self, *args)

    def Delta(self, *args) -> "Standard_Real":
        r"""
        Returns range value (max-min). returns negative value for void range.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Range_Delta(self, *args)

    def DumpJsonToString(self, depth: "int"=-1) -> "std::string":
        r"""DumpJsonToString(Bnd_Range self, int depth=-1) -> std::string"""
        return _Bnd.Bnd_Range_DumpJsonToString(self, depth)

    def Enlarge(self, *args) -> "void":
        r"""
        Extends this to the given value (in both side).

        Parameters
        ----------
        theDelta: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Range_Enlarge(self, *args)

    def GetBounds(self, *args) -> "Standard_Boolean":
        r"""
        Obtain first and last boundary of <this>. if <this> is void the method returns false.

        Parameters
        ----------

        Returns
        -------
        theFirstPar: float
        theLastPar: float

        """
        return _Bnd.Bnd_Range_GetBounds(self, *args)

    def GetIntermediatePoint(self, *args) -> "Standard_Boolean":
        r"""
        Obtain theparameter satisfied to the equation (theparameter-min)/(max-min) == thelambda. * thelambda == 0 --> min boundary will be returned; * thelambda == 0.5 --> middle point will be returned; * thelambda == 1 --> max boundary will be returned; * thelambda < 0 --> the value less than min will be returned; * thelambda > 1 --> the value greater than max will be returned. if <this> is void the method returns false.

        Parameters
        ----------
        theLambda: float

        Returns
        -------
        theParameter: float

        """
        return _Bnd.Bnd_Range_GetIntermediatePoint(self, *args)

    def GetMax(self, *args) -> "Standard_Boolean":
        r"""
        Obtain max boundary of <this>. if <this> is void the method returns false.

        Parameters
        ----------

        Returns
        -------
        thePar: float

        """
        return _Bnd.Bnd_Range_GetMax(self, *args)

    def GetMin(self, *args) -> "Standard_Boolean":
        r"""
        Obtain min boundary of <this>. if <this> is void the method returns false.

        Parameters
        ----------

        Returns
        -------
        thePar: float

        """
        return _Bnd.Bnd_Range_GetMin(self, *args)

    def IsIntersected(self, *args) -> "Standard_Integer":
        r"""
        Checks if <this> intersects values like theval+k*theperiod, where k is an integer number (k = 0, +/-1, +/-2, ...). returns: 0 - if <this> does not intersect the theval+k*theperiod. 1 - if <this> intersects theval+k*theperiod. 2 - if myfirst or/and mylast are equal to theval+k*theperiod. //! attention!!! if (myfirst == mylast) then this function will return only either 0 or 2.

        Parameters
        ----------
        theVal: float
        thePeriod: float,optional
        	default value is 0.0

        Returns
        -------
        int

        """
        return _Bnd.Bnd_Range_IsIntersected(self, *args)

    def IsOut(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the value is out of this range.

        Parameters
        ----------
        theValue: float

        Returns
        -------
        bool
        Returns true if the given range is out of this range.

        Parameters
        ----------
        theRange: Bnd_Range

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Range_IsOut(self, *args)

    def IsVoid(self, *args) -> "Standard_Boolean":
        r"""
        Is <this> initialized.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Range_IsVoid(self, *args)

    def SetVoid(self, *args) -> "void":
        r"""
        Initializes <this> by default parameters. makes <this> void.

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Range_SetVoid(self, *args)

    def Shift(self, *args) -> "void":
        r"""
        Shifts <*this> by theval.

        Parameters
        ----------
        theVal: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Range_Shift(self, *args)

    def Shifted(self, *args) -> "Bnd_Range":
        r"""
        Returns the copy of <*this> shifted by theval.

        Parameters
        ----------
        theVal: float

        Returns
        -------
        Bnd_Range

        """
        return _Bnd.Bnd_Range_Shifted(self, *args)

    def Split(self, *args) -> "void":
        r"""
        Splits <this> to several sub-ranges by theval value (e.g. range [3, 15] will be split by theval==5 to the two ranges: [3, 5] and [5, 15]). new ranges will be pushed to thelist (thelist must be initialized correctly before calling this method). if theperiod != 0.0 then at least one boundary of new ranges (if <*this> intersects theval+k*theperiod) will be equal to theval+theperiod*k, where k is an integer number (k = 0, +/-1, +/-2, ...). (let theperiod in above example be 4 ==> we will obtain four ranges: [3, 5], [5, 9], [9, 13] and [13, 15].

        Parameters
        ----------
        theVal: float
        theList: NCollection_List<Bnd_Range>
        thePeriod: float,optional
        	default value is 0.0

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Range_Split(self, *args)

    def TrimFrom(self, *args) -> "void":
        r"""
        Trims the first value in range by the given lower limit. marks range as void if the given lower value is greater than range max.

        Parameters
        ----------
        theValLower: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Range_TrimFrom(self, *args)

    def TrimTo(self, *args) -> "void":
        r"""
        Trim the last value in range by the given upper limit. marks range as void if the given upper value is smaller than range max.

        Parameters
        ----------
        theValUpper: float

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Range_TrimTo(self, *args)

    def Union(self, *args) -> "Standard_Boolean":
        r"""
        Joins *this and theother to one interval. replaces *this to the result. returns false if the operation cannot be done (e.g. input arguments are empty or separated). @sa use method ::add() to merge two ranges unconditionally.

        Parameters
        ----------
        theOther: Bnd_Range

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Range_Union(self, *args)

    def __eq_wrapper__(self, other: "Bnd_Range") -> "bool":
        r"""__eq_wrapper__(Bnd_Range self, Bnd_Range other) -> bool"""
        return _Bnd.Bnd_Range___eq_wrapper__(self, other)

    def __eq__(self, right):
        try:
            return self.__eq_wrapper__(right)
        except:
            return False


    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_Range

# Register Bnd_Range in _Bnd:
_Bnd.Bnd_Range_swigregister(Bnd_Range)

class Bnd_Sphere(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 of a definite sphere.

        Parameters
        ----------
        theCntr: gp_XYZ
        theRad: float
        theU: int
        theV: int

        Returns
        -------
        None

        """
        _Bnd.Bnd_Sphere_swiginit(self, _Bnd.new_Bnd_Sphere(*args))

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

        Parameters
        ----------
        theOther: Bnd_Sphere

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Sphere_Add(self, *args)

    def Center(self, *args) -> "gp_XYZ const":
        r"""
        Returns center of sphere object.

        Returns
        -------
        gp_XYZ

        """
        return _Bnd.Bnd_Sphere_Center(self, *args)

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

        Parameters
        ----------
        theNode: gp_XYZ

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Sphere_Distance(self, *args)

    def Distances(self, *args) -> "void":
        r"""
        Calculate and return minimal and maximal distance to sphere. note: this function is tightly optimized; any modifications may affect performance!.

        Parameters
        ----------
        theXYZ: gp_XYZ

        Returns
        -------
        theMin: float
        theMax: float

        """
        return _Bnd.Bnd_Sphere_Distances(self, *args)

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

        Parameters
        ----------
        theOther: Bnd_Sphere

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

        Parameters
        ----------
        thePnt: gp_XYZ

        Returns
        -------
        theMaxDist: float

        """
        return _Bnd.Bnd_Sphere_IsOut(self, *args)

    def IsValid(self, *args) -> "Standard_Boolean":
        r"""
        Returns validity status, indicating that this sphere corresponds to a real entity.

        Returns
        -------
        bool

        """
        return _Bnd.Bnd_Sphere_IsValid(self, *args)

    def Project(self, *args) -> "Standard_Boolean":
        r"""
        Projects a point on entity. returns true if success.

        Parameters
        ----------
        theNode: gp_XYZ
        theProjNode: gp_XYZ

        Returns
        -------
        theDist: float
        theInside: bool

        """
        return _Bnd.Bnd_Sphere_Project(self, *args)

    def Radius(self, *args) -> "Standard_Real":
        r"""
        Returns the radius value.

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Sphere_Radius(self, *args)

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

        Parameters
        ----------
        isValid: bool

        Returns
        -------
        None

        """
        return _Bnd.Bnd_Sphere_SetValid(self, *args)

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

        Parameters
        ----------
        theNode: gp_XYZ

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Sphere_SquareDistance(self, *args)

    def SquareDistances(self, *args) -> "void":
        r"""
        Calculate and return minimal and maximal distance to sphere. note: this function is tightly optimized; any modifications may affect performance!.

        Parameters
        ----------
        theXYZ: gp_XYZ

        Returns
        -------
        theMin: float
        theMax: float

        """
        return _Bnd.Bnd_Sphere_SquareDistances(self, *args)

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

        Returns
        -------
        float

        """
        return _Bnd.Bnd_Sphere_SquareExtent(self, *args)

    def U(self, *args) -> "Standard_Integer":
        r"""
        Returns the u parameter on shape.

        Returns
        -------
        int

        """
        return _Bnd.Bnd_Sphere_U(self, *args)

    def V(self, *args) -> "Standard_Integer":
        r"""
        Returns the v parameter on shape.

        Returns
        -------
        int

        """
        return _Bnd.Bnd_Sphere_V(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bnd.delete_Bnd_Sphere

# Register Bnd_Sphere in _Bnd:
_Bnd.Bnd_Sphere_swigregister(Bnd_Sphere)

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

    @staticmethod
    def Bnd2BVH(*args) -> "BVH_Box< Standard_Real,3 >":
        r"""
        Converts the given bnd_box2d to bvh_box.

        Parameters
        ----------
        theBox: Bnd_Box2d

        Returns
        -------
        BVH_Box<float, 2 >
        Converts the given bnd_box to bvh_box.

        Parameters
        ----------
        theBox: Bnd_Box

        Returns
        -------
        BVH_Box<float, 3 >

        """
        return _Bnd.Bnd_Tools_Bnd2BVH(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _Bnd.Bnd_Tools_swiginit(self, _Bnd.new_Bnd_Tools())
    __swig_destroy__ = _Bnd.delete_Bnd_Tools

# Register Bnd_Tools in _Bnd:
_Bnd.Bnd_Tools_swigregister(Bnd_Tools)

def Bnd_Tools_Bnd2BVH(*args) -> "BVH_Box< Standard_Real,3 >":
    r"""
    Converts the given bnd_box2d to bvh_box.

    Parameters
    ----------
    theBox: Bnd_Box2d

    Returns
    -------
    BVH_Box<float, 2 >
    Converts the given bnd_box to bvh_box.

    Parameters
    ----------
    theBox: Bnd_Box

    Returns
    -------
    BVH_Box<float, 3 >

    """
    return _Bnd.Bnd_Tools_Bnd2BVH(*args)

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

    def __init__(self, *args):
        _Bnd.Bnd_HArray1OfBox_swiginit(self, _Bnd.new_Bnd_HArray1OfBox(*args))

    def Array1(self) -> "Bnd_Array1OfBox const &":
        return _Bnd.Bnd_HArray1OfBox_Array1(self)

    def ChangeArray1(self) -> "Bnd_Array1OfBox &":
        return _Bnd.Bnd_HArray1OfBox_ChangeArray1(self)


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

    __swig_destroy__ = _Bnd.delete_Bnd_HArray1OfBox

# Register Bnd_HArray1OfBox in _Bnd:
_Bnd.Bnd_HArray1OfBox_swigregister(Bnd_HArray1OfBox)

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

    def __init__(self, *args):
        _Bnd.Bnd_HArray1OfSphere_swiginit(self, _Bnd.new_Bnd_HArray1OfSphere(*args))

    def Array1(self) -> "Bnd_Array1OfSphere const &":
        return _Bnd.Bnd_HArray1OfSphere_Array1(self)

    def ChangeArray1(self) -> "Bnd_Array1OfSphere &":
        return _Bnd.Bnd_HArray1OfSphere_ChangeArray1(self)


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

    __swig_destroy__ = _Bnd.delete_Bnd_HArray1OfSphere

# Register Bnd_HArray1OfSphere in _Bnd:
_Bnd.Bnd_HArray1OfSphere_swigregister(Bnd_HArray1OfSphere)

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

    def __init__(self, *args):
        _Bnd.Bnd_HArray1OfBox2d_swiginit(self, _Bnd.new_Bnd_HArray1OfBox2d(*args))

    def Array1(self) -> "Bnd_Array1OfBox2d const &":
        return _Bnd.Bnd_HArray1OfBox2d_Array1(self)

    def ChangeArray1(self) -> "Bnd_Array1OfBox2d &":
        return _Bnd.Bnd_HArray1OfBox2d_ChangeArray1(self)


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

    __swig_destroy__ = _Bnd.delete_Bnd_HArray1OfBox2d

# Register Bnd_HArray1OfBox2d in _Bnd:
_Bnd.Bnd_HArray1OfBox2d_swigregister(Bnd_HArray1OfBox2d)





