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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _LProp3d:
_LProp3d.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 _LProp3d.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.Adaptor3d
import OCC.Core.Geom
import OCC.Core.gp
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.TopAbs
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.math
import OCC.Core.Message
import OCC.Core.OSD

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



class LProp3d_CLProps(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"""
        Initializes the local properties of the curve <c> the current point and the derivatives are computed at the same time, which allows an optimization of the computation time. <n> indicates the maximum number of derivations to be done (0, 1, 2 or 3). for example, to compute only the tangent, n should be equal to 1. <resolution> is the linear tolerance (it is used to test if a vector is null).

        Parameters
        ----------
        C: Adaptor3d_HCurve
        N: int
        Resolution: float

        Returns
        -------
        None
        Same as previous constructor but here the parameter is set to the value <u>. all the computations done will be related to <c> and <u>.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        U: float
        N: int
        Resolution: float

        Returns
        -------
        None
        Same as previous constructor but here the parameter is set to the value <u> and the curve is set with setcurve. the curve can have a empty constructor all the computations done will be related to <c> and <u> when the functions 'set' will be done.

        Parameters
        ----------
        N: int
        Resolution: float

        Returns
        -------
        None

        """
        _LProp3d.LProp3d_CLProps_swiginit(self, _LProp3d.new_LProp3d_CLProps(*args))

    def CentreOfCurvature(self, *args) -> "void":
        r"""
        Returns the centre of curvature <p>.

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

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CLProps_CentreOfCurvature(self, *args)

    def Curvature(self, *args) -> "Standard_Real":
        r"""
        Returns the curvature.

        Returns
        -------
        float

        """
        return _LProp3d.LProp3d_CLProps_Curvature(self, *args)

    def D1(self, *args) -> "gp_Vec const":
        r"""
        Returns the first derivative. the derivative is computed if it has not been yet.

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_CLProps_D1(self, *args)

    def D2(self, *args) -> "gp_Vec const":
        r"""
        Returns the second derivative. the derivative is computed if it has not been yet.

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_CLProps_D2(self, *args)

    def D3(self, *args) -> "gp_Vec const":
        r"""
        Returns the third derivative. the derivative is computed if it has not been yet.

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_CLProps_D3(self, *args)

    def IsTangentDefined(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the tangent is defined. for example, the tangent is not defined if the three first derivatives are all null.

        Returns
        -------
        bool

        """
        return _LProp3d.LProp3d_CLProps_IsTangentDefined(self, *args)

    def Normal(self, *args) -> "void":
        r"""
        Returns the normal direction <n>.

        Parameters
        ----------
        N: gp_Dir

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CLProps_Normal(self, *args)

    def SetCurve(self, *args) -> "void":
        r"""
        Initializes the local properties of the curve for the new curve.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CLProps_SetCurve(self, *args)

    def SetParameter(self, *args) -> "void":
        r"""
        Initializes the local properties of the curve for the parameter value <u>.

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

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CLProps_SetParameter(self, *args)

    def Tangent(self, *args) -> "void":
        r"""
        Output the tangent direction <d>.

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

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CLProps_Tangent(self, *args)

    def Value(self, *args) -> "gp_Pnt const":
        r"""
        Returns the point.

        Returns
        -------
        gp_Pnt

        """
        return _LProp3d.LProp3d_CLProps_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _LProp3d.delete_LProp3d_CLProps

# Register LProp3d_CLProps in _LProp3d:
_LProp3d.LProp3d_CLProps_swigregister(LProp3d_CLProps)

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

    @staticmethod
    def Continuity(*args) -> "Standard_Integer":
        r"""
        Returns the order of continuity of the hcurve <c>. returns 1 : first derivative only is computable returns 2 : first and second derivative only are computable. returns 3 : first, second and third are computable.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        int

        """
        return _LProp3d.LProp3d_CurveTool_Continuity(*args)

    @staticmethod
    def D1(*args) -> "void":
        r"""
        Computes the point <p> and first derivative <v1> of parameter <u> on the hcurve <c>.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        U: float
        P: gp_Pnt
        V1: gp_Vec

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CurveTool_D1(*args)

    @staticmethod
    def D2(*args) -> "void":
        r"""
        Computes the point <p>, the first derivative <v1> and second derivative <v2> of parameter <u> on the hcurve <c>.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        U: float
        P: gp_Pnt
        V1: gp_Vec
        V2: gp_Vec

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CurveTool_D2(*args)

    @staticmethod
    def D3(*args) -> "void":
        r"""
        Computes the point <p>, the first derivative <v1>, the second derivative <v2> and third derivative <v3> of parameter <u> on the hcurve <c>.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        U: float
        P: gp_Pnt
        V1: gp_Vec
        V2: gp_Vec
        V3: gp_Vec

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CurveTool_D3(*args)

    @staticmethod
    def FirstParameter(*args) -> "Standard_Real":
        r"""
        Returns the first parameter bound of the hcurve.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        float

        """
        return _LProp3d.LProp3d_CurveTool_FirstParameter(*args)

    @staticmethod
    def LastParameter(*args) -> "Standard_Real":
        r"""
        Returns the last parameter bound of the hcurve. firstparameter must be less than lastparamenter.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        float

        """
        return _LProp3d.LProp3d_CurveTool_LastParameter(*args)

    @staticmethod
    def Value(*args) -> "void":
        r"""
        Computes the point <p> of parameter <u> on the hcurve <c>.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        U: float
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_CurveTool_Value(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _LProp3d.LProp3d_CurveTool_swiginit(self, _LProp3d.new_LProp3d_CurveTool())
    __swig_destroy__ = _LProp3d.delete_LProp3d_CurveTool

# Register LProp3d_CurveTool in _LProp3d:
_LProp3d.LProp3d_CurveTool_swigregister(LProp3d_CurveTool)

def LProp3d_CurveTool_Continuity(*args) -> "Standard_Integer":
    r"""
    Returns the order of continuity of the hcurve <c>. returns 1 : first derivative only is computable returns 2 : first and second derivative only are computable. returns 3 : first, second and third are computable.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    int

    """
    return _LProp3d.LProp3d_CurveTool_Continuity(*args)

def LProp3d_CurveTool_D1(*args) -> "void":
    r"""
    Computes the point <p> and first derivative <v1> of parameter <u> on the hcurve <c>.

    Parameters
    ----------
    C: Adaptor3d_HCurve
    U: float
    P: gp_Pnt
    V1: gp_Vec

    Returns
    -------
    None

    """
    return _LProp3d.LProp3d_CurveTool_D1(*args)

def LProp3d_CurveTool_D2(*args) -> "void":
    r"""
    Computes the point <p>, the first derivative <v1> and second derivative <v2> of parameter <u> on the hcurve <c>.

    Parameters
    ----------
    C: Adaptor3d_HCurve
    U: float
    P: gp_Pnt
    V1: gp_Vec
    V2: gp_Vec

    Returns
    -------
    None

    """
    return _LProp3d.LProp3d_CurveTool_D2(*args)

def LProp3d_CurveTool_D3(*args) -> "void":
    r"""
    Computes the point <p>, the first derivative <v1>, the second derivative <v2> and third derivative <v3> of parameter <u> on the hcurve <c>.

    Parameters
    ----------
    C: Adaptor3d_HCurve
    U: float
    P: gp_Pnt
    V1: gp_Vec
    V2: gp_Vec
    V3: gp_Vec

    Returns
    -------
    None

    """
    return _LProp3d.LProp3d_CurveTool_D3(*args)

def LProp3d_CurveTool_FirstParameter(*args) -> "Standard_Real":
    r"""
    Returns the first parameter bound of the hcurve.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    float

    """
    return _LProp3d.LProp3d_CurveTool_FirstParameter(*args)

def LProp3d_CurveTool_LastParameter(*args) -> "Standard_Real":
    r"""
    Returns the last parameter bound of the hcurve. firstparameter must be less than lastparamenter.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    float

    """
    return _LProp3d.LProp3d_CurveTool_LastParameter(*args)

def LProp3d_CurveTool_Value(*args) -> "void":
    r"""
    Computes the point <p> of parameter <u> on the hcurve <c>.

    Parameters
    ----------
    C: Adaptor3d_HCurve
    U: float
    P: gp_Pnt

    Returns
    -------
    None

    """
    return _LProp3d.LProp3d_CurveTool_Value(*args)

class LProp3d_SLProps(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"""
        Initializes the local properties of the surface <s> for the parameter values (<u>, <v>). the current point and the derivatives are computed at the same time, which allows an optimization of the computation time. <n> indicates the maximum number of derivations to be done (0, 1, or 2). for example, to compute only the tangent, n should be equal to 1. <resolution> is the linear tolerance (it is used to test if a vector is null).

        Parameters
        ----------
        S: Adaptor3d_HSurface
        U: float
        V: float
        N: int
        Resolution: float

        Returns
        -------
        None
        Idem as previous constructor but without setting the value of parameters <u> and <v>.

        Parameters
        ----------
        S: Adaptor3d_HSurface
        N: int
        Resolution: float

        Returns
        -------
        None
        Idem as previous constructor but without setting the value of parameters <u> and <v> and the surface. the surface can have an empty constructor.

        Parameters
        ----------
        N: int
        Resolution: float

        Returns
        -------
        None

        """
        _LProp3d.LProp3d_SLProps_swiginit(self, _LProp3d.new_LProp3d_SLProps(*args))

    def CurvatureDirections(self, *args) -> "void":
        r"""
        Returns the direction of the maximum and minimum curvature <maxd> and <mind>.

        Parameters
        ----------
        MaxD: gp_Dir
        MinD: gp_Dir

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_SLProps_CurvatureDirections(self, *args)

    def D1U(self, *args) -> "gp_Vec const":
        r"""
        Returns the first u derivative. the derivative is computed if it has not been yet.

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_SLProps_D1U(self, *args)

    def D1V(self, *args) -> "gp_Vec const":
        r"""
        Returns the first v derivative. the derivative is computed if it has not been yet.

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_SLProps_D1V(self, *args)

    def D2U(self, *args) -> "gp_Vec const":
        r"""
        Returns the second u derivatives the derivative is computed if it has not been yet.

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_SLProps_D2U(self, *args)

    def D2V(self, *args) -> "gp_Vec const":
        r"""
        Returns the second v derivative. the derivative is computed if it has not been yet.

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_SLProps_D2V(self, *args)

    def DUV(self, *args) -> "gp_Vec const":
        r"""
        Returns the second uv cross-derivative. the derivative is computed if it has not been yet.

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_SLProps_DUV(self, *args)

    def GaussianCurvature(self, *args) -> "Standard_Real":
        r"""
        Returns the gaussian curvature.

        Returns
        -------
        float

        """
        return _LProp3d.LProp3d_SLProps_GaussianCurvature(self, *args)

    def IsCurvatureDefined(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the curvature is defined.

        Returns
        -------
        bool

        """
        return _LProp3d.LProp3d_SLProps_IsCurvatureDefined(self, *args)

    def IsNormalDefined(self, *args) -> "Standard_Boolean":
        r"""
        Tells if the normal is defined.

        Returns
        -------
        bool

        """
        return _LProp3d.LProp3d_SLProps_IsNormalDefined(self, *args)

    def IsTangentUDefined(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the u tangent is defined. for example, the tangent is not defined if the two first u derivatives are null.

        Returns
        -------
        bool

        """
        return _LProp3d.LProp3d_SLProps_IsTangentUDefined(self, *args)

    def IsTangentVDefined(self, *args) -> "Standard_Boolean":
        r"""
        Returns if the v tangent is defined. for example, the tangent is not defined if the two first v derivatives are null.

        Returns
        -------
        bool

        """
        return _LProp3d.LProp3d_SLProps_IsTangentVDefined(self, *args)

    def IsUmbilic(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the point is umbilic (i.e. if the curvature is constant).

        Returns
        -------
        bool

        """
        return _LProp3d.LProp3d_SLProps_IsUmbilic(self, *args)

    def MaxCurvature(self, *args) -> "Standard_Real":
        r"""
        Returns the maximum curvature.

        Returns
        -------
        float

        """
        return _LProp3d.LProp3d_SLProps_MaxCurvature(self, *args)

    def MeanCurvature(self, *args) -> "Standard_Real":
        r"""
        Returns the mean curvature.

        Returns
        -------
        float

        """
        return _LProp3d.LProp3d_SLProps_MeanCurvature(self, *args)

    def MinCurvature(self, *args) -> "Standard_Real":
        r"""
        Returns the minimum curvature.

        Returns
        -------
        float

        """
        return _LProp3d.LProp3d_SLProps_MinCurvature(self, *args)

    def Normal(self, *args) -> "gp_Dir const":
        r"""
        Returns the normal direction.

        Returns
        -------
        gp_Dir

        """
        return _LProp3d.LProp3d_SLProps_Normal(self, *args)

    def SetParameters(self, *args) -> "void":
        r"""
        Initializes the local properties of the surface s for the new parameter values (<u>, <v>).

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

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_SLProps_SetParameters(self, *args)

    def SetSurface(self, *args) -> "void":
        r"""
        Initializes the local properties of the surface s for the new surface.

        Parameters
        ----------
        S: Adaptor3d_HSurface

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_SLProps_SetSurface(self, *args)

    def TangentU(self, *args) -> "void":
        r"""
        Returns the tangent direction <d> on the iso-v.

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

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_SLProps_TangentU(self, *args)

    def TangentV(self, *args) -> "void":
        r"""
        Returns the tangent direction <d> on the iso-v.

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

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_SLProps_TangentV(self, *args)

    def Value(self, *args) -> "gp_Pnt const":
        r"""
        Returns the point.

        Returns
        -------
        gp_Pnt

        """
        return _LProp3d.LProp3d_SLProps_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _LProp3d.delete_LProp3d_SLProps

# Register LProp3d_SLProps in _LProp3d:
_LProp3d.LProp3d_SLProps_swigregister(LProp3d_SLProps)

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

    @staticmethod
    def Bounds(*args) -> "Standard_Real &, Standard_Real &, Standard_Real &, Standard_Real &":
        r"""
        Returns the bounds of the hsurface.

        Parameters
        ----------
        S: Adaptor3d_HSurface

        Returns
        -------
        U1: float
        V1: float
        U2: float
        V2: float

        """
        return _LProp3d.LProp3d_SurfaceTool_Bounds(*args)

    @staticmethod
    def Continuity(*args) -> "Standard_Integer":
        r"""
        Returns the order of continuity of the hsurface <s>. returns 1 : first derivative only is computable returns 2 : first and second derivative only are computable.

        Parameters
        ----------
        S: Adaptor3d_HSurface

        Returns
        -------
        int

        """
        return _LProp3d.LProp3d_SurfaceTool_Continuity(*args)

    @staticmethod
    def D1(*args) -> "void":
        r"""
        Computes the point <p> and first derivative <d1*> of parameter <u> and <v> on the hsurface <s>.

        Parameters
        ----------
        S: Adaptor3d_HSurface
        U: float
        V: float
        P: gp_Pnt
        D1U: gp_Vec
        D1V: gp_Vec

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_SurfaceTool_D1(*args)

    @staticmethod
    def D2(*args) -> "void":
        r"""
        Computes the point <p>, the first derivative <d1*> and second derivative <d2*> of parameter <u> and <v> on the hsurface <s>.

        Parameters
        ----------
        S: Adaptor3d_HSurface
        U: float
        V: float
        P: gp_Pnt
        D1U: gp_Vec
        D1V: gp_Vec
        D2U: gp_Vec
        D2V: gp_Vec
        DUV: gp_Vec

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_SurfaceTool_D2(*args)

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

        Parameters
        ----------
        S: Adaptor3d_HSurface
        U: float
        V: float
        IU: int
        IV: int

        Returns
        -------
        gp_Vec

        """
        return _LProp3d.LProp3d_SurfaceTool_DN(*args)

    @staticmethod
    def Value(*args) -> "void":
        r"""
        Computes the point <p> of parameter <u> and <v> on the hsurface <s>.

        Parameters
        ----------
        S: Adaptor3d_HSurface
        U: float
        V: float
        P: gp_Pnt

        Returns
        -------
        None

        """
        return _LProp3d.LProp3d_SurfaceTool_Value(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _LProp3d.LProp3d_SurfaceTool_swiginit(self, _LProp3d.new_LProp3d_SurfaceTool())
    __swig_destroy__ = _LProp3d.delete_LProp3d_SurfaceTool

# Register LProp3d_SurfaceTool in _LProp3d:
_LProp3d.LProp3d_SurfaceTool_swigregister(LProp3d_SurfaceTool)

def LProp3d_SurfaceTool_Bounds(*args) -> "Standard_Real &, Standard_Real &, Standard_Real &, Standard_Real &":
    r"""
    Returns the bounds of the hsurface.

    Parameters
    ----------
    S: Adaptor3d_HSurface

    Returns
    -------
    U1: float
    V1: float
    U2: float
    V2: float

    """
    return _LProp3d.LProp3d_SurfaceTool_Bounds(*args)

def LProp3d_SurfaceTool_Continuity(*args) -> "Standard_Integer":
    r"""
    Returns the order of continuity of the hsurface <s>. returns 1 : first derivative only is computable returns 2 : first and second derivative only are computable.

    Parameters
    ----------
    S: Adaptor3d_HSurface

    Returns
    -------
    int

    """
    return _LProp3d.LProp3d_SurfaceTool_Continuity(*args)

def LProp3d_SurfaceTool_D1(*args) -> "void":
    r"""
    Computes the point <p> and first derivative <d1*> of parameter <u> and <v> on the hsurface <s>.

    Parameters
    ----------
    S: Adaptor3d_HSurface
    U: float
    V: float
    P: gp_Pnt
    D1U: gp_Vec
    D1V: gp_Vec

    Returns
    -------
    None

    """
    return _LProp3d.LProp3d_SurfaceTool_D1(*args)

def LProp3d_SurfaceTool_D2(*args) -> "void":
    r"""
    Computes the point <p>, the first derivative <d1*> and second derivative <d2*> of parameter <u> and <v> on the hsurface <s>.

    Parameters
    ----------
    S: Adaptor3d_HSurface
    U: float
    V: float
    P: gp_Pnt
    D1U: gp_Vec
    D1V: gp_Vec
    D2U: gp_Vec
    D2V: gp_Vec
    DUV: gp_Vec

    Returns
    -------
    None

    """
    return _LProp3d.LProp3d_SurfaceTool_D2(*args)

def LProp3d_SurfaceTool_DN(*args) -> "gp_Vec":
    r"""
    No available documentation.

    Parameters
    ----------
    S: Adaptor3d_HSurface
    U: float
    V: float
    IU: int
    IV: int

    Returns
    -------
    gp_Vec

    """
    return _LProp3d.LProp3d_SurfaceTool_DN(*args)

def LProp3d_SurfaceTool_Value(*args) -> "void":
    r"""
    Computes the point <p> of parameter <u> and <v> on the hsurface <s>.

    Parameters
    ----------
    S: Adaptor3d_HSurface
    U: float
    V: float
    P: gp_Pnt

    Returns
    -------
    None

    """
    return _LProp3d.LProp3d_SurfaceTool_Value(*args)





