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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _IntCurve:
_IntCurve.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 _IntCurve.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.IntRes2d
import OCC.Core.math
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.GeomAbs

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



class IntCurve_IConicTool(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
        ----------
        IT: IntCurve_IConicTool

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

        Parameters
        ----------
        E: gp_Elips2d

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

        Parameters
        ----------
        L: gp_Lin2d

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

        Parameters
        ----------
        C: gp_Circ2d

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

        Parameters
        ----------
        P: gp_Parab2d

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

        Parameters
        ----------
        H: gp_Hypr2d

        Returns
        -------
        None

        """
        _IntCurve.IntCurve_IConicTool_swiginit(self, _IntCurve.new_IntCurve_IConicTool(*args))

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

        Parameters
        ----------
        U: float
        P: gp_Pnt2d
        T: gp_Vec2d

        Returns
        -------
        None

        """
        return _IntCurve.IntCurve_IConicTool_D1(self, *args)

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

        Parameters
        ----------
        U: float
        P: gp_Pnt2d
        T: gp_Vec2d
        N: gp_Vec2d

        Returns
        -------
        None

        """
        return _IntCurve.IntCurve_IConicTool_D2(self, *args)

    def Distance(self, *args) -> "Standard_Real":
        r"""
        Computes the value of the signed distance between the point p and the implicit curve.

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

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_IConicTool_Distance(self, *args)

    def FindParameter(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter u of the point on the implicit curve corresponding to the point p. the correspondance between p and the point p(u) on the implicit curve must be coherent with the way of determination of the signed distance.

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

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_IConicTool_FindParameter(self, *args)

    def GradDistance(self, *args) -> "gp_Vec2d":
        r"""
        Computes the gradient of the signed distance between a point and the implicit curve, at the point p.

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

        Returns
        -------
        gp_Vec2d

        """
        return _IntCurve.IntCurve_IConicTool_GradDistance(self, *args)

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

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

        Returns
        -------
        gp_Pnt2d

        """
        return _IntCurve.IntCurve_IConicTool_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurve.delete_IntCurve_IConicTool

# Register IntCurve_IConicTool in _IntCurve:
_IntCurve.IntCurve_IConicTool_swigregister(IntCurve_IConicTool)

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

        Returns
        -------
        None
        Intersection between 2 lines from gp.

        Parameters
        ----------
        L1: gp_Lin2d
        D1: IntRes2d_Domain
        L2: gp_Lin2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a line and a circle. the exception constructionerror is raised if the method isclosed of the domain of the circle returns false.

        Parameters
        ----------
        L: gp_Lin2d
        DL: IntRes2d_Domain
        C: gp_Circ2d
        DC: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a line and an ellipse. the exception constructionerror is raised if the method isclosed of the domain of the ellipse returns false.

        Parameters
        ----------
        L: gp_Lin2d
        DL: IntRes2d_Domain
        E: gp_Elips2d
        DE: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a line and a parabola from gp.

        Parameters
        ----------
        L: gp_Lin2d
        DL: IntRes2d_Domain
        P: gp_Parab2d
        DP: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a line and an hyperbola.

        Parameters
        ----------
        L: gp_Lin2d
        DL: IntRes2d_Domain
        H: gp_Hypr2d
        DH: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between 2 circles from gp. the exception constructionerror is raised if the method isclosed of one of the domain returns false.

        Parameters
        ----------
        C1: gp_Circ2d
        D1: IntRes2d_Domain
        C2: gp_Circ2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a circle and an ellipse. the exception constructionerror is raised if the method isclosed of one the domain returns false.

        Parameters
        ----------
        C: gp_Circ2d
        DC: IntRes2d_Domain
        E: gp_Elips2d
        DE: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a circle and a parabola. the exception constructionerror is raised if the method isclosed of the domain of the circle returns false.

        Parameters
        ----------
        C: gp_Circ2d
        DC: IntRes2d_Domain
        P: gp_Parab2d
        DP: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a circle and an hyperbola. the exception constructionerror is raised if the method isclosed of the domain of the circle returns false.

        Parameters
        ----------
        C: gp_Circ2d
        DC: IntRes2d_Domain
        H: gp_Hypr2d
        DH: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between 2 ellipses. the exception constructionerror is raised if the method isclosed of one of the domain returns false.

        Parameters
        ----------
        E1: gp_Elips2d
        D1: IntRes2d_Domain
        E2: gp_Elips2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between an ellipse and a parabola. the exception constructionerror is raised if the method isclosed of the domain of the ellipse returns false.

        Parameters
        ----------
        E: gp_Elips2d
        DE: IntRes2d_Domain
        P: gp_Parab2d
        DP: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between an ellipse and an hyperbola. the exception constructionerror is raised if the method isclosed of the domain of the ellipse returns false.

        Parameters
        ----------
        E: gp_Elips2d
        DE: IntRes2d_Domain
        H: gp_Hypr2d
        DH: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between 2 parabolas.

        Parameters
        ----------
        P1: gp_Parab2d
        D1: IntRes2d_Domain
        P2: gp_Parab2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a parabola and an hyperbola.

        Parameters
        ----------
        P: gp_Parab2d
        DP: IntRes2d_Domain
        H: gp_Hypr2d
        DH: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between 2 hyperbolas.

        Parameters
        ----------
        H1: gp_Hypr2d
        D1: IntRes2d_Domain
        H2: gp_Hypr2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None

        """
        _IntCurve.IntCurve_IntConicConic_swiginit(self, _IntCurve.new_IntCurve_IntConicConic(*args))

    def Perform(self, *args) -> "void":
        r"""
        Intersection between 2 lines from gp.

        Parameters
        ----------
        L1: gp_Lin2d
        D1: IntRes2d_Domain
        L2: gp_Lin2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a line and a circle. the exception constructionerror is raised if the method isclosed of the domain of the circle returns false.

        Parameters
        ----------
        L: gp_Lin2d
        DL: IntRes2d_Domain
        C: gp_Circ2d
        DC: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a line and an ellipse. the exception constructionerror is raised if the method isclosed of the domain of the ellipse returns false.

        Parameters
        ----------
        L: gp_Lin2d
        DL: IntRes2d_Domain
        E: gp_Elips2d
        DE: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a line and a parabola from gp.

        Parameters
        ----------
        L: gp_Lin2d
        DL: IntRes2d_Domain
        P: gp_Parab2d
        DP: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a line and an hyperbola.

        Parameters
        ----------
        L: gp_Lin2d
        DL: IntRes2d_Domain
        H: gp_Hypr2d
        DH: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between 2 circles from gp. the exception constructionerror is raised if the method isclosed of the domain of one of the circle returns false.

        Parameters
        ----------
        C1: gp_Circ2d
        D1: IntRes2d_Domain
        C2: gp_Circ2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a circle and an ellipse. the exception constructionerror is raised if the method isclosed of one the domain returns false.

        Parameters
        ----------
        C: gp_Circ2d
        DC: IntRes2d_Domain
        E: gp_Elips2d
        DE: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a circle and a parabola. the exception constructionerror is raised if the method isclosed of the domain of the circle returns false.

        Parameters
        ----------
        C: gp_Circ2d
        DC: IntRes2d_Domain
        P: gp_Parab2d
        DP: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a circle and an hyperbola. the exception constructionerror is raised if the method isclosed of the domain of the circle returns false.

        Parameters
        ----------
        C: gp_Circ2d
        DC: IntRes2d_Domain
        H: gp_Hypr2d
        DH: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between 2 ellipses. the exception constructionerror is raised if the method isclosed of one of the domain returns false.

        Parameters
        ----------
        E1: gp_Elips2d
        D1: IntRes2d_Domain
        E2: gp_Elips2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between an ellipse and a parabola. the exception constructionerror is raised if the method isclosed of the domain of the ellipse returns false.

        Parameters
        ----------
        E: gp_Elips2d
        DE: IntRes2d_Domain
        P: gp_Parab2d
        DP: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between an ellipse and an hyperbola. the exception constructionerror is raised if the method isclosed of the domain of the ellipse returns false.

        Parameters
        ----------
        E: gp_Elips2d
        DE: IntRes2d_Domain
        H: gp_Hypr2d
        DH: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between 2 parabolas.

        Parameters
        ----------
        P1: gp_Parab2d
        D1: IntRes2d_Domain
        P2: gp_Parab2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between a parabola and an hyperbola.

        Parameters
        ----------
        P: gp_Parab2d
        DP: IntRes2d_Domain
        H: gp_Hypr2d
        DH: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None
        Intersection between 2 hyperbolas.

        Parameters
        ----------
        H1: gp_Hypr2d
        D1: IntRes2d_Domain
        H2: gp_Hypr2d
        D2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None

        """
        return _IntCurve.IntCurve_IntConicConic_Perform(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurve.delete_IntCurve_IntConicConic

# Register IntCurve_IntConicConic in _IntCurve:
_IntCurve.IntCurve_IntConicConic_swigregister(IntCurve_IntConicConic)

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

        Returns
        -------
        None
        Intersection between an implicit curve and a parametrised curve. the exception constructionerror is raised if the domain of the parametrised curve does not verify hasfirstpoint and haslastpoint return true.

        Parameters
        ----------
        ITool: IntCurve_IConicTool
        Dom1: IntRes2d_Domain
        PCurve: IntCurve_PConic
        Dom2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None

        """
        _IntCurve.IntCurve_IntImpConicParConic_swiginit(self, _IntCurve.new_IntCurve_IntImpConicParConic(*args))

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

        Parameters
        ----------
        TheImpTool: IntCurve_IConicTool
        TheParCurve: IntCurve_PConic
        TheImpCurveDomain: IntRes2d_Domain
        TheParCurveDomain: IntRes2d_Domain
        Inter2_And_Domain2: TColStd_Array1OfReal
        Inter1: TColStd_Array1OfReal
        Resultat1: TColStd_Array1OfReal
        Resultat2: TColStd_Array1OfReal
        EpsNul: float

        Returns
        -------
        NbResultats: int

        """
        return _IntCurve.IntCurve_IntImpConicParConic_And_Domaine_Objet1_Intersections(self, *args)

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

        Parameters
        ----------
        parameter: float
        point: gp_Pnt2d
        TheParCurev: IntCurve_PConic
        TheImpTool: IntCurve_IConicTool

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_IntImpConicParConic_FindU(self, *args)

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

        Parameters
        ----------
        parameter: float
        point: gp_Pnt2d
        TheImpTool: IntCurve_IConicTool
        ParCurve: IntCurve_PConic
        TheParCurveDomain: IntRes2d_Domain
        V0: float
        V1: float
        Tolerance: float

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_IntImpConicParConic_FindV(self, *args)

    def Perform(self, *args) -> "void":
        r"""
        Intersection between an implicit curve and a parametrised curve. the exception constructionerror is raised if the domain of the parametrised curve does not verify hasfirstpoint and haslastpoint return true.

        Parameters
        ----------
        ITool: IntCurve_IConicTool
        Dom1: IntRes2d_Domain
        PCurve: IntCurve_PConic
        Dom2: IntRes2d_Domain
        TolConf: float
        Tol: float

        Returns
        -------
        None

        """
        return _IntCurve.IntCurve_IntImpConicParConic_Perform(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurve.delete_IntCurve_IntImpConicParConic

# Register IntCurve_IntImpConicParConic in _IntCurve:
_IntCurve.IntCurve_IntImpConicParConic_swigregister(IntCurve_IntImpConicParConic)

class IntCurve_MyImpParToolOfIntImpConicParConic(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"""
        Constructor of the class.

        Parameters
        ----------
        IT: IntCurve_IConicTool
        PC: IntCurve_PConic

        Returns
        -------
        None

        """
        _IntCurve.IntCurve_MyImpParToolOfIntImpConicParConic_swiginit(self, _IntCurve.new_IntCurve_MyImpParToolOfIntImpConicParConic(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurve.delete_IntCurve_MyImpParToolOfIntImpConicParConic

# Register IntCurve_MyImpParToolOfIntImpConicParConic in _IntCurve:
_IntCurve.IntCurve_MyImpParToolOfIntImpConicParConic_swigregister(IntCurve_MyImpParToolOfIntImpConicParConic)

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

        Parameters
        ----------
        PC: IntCurve_PConic

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

        Parameters
        ----------
        E: gp_Elips2d

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

        Parameters
        ----------
        C: gp_Circ2d

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

        Parameters
        ----------
        P: gp_Parab2d

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

        Parameters
        ----------
        H: gp_Hypr2d

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

        Parameters
        ----------
        L: gp_Lin2d

        Returns
        -------
        None

        """
        _IntCurve.IntCurve_PConic_swiginit(self, _IntCurve.new_IntCurve_PConic(*args))

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

        Returns
        -------
        int

        """
        return _IntCurve.IntCurve_PConic_Accuracy(self, *args)

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

        Returns
        -------
        gp_Ax22d

        """
        return _IntCurve.IntCurve_PConic_Axis2(self, *args)

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

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_PConic_EpsX(self, *args)

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

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_PConic_Param1(self, *args)

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

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_PConic_Param2(self, *args)

    def SetAccuracy(self, *args) -> "void":
        r"""
        Accuracy is the number of samples used to approximate the parametric curve on its domain.

        Parameters
        ----------
        Nb: int

        Returns
        -------
        None

        """
        return _IntCurve.IntCurve_PConic_SetAccuracy(self, *args)

    def SetEpsX(self, *args) -> "void":
        r"""
        Epsx is a internal tolerance used in math algorithms, usually about 1e-10 (see functionallroots for more details).

        Parameters
        ----------
        EpsDist: float

        Returns
        -------
        None

        """
        return _IntCurve.IntCurve_PConic_SetEpsX(self, *args)

    def TypeCurve(self, *args) -> "GeomAbs_CurveType":
        r"""
        The conics are manipulated as objects which only depend on three parameters : axis and two real from standards. type curve is used to select the correct conic.

        Returns
        -------
        GeomAbs_CurveType

        """
        return _IntCurve.IntCurve_PConic_TypeCurve(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurve.delete_IntCurve_PConic

# Register IntCurve_PConic in _IntCurve:
_IntCurve.IntCurve_PConic_swigregister(IntCurve_PConic)

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

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

        Parameters
        ----------
        C: IntCurve_PConic
        U: float
        P: gp_Pnt2d
        T: gp_Vec2d

        Returns
        -------
        None

        """
        return _IntCurve.IntCurve_PConicTool_D1(*args)

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

        Parameters
        ----------
        C: IntCurve_PConic
        U: float
        P: gp_Pnt2d
        T: gp_Vec2d
        N: gp_Vec2d

        Returns
        -------
        None

        """
        return _IntCurve.IntCurve_PConicTool_D2(*args)

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

        Parameters
        ----------
        C: IntCurve_PConic

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_PConicTool_EpsX(*args)

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

        Parameters
        ----------
        C: IntCurve_PConic

        Returns
        -------
        int
        No available documentation.

        Parameters
        ----------
        C: IntCurve_PConic
        U0: float
        U1: float

        Returns
        -------
        int

        """
        return _IntCurve.IntCurve_PConicTool_NbSamples(*args)

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

        Parameters
        ----------
        C: IntCurve_PConic
        X: float

        Returns
        -------
        gp_Pnt2d

        """
        return _IntCurve.IntCurve_PConicTool_Value(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntCurve.IntCurve_PConicTool_swiginit(self, _IntCurve.new_IntCurve_PConicTool())
    __swig_destroy__ = _IntCurve.delete_IntCurve_PConicTool

# Register IntCurve_PConicTool in _IntCurve:
_IntCurve.IntCurve_PConicTool_swigregister(IntCurve_PConicTool)

def IntCurve_PConicTool_D1(*args) -> "void":
    r"""
    No available documentation.

    Parameters
    ----------
    C: IntCurve_PConic
    U: float
    P: gp_Pnt2d
    T: gp_Vec2d

    Returns
    -------
    None

    """
    return _IntCurve.IntCurve_PConicTool_D1(*args)

def IntCurve_PConicTool_D2(*args) -> "void":
    r"""
    No available documentation.

    Parameters
    ----------
    C: IntCurve_PConic
    U: float
    P: gp_Pnt2d
    T: gp_Vec2d
    N: gp_Vec2d

    Returns
    -------
    None

    """
    return _IntCurve.IntCurve_PConicTool_D2(*args)

def IntCurve_PConicTool_EpsX(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: IntCurve_PConic

    Returns
    -------
    float

    """
    return _IntCurve.IntCurve_PConicTool_EpsX(*args)

def IntCurve_PConicTool_NbSamples(*args) -> "Standard_Integer":
    r"""
    No available documentation.

    Parameters
    ----------
    C: IntCurve_PConic

    Returns
    -------
    int
    No available documentation.

    Parameters
    ----------
    C: IntCurve_PConic
    U0: float
    U1: float

    Returns
    -------
    int

    """
    return _IntCurve.IntCurve_PConicTool_NbSamples(*args)

def IntCurve_PConicTool_Value(*args) -> "gp_Pnt2d":
    r"""
    No available documentation.

    Parameters
    ----------
    C: IntCurve_PConic
    X: float

    Returns
    -------
    gp_Pnt2d

    """
    return _IntCurve.IntCurve_PConicTool_Value(*args)

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

    @staticmethod
    def FindParameter(*args) -> "Standard_Real":
        r"""
        Returns the parameter v of the point on the parametric curve corresponding to the point pnt. the correspondance between pnt and the point p(v) on the parametric curve must be coherent with the way of determination of the signed distance between a point and the implicit curve. tol is the tolerance on the distance between a point and the parametrised curve. in that case, no bounds are given. the research of the rigth parameter has to be made on the natural parametric domain of the curve.

        Parameters
        ----------
        C: IntCurve_PConic
        Pnt: gp_Pnt2d
        Tol: float

        Returns
        -------
        float
        Returns the parameter v of the point on the parametric curve corresponding to the point pnt. the correspondance between pnt and the point p(v) on the parametric curve must be coherent with the way of determination of the signed distance between a point and the implicit curve. tol is the tolerance on the distance between a point and the parametrised curve. lowparameter and highparameter give the boundaries of the interval in wich the parameter certainly lies. these parameters are given to implement a more efficient algoritm. so, it is not necessary to check that the returned value verifies lowparameter <= value <= highparameter.

        Parameters
        ----------
        C: IntCurve_PConic
        Pnt: gp_Pnt2d
        LowParameter: float
        HighParameter: float
        Tol: float

        Returns
        -------
        float

        """
        return _IntCurve.IntCurve_ProjectOnPConicTool_FindParameter(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntCurve.IntCurve_ProjectOnPConicTool_swiginit(self, _IntCurve.new_IntCurve_ProjectOnPConicTool())
    __swig_destroy__ = _IntCurve.delete_IntCurve_ProjectOnPConicTool

# Register IntCurve_ProjectOnPConicTool in _IntCurve:
_IntCurve.IntCurve_ProjectOnPConicTool_swigregister(IntCurve_ProjectOnPConicTool)

def IntCurve_ProjectOnPConicTool_FindParameter(*args) -> "Standard_Real":
    r"""
    Returns the parameter v of the point on the parametric curve corresponding to the point pnt. the correspondance between pnt and the point p(v) on the parametric curve must be coherent with the way of determination of the signed distance between a point and the implicit curve. tol is the tolerance on the distance between a point and the parametrised curve. in that case, no bounds are given. the research of the rigth parameter has to be made on the natural parametric domain of the curve.

    Parameters
    ----------
    C: IntCurve_PConic
    Pnt: gp_Pnt2d
    Tol: float

    Returns
    -------
    float
    Returns the parameter v of the point on the parametric curve corresponding to the point pnt. the correspondance between pnt and the point p(v) on the parametric curve must be coherent with the way of determination of the signed distance between a point and the implicit curve. tol is the tolerance on the distance between a point and the parametrised curve. lowparameter and highparameter give the boundaries of the interval in wich the parameter certainly lies. these parameters are given to implement a more efficient algoritm. so, it is not necessary to check that the returned value verifies lowparameter <= value <= highparameter.

    Parameters
    ----------
    C: IntCurve_PConic
    Pnt: gp_Pnt2d
    LowParameter: float
    HighParameter: float
    Tol: float

    Returns
    -------
    float

    """
    return _IntCurve.IntCurve_ProjectOnPConicTool_FindParameter(*args)





