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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _Bisector:
_Bisector.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 _Bisector.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.Geom2d
import OCC.Core.gp
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.math
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.IntRes2d

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




def Handle_Bisector_Curve_Create() -> "opencascade::handle< Bisector_Curve >":
    return _Bisector.Handle_Bisector_Curve_Create()

def Handle_Bisector_Curve_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Bisector_Curve >":
    return _Bisector.Handle_Bisector_Curve_DownCast(t)

def Handle_Bisector_Curve_IsNull(t: "opencascade::handle< Bisector_Curve > const &") -> "bool":
    return _Bisector.Handle_Bisector_Curve_IsNull(t)

def Handle_Bisector_BisecAna_Create() -> "opencascade::handle< Bisector_BisecAna >":
    return _Bisector.Handle_Bisector_BisecAna_Create()

def Handle_Bisector_BisecAna_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Bisector_BisecAna >":
    return _Bisector.Handle_Bisector_BisecAna_DownCast(t)

def Handle_Bisector_BisecAna_IsNull(t: "opencascade::handle< Bisector_BisecAna > const &") -> "bool":
    return _Bisector.Handle_Bisector_BisecAna_IsNull(t)

def Handle_Bisector_BisecCC_Create() -> "opencascade::handle< Bisector_BisecCC >":
    return _Bisector.Handle_Bisector_BisecCC_Create()

def Handle_Bisector_BisecCC_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Bisector_BisecCC >":
    return _Bisector.Handle_Bisector_BisecCC_DownCast(t)

def Handle_Bisector_BisecCC_IsNull(t: "opencascade::handle< Bisector_BisecCC > const &") -> "bool":
    return _Bisector.Handle_Bisector_BisecCC_IsNull(t)

def Handle_Bisector_BisecPC_Create() -> "opencascade::handle< Bisector_BisecPC >":
    return _Bisector.Handle_Bisector_BisecPC_Create()

def Handle_Bisector_BisecPC_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Bisector_BisecPC >":
    return _Bisector.Handle_Bisector_BisecPC_DownCast(t)

def Handle_Bisector_BisecPC_IsNull(t: "opencascade::handle< Bisector_BisecPC > const &") -> "bool":
    return _Bisector.Handle_Bisector_BisecPC_IsNull(t)
