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

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

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _BiTgte.delete_SwigPyIterator

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _BiTgte:
_BiTgte.SwigPyIterator_swigregister(SwigPyIterator)

def _dumps_object(klass):
    """ Overwrite default string output for any wrapped object.
    By default, __repr__ method returns something like:
    <OCC.Core.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 'TopoDS_Shape *' at 0x02BB0758> >
    This is too much verbose.
    We prefer :
    <class 'gp_Pnt'>
    or
    <class 'TopoDS_Shape'>
    """
    klass_name = str(klass.__class__).split(".")[3].split("'")[0]
    repr_string = "<class '" + klass_name + "'"
# for TopoDS_Shape, we also look for the base type
    if klass_name == "TopoDS_Shape":
        if klass.IsNull():
            repr_string += ": Null>"
            return repr_string
        st = klass.ShapeType()
        types = {OCC.Core.TopAbs.TopAbs_VERTEX: "Vertex",
                 OCC.Core.TopAbs.TopAbs_SOLID: "Solid",
                 OCC.Core.TopAbs.TopAbs_EDGE: "Edge",
                 OCC.Core.TopAbs.TopAbs_FACE: "Face",
                 OCC.Core.TopAbs.TopAbs_SHELL: "Shell",
                 OCC.Core.TopAbs.TopAbs_WIRE: "Wire",
                 OCC.Core.TopAbs.TopAbs_COMPOUND: "Compound",
                 OCC.Core.TopAbs.TopAbs_COMPSOLID: "Compsolid"}
        repr_string += "; Type:%s" % types[st]        
    elif hasattr(klass, "IsNull"):
        if klass.IsNull():
            repr_string += "; Null"
    repr_string += ">"
    return repr_string


def process_exception(error, method_name, class_name):
    return _BiTgte.process_exception(error, method_name, class_name)

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

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.TopoDS
import OCC.Core.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.TopTools
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.Geom2d
import OCC.Core.Adaptor3d
import OCC.Core.Adaptor2d
import OCC.Core.math

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

BiTgte_FaceFace = _BiTgte.BiTgte_FaceFace
BiTgte_FaceEdge = _BiTgte.BiTgte_FaceEdge
BiTgte_FaceVertex = _BiTgte.BiTgte_FaceVertex
BiTgte_EdgeEdge = _BiTgte.BiTgte_EdgeEdge
BiTgte_EdgeVertex = _BiTgte.BiTgte_EdgeVertex
BiTgte_VertexVertex = _BiTgte.BiTgte_VertexVertex


class BiTgte_ContactType(IntEnum):
	BiTgte_FaceFace = 0
	BiTgte_FaceEdge = 1
	BiTgte_FaceVertex = 2
	BiTgte_EdgeEdge = 3
	BiTgte_EdgeVertex = 4
	BiTgte_VertexVertex = 5
BiTgte_FaceFace = BiTgte_ContactType.BiTgte_FaceFace
BiTgte_FaceEdge = BiTgte_ContactType.BiTgte_FaceEdge
BiTgte_FaceVertex = BiTgte_ContactType.BiTgte_FaceVertex
BiTgte_EdgeEdge = BiTgte_ContactType.BiTgte_EdgeEdge
BiTgte_EdgeVertex = BiTgte_ContactType.BiTgte_EdgeVertex
BiTgte_VertexVertex = BiTgte_ContactType.BiTgte_VertexVertex


def Handle_BiTgte_CurveOnEdge_Create():
    return _BiTgte.Handle_BiTgte_CurveOnEdge_Create()

def Handle_BiTgte_CurveOnEdge_DownCast(t):
    return _BiTgte.Handle_BiTgte_CurveOnEdge_DownCast(t)

def Handle_BiTgte_CurveOnEdge_IsNull(t):
    return _BiTgte.Handle_BiTgte_CurveOnEdge_IsNull(t)

def Handle_BiTgte_CurveOnVertex_Create():
    return _BiTgte.Handle_BiTgte_CurveOnVertex_Create()