class bisector(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def IsConvex(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        Cu: Geom2d_Curve
        Sign: float

        Returns
        -------
        bool

        """
        return _Bisector.bisector_IsConvex(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _Bisector.bisector_swiginit(self, _Bisector.new_bisector())
    __swig_destroy__ = _Bisector.delete_bisector

# Register bisector in _Bisector:
_Bisector.bisector_swigregister(bisector)

def bisector_IsConvex(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

    Parameters
    ----------
    Cu: Geom2d_Curve
    Sign: float

    Returns
    -------
    bool

    """
    return _Bisector.bisector_IsConvex(*args)

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

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        _Bisector.Bisector_Bisec_swiginit(self, _Bisector.new_Bisector_Bisec(*args))

    def ChangeValue(self, *args) -> "opencascade::handle< Geom2d_TrimmedCurve > const &":
        r"""
        Returns the curve of <self>.

        Returns
        -------
        opencascade::handle<Geom2d_TrimmedCurve>

        """
        return _Bisector.Bisector_Bisec_ChangeValue(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Performs the bisecting line between the curves <cu1> and <cu2>. <oncurve> is true if the point <p> is common to <cu1> and <cu2>.

        Parameters
        ----------
        Cu1: Geom2d_Curve
        Cu2: Geom2d_Curve
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        Sense: float
        ajointype: GeomAbs_JoinType
        Tolerance: float
        oncurve: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        Performs the bisecting line between the curve <cu1> and the point <pnt>. <oncurve> is true if the point <p> is the point <pnt>.

        Parameters
        ----------
        Cu: Geom2d_Curve
        Pnt: Geom2d_Point
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        Sense: float
        Tolerance: float
        oncurve: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        Performs the bisecting line between the curve <cu> and the point <pnt>. <oncurve> is true if the point <p> is the point <pnt>.

        Parameters
        ----------
        Pnt: Geom2d_Point
        Cu: Geom2d_Curve
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        Sense: float
        Tolerance: float
        oncurve: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        Performs the bisecting line between the two points <pnt1> and <pnt2>.

        Parameters
        ----------
        Pnt1: Geom2d_Point
        Pnt2: Geom2d_Point
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        Sense: float
        Tolerance: float,optional
        	default value is 0.0
        oncurve: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        return _Bisector.Bisector_Bisec_Perform(self, *args)

    def Value(self, *args) -> "opencascade::handle< Geom2d_TrimmedCurve > const &":
        r"""
        Returns the curve of <self>.

        Returns
        -------
        opencascade::handle<Geom2d_TrimmedCurve>

        """
        return _Bisector.Bisector_Bisec_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_Bisec

# Register Bisector_Bisec in _Bisector:
_Bisector.Bisector_Bisec_swigregister(Bisector_Bisec)

class Bisector_Curve(OCC.Core.Geom2d.Geom2d_Curve):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def IntervalFirst(self, *args) -> "Standard_Real":
        r"""
        Returns the first parameter of the current interval.

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

        Returns
        -------
        float

        """
        return _Bisector.Bisector_Curve_IntervalFirst(self, *args)

    def IntervalLast(self, *args) -> "Standard_Real":
        r"""
        Returns the last parameter of the current interval.

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

        Returns
        -------
        float

        """
        return _Bisector.Bisector_Curve_IntervalLast(self, *args)

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

        Returns
        -------
        bool

        """
        return _Bisector.Bisector_Curve_IsExtendAtEnd(self, *args)

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

        Returns
        -------
        bool

        """
        return _Bisector.Bisector_Curve_IsExtendAtStart(self, *args)

    def NbIntervals(self, *args) -> "Standard_Integer":
        r"""
        If necessary, breaks the curve in intervals of continuity <c1>. and returns the number of intervals.

        Returns
        -------
        int

        """
        return _Bisector.Bisector_Curve_NbIntervals(self, *args)

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

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

        Returns
        -------
        float

        """
        return _Bisector.Bisector_Curve_Parameter(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_Curve

# Register Bisector_Curve in _Bisector:
_Bisector.Bisector_Curve_swigregister(Bisector_Curve)

class Bisector_FunctionH(OCC.Core.math.math_FunctionWithDerivative):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Parameters
        ----------
        C2: Geom2d_Curve
        P1: gp_Pnt2d
        T1: gp_Vec2d

        Returns
        -------
        None

        """
        _Bisector.Bisector_FunctionH_swiginit(self, _Bisector.new_Bisector_FunctionH(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_FunctionH

# Register Bisector_FunctionH in _Bisector:
_Bisector.Bisector_FunctionH_swigregister(Bisector_FunctionH)

class Bisector_FunctionInter(OCC.Core.math.math_FunctionWithDerivative):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: Geom2d_Curve
        Bis1: Bisector_Curve
        Bis2: Bisector_Curve

        Returns
        -------
        None

        """
        _Bisector.Bisector_FunctionInter_swiginit(self, _Bisector.new_Bisector_FunctionInter(*args))

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

        Parameters
        ----------
        C: Geom2d_Curve
        Bis1: Bisector_Curve
        Bis2: Bisector_Curve

        Returns
        -------
        None

        """
        return _Bisector.Bisector_FunctionInter_Perform(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_FunctionInter

# Register Bisector_FunctionInter in _Bisector:
_Bisector.Bisector_FunctionInter_swigregister(Bisector_FunctionInter)

class Bisector_Inter(OCC.Core.IntRes2d.IntRes2d_Intersection):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        Intersection between 2 curves. c1 separates the element a and b. c2 separates the elements c et d. if b an c have the same geometry. <comunelement> has to be true. it permits an optimiztion of the computation.

        Parameters
        ----------
        C1: Bisector_Bisec
        D1: IntRes2d_Domain
        C2: Bisector_Bisec
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float
        ComunElement: bool

        Returns
        -------
        None

        """
        _Bisector.Bisector_Inter_swiginit(self, _Bisector.new_Bisector_Inter(*args))

    def Perform(self, *args) -> "void":
        r"""
        Intersection between 2 curves. c1 separates the element a and b. c2 separates the elements c et d. if b an c have the same geometry. <comunelement> has to be true. it permits an optimiztion of the computation.

        Parameters
        ----------
        C1: Bisector_Bisec
        D1: IntRes2d_Domain
        C2: Bisector_Bisec
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float
        ComunElement: bool

        Returns
        -------
        None

        """
        return _Bisector.Bisector_Inter_Perform(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_Inter

# Register Bisector_Inter in _Bisector:
_Bisector.Bisector_Inter_swigregister(Bisector_Inter)

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

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        Param1: float
        Param2: float
        ParamBis: float
        Distance: float
        Point: gp_Pnt2d

        Returns
        -------
        None

        """
        _Bisector.Bisector_PointOnBis_swiginit(self, _Bisector.new_Bisector_PointOnBis(*args))

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

        Parameters
        ----------
        Distance: float

        Returns
        -------
        None
        No available documentation.

        Returns
        -------
        float

        """
        return _Bisector.Bisector_PointOnBis_Distance(self, *args)

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

        Returns
        -------
        None

        """
        return _Bisector.Bisector_PointOnBis_Dump(self, *args)

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

        Parameters
        ----------
        Infinite: bool

        Returns
        -------
        None
        No available documentation.

        Returns
        -------
        bool

        """
        return _Bisector.Bisector_PointOnBis_IsInfinite(self, *args)

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

        Parameters
        ----------
        Param: float

        Returns
        -------
        None
        No available documentation.

        Returns
        -------
        float

        """
        return _Bisector.Bisector_PointOnBis_ParamOnBis(self, *args)

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

        Parameters
        ----------
        Param: float

        Returns
        -------
        None
        No available documentation.

        Returns
        -------
        float

        """
        return _Bisector.Bisector_PointOnBis_ParamOnC1(self, *args)

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

        Parameters
        ----------
        Param: float

        Returns
        -------
        None
        No available documentation.

        Returns
        -------
        float

        """
        return _Bisector.Bisector_PointOnBis_ParamOnC2(self, *args)

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

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

        Returns
        -------
        None
        No available documentation.

        Returns
        -------
        gp_Pnt2d

        """
        return _Bisector.Bisector_PointOnBis_Point(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_PointOnBis

# Register Bisector_PointOnBis in _Bisector:
_Bisector.Bisector_PointOnBis_swigregister(Bisector_PointOnBis)

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

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        _Bisector.Bisector_PolyBis_swiginit(self, _Bisector.new_Bisector_PolyBis(*args))

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

        Parameters
        ----------
        Point: Bisector_PointOnBis

        Returns
        -------
        None

        """
        return _Bisector.Bisector_PolyBis_Append(self, *args)

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

        Returns
        -------
        Bisector_PointOnBis

        """
        return _Bisector.Bisector_PolyBis_First(self, *args)

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

        Parameters
        ----------
        U: float

        Returns
        -------
        int

        """
        return _Bisector.Bisector_PolyBis_Interval(self, *args)

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

        Returns
        -------
        bool

        """
        return _Bisector.Bisector_PolyBis_IsEmpty(self, *args)

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

        Returns
        -------
        Bisector_PointOnBis

        """
        return _Bisector.Bisector_PolyBis_Last(self, *args)

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

        Returns
        -------
        int

        """
        return _Bisector.Bisector_PolyBis_Length(self, *args)

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

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

        Returns
        -------
        None

        """
        return _Bisector.Bisector_PolyBis_Transform(self, *args)

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

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

        Returns
        -------
        Bisector_PointOnBis

        """
        return _Bisector.Bisector_PolyBis_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_PolyBis

# Register Bisector_PolyBis in _Bisector:
_Bisector.Bisector_PolyBis_swigregister(Bisector_PolyBis)

class Bisector_BisecAna(Bisector_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"""
        No available documentation.

        Returns
        -------
        None

        """
        _Bisector.Bisector_BisecAna_swiginit(self, _Bisector.new_Bisector_BisecAna(*args))

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

        Parameters
        ----------
        Deep: int,optional
        	default value is 0
        Offset: int,optional
        	default value is 0

        Returns
        -------
        None

        """
        return _Bisector.Bisector_BisecAna_Dump(self, *args)

    def Geom2dCurve(self, *args) -> "opencascade::handle< Geom2d_Curve >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Geom2d_Curve>

        """
        return _Bisector.Bisector_BisecAna_Geom2dCurve(self, *args)

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

        Parameters
        ----------
        bisector: Geom2d_TrimmedCurve

        Returns
        -------
        None

        """
        return _Bisector.Bisector_BisecAna_Init(self, *args)

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

        Returns
        -------
        float

        """
        return _Bisector.Bisector_BisecAna_ParameterOfEndPoint(self, *args)

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

        Returns
        -------
        float

        """
        return _Bisector.Bisector_BisecAna_ParameterOfStartPoint(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Performs the bisecting line between the curves <cu1> and <cu2>. <oncurve> is true if the point <p> is common to <cu1> and <cu2>.

        Parameters
        ----------
        Cu1: Geom2d_Curve
        Cu2: Geom2d_Curve
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        Sense: float
        jointype: GeomAbs_JoinType
        Tolerance: float
        oncurve: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        Performs the bisecting line between the curve <cu1> and the point <pnt>. <oncurve> is true if the point <p> is the point <pnt>.

        Parameters
        ----------
        Cu: Geom2d_Curve
        Pnt: Geom2d_Point
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        Sense: float
        Tolerance: float
        oncurve: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        Performs the bisecting line between the curve <cu> and the point <pnt>. <oncurve> is true if the point <p> is the point <pnt>.

        Parameters
        ----------
        Pnt: Geom2d_Point
        Cu: Geom2d_Curve
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        Sense: float
        Tolerance: float
        oncurve: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        Performs the bisecting line between the two points <pnt1> and <pnt2>.

        Parameters
        ----------
        Pnt1: Geom2d_Point
        Pnt2: Geom2d_Point
        P: gp_Pnt2d
        V1: gp_Vec2d
        V2: gp_Vec2d
        Sense: float
        Tolerance: float,optional
        	default value is 0.0
        oncurve: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        return _Bisector.Bisector_BisecAna_Perform(self, *args)

    def SetTrim(self, *args) -> "void":
        r"""
        Trim <self> by a domain defined by the curve <cu>. this domain is the set of the points which are nearest from <cu> than the extremitis of <cu>.

        Parameters
        ----------
        Cu: Geom2d_Curve

        Returns
        -------
        None
        Trim <self> by a domain defined by uf and ul.

        Parameters
        ----------
        uf: float
        ul: float

        Returns
        -------
        None

        """
        return _Bisector.Bisector_BisecAna_SetTrim(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_BisecAna

# Register Bisector_BisecAna in _Bisector:
_Bisector.Bisector_BisecAna_swigregister(Bisector_BisecAna)

class Bisector_BisecCC(Bisector_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"""
        No available documentation.

        Returns
        -------
        None
        Constructs the bisector between the curves <cu1> and <cu2>. //! <side1> (resp <side2>) = 1 if the bisector curve is on the left of <cu1> (resp <cu2>) else <side1> (resp <side2>) = -1. //! the bisector is trimmed by the point <origin>. <distmax> is used to trim the bisector.the distance between the points of the bisector and <cu> is smaller than <distmax>.

        Parameters
        ----------
        Cu1: Geom2d_Curve
        Cu2: Geom2d_Curve
        Side1: float
        Side2: float
        Origin: gp_Pnt2d
        DistMax: float,optional
        	default value is 500

        Returns
        -------
        None

        """
        _Bisector.Bisector_BisecCC_swiginit(self, _Bisector.new_Bisector_BisecCC(*args))

    def ChangeGuide(self, *args) -> "opencascade::handle< Bisector_BisecCC >":
        r"""
        The parameter on <self> is linked to the parameter on the first curve. this method creates the same bisector where the curves are inversed.

        Returns
        -------
        opencascade::handle<Bisector_BisecCC>

        """
        return _Bisector.Bisector_BisecCC_ChangeGuide(self, *args)

    def Curve(self, *args) -> "opencascade::handle< Geom2d_Curve >":
        r"""
        No available documentation.

        Parameters
        ----------
        IndCurve: int

        Returns
        -------
        opencascade::handle<Geom2d_Curve>

        """
        return _Bisector.Bisector_BisecCC_Curve(self, *args)

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

        Parameters
        ----------
        Deep: int,optional
        	default value is 0
        Offset: int,optional
        	default value is 0

        Returns
        -------
        None

        """
        return _Bisector.Bisector_BisecCC_Dump(self, *args)

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

        Returns
        -------
        GeomAbs_Shape

        """
        return _Bisector.Bisector_BisecCC_IntervalContinuity(self, *args)

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

        Returns
        -------
        bool

        """
        return _Bisector.Bisector_BisecCC_IsEmpty(self, *args)

    def LinkBisCurve(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter on the curve1 of the projection of the point of parameter u on <self>.

        Parameters
        ----------
        U: float

        Returns
        -------
        float

        """
        return _Bisector.Bisector_BisecCC_LinkBisCurve(self, *args)

    def LinkCurveBis(self, *args) -> "Standard_Real":
        r"""
        Returns the reciproque of linkbiscurve.

        Parameters
        ----------
        U: float

        Returns
        -------
        float

        """
        return _Bisector.Bisector_BisecCC_LinkCurveBis(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Computes the bisector between the curves <cu1> and <cu2>. //! <side1> (resp <side2>) = 1 if the bisector curve is on the left of <cu1> (resp <cu2>) else <side1> (resp <side2>) = -1. //! the bisector is trimmed by the point <origin>. //! <distmax> is used to trim the bisector.the distance between the points of the bisector and <cu> is smaller than <distmax>.

        Parameters
        ----------
        Cu1: Geom2d_Curve
        Cu2: Geom2d_Curve
        Side1: float
        Side2: float
        Origin: gp_Pnt2d
        DistMax: float,optional
        	default value is 500

        Returns
        -------
        None

        """
        return _Bisector.Bisector_BisecCC_Perform(self, *args)

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

        Returns
        -------
        Bisector_PolyBis

        """
        return _Bisector.Bisector_BisecCC_Polygon(self, *args)

    def ValueAndDist(self, *args) -> "gp_Pnt2d":
        r"""
        Returns the point of parameter u. computes the distance between the current point and the two curves i separate. computes the parameters on each curve corresponding of the projection of the current point.

        Parameters
        ----------
        U: float

        Returns
        -------
        U1: float
        U2: float
        Distance: float

        """
        return _Bisector.Bisector_BisecCC_ValueAndDist(self, *args)

    def ValueByInt(self, *args) -> "gp_Pnt2d":
        r"""
        Returns the point of parameter u. computes the distance between the current point and the two curves i separate. computes the parameters on each curve corresponding of the projection of the current point.

        Parameters
        ----------
        U: float

        Returns
        -------
        U1: float
        U2: float
        Distance: float

        """
        return _Bisector.Bisector_BisecCC_ValueByInt(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_BisecCC

# Register Bisector_BisecCC in _Bisector:
_Bisector.Bisector_BisecCC_swigregister(Bisector_BisecCC)

class Bisector_BisecPC(Bisector_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"""
        No available documentation.

        Returns
        -------
        None
        Constructs the bisector between the point <p> and the curve <cu>. <side> = 1. if the bisector curve is on the left of <cu> else <side> = -1. <distmax> is used to trim the bisector.the distance between the points of the bisector and <cu> is smaller than <distmax>.

        Parameters
        ----------
        Cu: Geom2d_Curve
        P: gp_Pnt2d
        Side: float
        DistMax: float,optional
        	default value is 500

        Returns
        -------
        None
        Constructs the bisector between the point <p> and the curve <cu> trimmed by <umin> and <umax> <side> = 1. if the bisector curve is on the left of <cu> else <side> = -1. warning: the bisector is supposed all over defined between <umin> and <umax>.

        Parameters
        ----------
        Cu: Geom2d_Curve
        P: gp_Pnt2d
        Side: float
        UMin: float
        UMax: float

        Returns
        -------
        None

        """
        _Bisector.Bisector_BisecPC_swiginit(self, _Bisector.new_Bisector_BisecPC(*args))

    def Distance(self, *args) -> "Standard_Real":
        r"""
        Returns the distance between the point of parameter u on <self> and my point or my curve.

        Parameters
        ----------
        U: float

        Returns
        -------
        float

        """
        return _Bisector.Bisector_BisecPC_Distance(self, *args)

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

        Parameters
        ----------
        Deep: int,optional
        	default value is 0
        Offset: int,optional
        	default value is 0

        Returns
        -------
        None

        """
        return _Bisector.Bisector_BisecPC_Dump(self, *args)

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

        Returns
        -------
        GeomAbs_Shape

        """
        return _Bisector.Bisector_BisecPC_IntervalContinuity(self, *args)

    def IsEmpty(self, *args) -> "Standard_Boolean":
        r"""
        Returns <true> if the bisector is empty.

        Returns
        -------
        bool

        """
        return _Bisector.Bisector_BisecPC_IsEmpty(self, *args)

    def LinkBisCurve(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter on the curve1 of the projection of the point of parameter u on <self>.

        Parameters
        ----------
        U: float

        Returns
        -------
        float

        """
        return _Bisector.Bisector_BisecPC_LinkBisCurve(self, *args)

    def LinkCurveBis(self, *args) -> "Standard_Real":
        r"""
        Returns the reciproque of linkbiscurve.

        Parameters
        ----------
        U: float

        Returns
        -------
        float

        """
        return _Bisector.Bisector_BisecPC_LinkCurveBis(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Construct the bisector between the point <p> and the curve <cu>. <side> = 1. if the bisector curve is on the left of <cu> else <side> = -1. <distmax> is used to trim the bisector.the distance between the points of the bisector and <cu> is smaller than <distmax>.

        Parameters
        ----------
        Cu: Geom2d_Curve
        P: gp_Pnt2d
        Side: float
        DistMax: float,optional
        	default value is 500

        Returns
        -------
        None

        """
        return _Bisector.Bisector_BisecPC_Perform(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Bisector.delete_Bisector_BisecPC

# Register Bisector_BisecPC in _Bisector:
_Bisector.Bisector_BisecPC_swigregister(Bisector_BisecPC)