def Handle_BiTgte_CurveOnVertex_DownCast(t):
    return _BiTgte.Handle_BiTgte_CurveOnVertex_DownCast(t)

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

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

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

        Parameters
        ----------
        S: TopoDS_Shape
        Radius: float
        Tol: float
        NUBS: bool

        Return
        -------
        None

        Description
        -----------
        <s>: shape to be rounded <radius>: radius of the fillet <tol>: tol3d used in approximations <nubs>: if true, generate only nubs surfaces, if false, generate analytical surfaces if possible.

        """
        _BiTgte.BiTgte_Blend_swiginit(self, _BiTgte.new_BiTgte_Blend(*args))

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

        Parameters
        ----------
        LC: TopTools_ListOfShape

        Return
        -------
        None

        Description
        -----------
        Set in <lc> all the center lines.

        """
        return _BiTgte.BiTgte_Blend_CenterLines(self, *args)

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

        Description
        -----------
        Clear all the fields.

        """
        return _BiTgte.BiTgte_Blend_Clear(self, *args)

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

        Description
        -----------
        Computes the center lines.

        """
        return _BiTgte.BiTgte_Blend_ComputeCenters(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        BiTgte_ContactType

        Description
        -----------
        Returns the type of contact.

        """
        return _BiTgte.BiTgte_Blend_ContactType(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        opencascade::handle<Geom_Curve>

        Description
        -----------
        Gives the 3d curve of surfacefillet(index) on supportshape1(index).

        """
        return _BiTgte.BiTgte_Blend_CurveOnShape1(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        opencascade::handle<Geom_Curve>

        Description
        -----------
        Gives the 3d curve of surfacefillet(index) on supportshape2(index).

        """
        return _BiTgte.BiTgte_Blend_CurveOnShape2(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        TopoDS_Face

        Description
        -----------
        Returns the surface of range index.

        Parameters
        ----------
        CenterLine: TopoDS_Shape

        Return
        -------
        TopoDS_Face

        Description
        -----------
        Returns the face generated by the centerline. <centerline> may be - an edge: generate a pipe. - a vertex: generate a sphere. warning: returns a null shape if <centerline> generates no surface.

        """
        return _BiTgte.BiTgte_Blend_Face(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        From: int
        To: int

        Description
        -----------
        Set in <from>,<to> the indices of the faces of the branche <index>. //! i.e: branche<index> = face(from) + face(from+1) + ..+ face(to).

        """
        return _BiTgte.BiTgte_Blend_IndicesOfBranche(self, *args)

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

        Parameters
        ----------
        S: TopoDS_Shape
        Radius: float
        Tol: float
        NUBS: bool

        Return
        -------
        None

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

        """
        return _BiTgte.BiTgte_Blend_Init(self, *args)

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

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

        """
        return _BiTgte.BiTgte_Blend_IsDone(self, *args)

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

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

        """
        return _BiTgte.BiTgte_Blend_NbBranches(self, *args)

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

        Description
        -----------
        Returns the number of generated surfaces.

        """
        return _BiTgte.BiTgte_Blend_NbSurfaces(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        opencascade::handle<Geom2d_Curve>

        Description
        -----------
        Gives the pcurve associated to curveonshape1(index) on the fillet.

        """
        return _BiTgte.BiTgte_Blend_PCurve1OnFillet(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        opencascade::handle<Geom2d_Curve>

        Description
        -----------
        Gives the pcurve associated to curveonshape2(index) on the fillet.

        """
        return _BiTgte.BiTgte_Blend_PCurve2OnFillet(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        opencascade::handle<Geom2d_Curve>

        Description
        -----------
        Gives the pcurve associated to curvonshape1(index) on the support face warning: returns a null handle if supportshape1 is not a face.

        """
        return _BiTgte.BiTgte_Blend_PCurveOnFace1(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        opencascade::handle<Geom2d_Curve>

        Description
        -----------
        Gives the pcurve associated to curveonshape2(index) on the support face warning: returns a null handle if supportshape2 is not a face.

        """
        return _BiTgte.BiTgte_Blend_PCurveOnFace2(self, *args)

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

        Parameters
        ----------
        BuildShape: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Compute the generated surfaces. if <buildshape> is true, compute the resulting shape. if false, only the blending surfaces are computed.

        """
        return _BiTgte.BiTgte_Blend_Perform(self, *args)

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

        Parameters
        ----------
        Edge: TopoDS_Edge

        Return
        -------
        None

        Description
        -----------
        Set an edge of <myshape> to be rounded.

        """
        return _BiTgte.BiTgte_Blend_SetEdge(self, *args)

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

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

        Return
        -------
        None

        Description
        -----------
        Set two faces of <myshape> on which the sphere must roll.

        """
        return _BiTgte.BiTgte_Blend_SetFaces(self, *args)

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

        Parameters
        ----------
        Face: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        Set a face on which the fillet must stop.

        """
        return _BiTgte.BiTgte_Blend_SetStoppingFace(self, *args)

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

        Description
        -----------
        Returns the result.

        """
        return _BiTgte.BiTgte_Blend_Shape(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        TopoDS_Shape

        Description
        -----------
        Gives the first support shape relative to surfacefillet(index);.

        """
        return _BiTgte.BiTgte_Blend_SupportShape1(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        TopoDS_Shape

        Description
        -----------
        Gives the second support shape relative to surfacefillet(index);.

        """
        return _BiTgte.BiTgte_Blend_SupportShape2(self, *args)

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

        Parameters
        ----------
        Index: int

        Return
        -------
        opencascade::handle<Geom_Surface>

        Description
        -----------
        Returns the surface of range index.

        Parameters
        ----------
        CenterLine: TopoDS_Shape

        Return
        -------
        opencascade::handle<Geom_Surface>

        Description
        -----------
        Returns the surface generated by the centerline. <centerline> may be - an edge: generate a pipe. - a vertex: generate a sphere. warning: returns a null handle if <centerline> generates no surface.

        """
        return _BiTgte.BiTgte_Blend_Surface(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BiTgte.delete_BiTgte_Blend

# Register BiTgte_Blend in _BiTgte:
_BiTgte.BiTgte_Blend_swigregister(BiTgte_Blend)
class BiTgte_CurveOnEdge(OCC.Core.Adaptor3d.Adaptor3d_Curve):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

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

        Parameters
        ----------
        EonF: TopoDS_Edge
        Edge: TopoDS_Edge

        Return
        -------
        None

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

        """
        _BiTgte.BiTgte_CurveOnEdge_swiginit(self, _BiTgte.new_BiTgte_CurveOnEdge(*args))

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

        Parameters
        ----------
        EonF: TopoDS_Edge
        Edge: TopoDS_Edge

        Return
        -------
        None

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

        """
        return _BiTgte.BiTgte_CurveOnEdge_Init(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _BiTgte.delete_BiTgte_CurveOnEdge

# Register BiTgte_CurveOnEdge in _BiTgte:
_BiTgte.BiTgte_CurveOnEdge_swigregister(BiTgte_CurveOnEdge)
class BiTgte_CurveOnVertex(OCC.Core.Adaptor3d.Adaptor3d_Curve):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

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

        Parameters
        ----------
        EonF: TopoDS_Edge
        V: TopoDS_Vertex

        Return
        -------
        None

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

        """
        _BiTgte.BiTgte_CurveOnVertex_swiginit(self, _BiTgte.new_BiTgte_CurveOnVertex(*args))

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

        Parameters
        ----------
        EonF: TopoDS_Edge
        V: TopoDS_Vertex

        Return
        -------
        None

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

        """
        return _BiTgte.BiTgte_CurveOnVertex_Init(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _BiTgte.delete_BiTgte_CurveOnVertex

# Register BiTgte_CurveOnVertex in _BiTgte:
_BiTgte.BiTgte_CurveOnVertex_swigregister(BiTgte_CurveOnVertex)



