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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Blend_StepTooLarge = _Blend.Blend_StepTooLarge
Blend_StepTooSmall = _Blend.Blend_StepTooSmall
Blend_Backward = _Blend.Blend_Backward
Blend_SamePoints = _Blend.Blend_SamePoints
Blend_OnRst1 = _Blend.Blend_OnRst1
Blend_OnRst2 = _Blend.Blend_OnRst2
Blend_OnRst12 = _Blend.Blend_OnRst12
Blend_OK = _Blend.Blend_OK
Blend_NoDecroch = _Blend.Blend_NoDecroch
Blend_DecrochRst1 = _Blend.Blend_DecrochRst1
Blend_DecrochRst2 = _Blend.Blend_DecrochRst2
Blend_DecrochBoth = _Blend.Blend_DecrochBoth


class Blend_Status(IntEnum):
	Blend_StepTooLarge = 0
	Blend_StepTooSmall = 1
	Blend_Backward = 2
	Blend_SamePoints = 3
	Blend_OnRst1 = 4
	Blend_OnRst2 = 5
	Blend_OnRst12 = 6
	Blend_OK = 7
Blend_StepTooLarge = Blend_Status.Blend_StepTooLarge
Blend_StepTooSmall = Blend_Status.Blend_StepTooSmall
Blend_Backward = Blend_Status.Blend_Backward
Blend_SamePoints = Blend_Status.Blend_SamePoints
Blend_OnRst1 = Blend_Status.Blend_OnRst1
Blend_OnRst2 = Blend_Status.Blend_OnRst2
Blend_OnRst12 = Blend_Status.Blend_OnRst12
Blend_OK = Blend_Status.Blend_OK

class Blend_DecrochStatus(IntEnum):
	Blend_NoDecroch = 0
	Blend_DecrochRst1 = 1
	Blend_DecrochRst2 = 2
	Blend_DecrochBoth = 3
Blend_NoDecroch = Blend_DecrochStatus.Blend_NoDecroch
Blend_DecrochRst1 = Blend_DecrochStatus.Blend_DecrochRst1
Blend_DecrochRst2 = Blend_DecrochStatus.Blend_DecrochRst2
Blend_DecrochBoth = Blend_DecrochStatus.Blend_DecrochBoth

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

    def begin(self) -> "NCollection_Sequence< Blend_Point >::iterator":
        return _Blend.Blend_SequenceOfPoint_begin(self)

    def end(self) -> "NCollection_Sequence< Blend_Point >::iterator":
        return _Blend.Blend_SequenceOfPoint_end(self)

    def cbegin(self) -> "NCollection_Sequence< Blend_Point >::const_iterator":
        return _Blend.Blend_SequenceOfPoint_cbegin(self)

    def cend(self) -> "NCollection_Sequence< Blend_Point >::const_iterator":
        return _Blend.Blend_SequenceOfPoint_cend(self)

    def __init__(self, *args):
        _Blend.Blend_SequenceOfPoint_swiginit(self, _Blend.new_Blend_SequenceOfPoint(*args))

    def Size(self) -> "Standard_Integer":
        return _Blend.Blend_SequenceOfPoint_Size(self)

    def Length(self) -> "Standard_Integer":
        return _Blend.Blend_SequenceOfPoint_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _Blend.Blend_SequenceOfPoint_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _Blend.Blend_SequenceOfPoint_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _Blend.Blend_SequenceOfPoint_IsEmpty(self)

    def Reverse(self) -> "void":
        return _Blend.Blend_SequenceOfPoint_Reverse(self)

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

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

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

    def Assign(self, theOther: "Blend_SequenceOfPoint") -> "NCollection_Sequence< Blend_Point > &":
        return _Blend.Blend_SequenceOfPoint_Assign(self, theOther)

    def Set(self, theOther: "Blend_SequenceOfPoint") -> "NCollection_Sequence< Blend_Point > &":
        return _Blend.Blend_SequenceOfPoint_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _Blend.Blend_SequenceOfPoint_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _Blend.Blend_SequenceOfPoint_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _Blend.Blend_SequenceOfPoint_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _Blend.Blend_SequenceOfPoint_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _Blend.Blend_SequenceOfPoint_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "Blend_SequenceOfPoint") -> "void":
        return _Blend.Blend_SequenceOfPoint_Split(self, theIndex, theSeq)

    def First(self) -> "Blend_Point const &":
        return _Blend.Blend_SequenceOfPoint_First(self)

    def ChangeFirst(self) -> "Blend_Point &":
        return _Blend.Blend_SequenceOfPoint_ChangeFirst(self)

    def Last(self) -> "Blend_Point const &":
        return _Blend.Blend_SequenceOfPoint_Last(self)

    def ChangeLast(self) -> "Blend_Point &":
        return _Blend.Blend_SequenceOfPoint_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "Blend_Point const &":
        return _Blend.Blend_SequenceOfPoint_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "Blend_Point &":
        return _Blend.Blend_SequenceOfPoint_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "Blend_Point &":
        return _Blend.Blend_SequenceOfPoint___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "Blend_Point") -> "void":
        return _Blend.Blend_SequenceOfPoint_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _Blend.delete_Blend_SequenceOfPoint

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


# Register Blend_SequenceOfPoint in _Blend:
_Blend.Blend_SequenceOfPoint_swigregister(Blend_SequenceOfPoint)

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

class Blend_AppFunction(OCC.Core.math.math_FunctionSetWithDerivatives):
    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 GetBounds(self, *args) -> "void":
        r"""
        Returns in the vector infbound the lowest values allowed for each of the 4 variables. returns in the vector supbound the greatest values allowed for each of the 4 variables.

        Parameters
        ----------
        InfBound: math_Vector
        SupBound: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_AppFunction_GetBounds(self, *args)

    def GetMinimalDistance(self, *args) -> "Standard_Real":
        r"""
        Returns the minimal distance beetween two extremitys of calculed sections.

        Returns
        -------
        float

        """
        return _Blend.Blend_AppFunction_GetMinimalDistance(self, *args)

    def GetMinimalWeight(self, *args) -> "void":
        r"""
        Compute the minimal value of weight for each poles of all sections.

        Parameters
        ----------
        Weigths: TColStd_Array1OfReal

        Returns
        -------
        None

        """
        return _Blend.Blend_AppFunction_GetMinimalWeight(self, *args)

    def GetSectionSize(self, *args) -> "Standard_Real":
        r"""
        Returns the length of the maximum section.

        Returns
        -------
        float

        """
        return _Blend.Blend_AppFunction_GetSectionSize(self, *args)

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

        Parameters
        ----------

        Returns
        -------
        NbPoles: int
        NbKnots: int
        Degree: int
        NbPoles2d: int

        """
        return _Blend.Blend_AppFunction_GetShape(self, *args)

    def GetTolerance(self, *args) -> "void":
        r"""
        Returns in the vector tolerance the parametric tolerance for each of the 4 variables; tol is the tolerance used in 3d space.

        Parameters
        ----------
        Tolerance: math_Vector
        Tol: float

        Returns
        -------
        None
        Returns the tolerance to reach in approximation to respecte boundtol error at the boundary angletol tangent error at the boundary surftol error inside the surface.

        Parameters
        ----------
        BoundTol: float
        SurfTol: float
        AngleTol: float
        Tol3d: math_Vector
        Tol1D: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_AppFunction_GetTolerance(self, *args)

    def Intervals(self, *args) -> "void":
        r"""
        Stores in <t> the parameters bounding the intervals of continuity <s>. //! the array must provide enough room to accomodate for the parameters. i.e. t.length() > nbintervals() raises outofrange from standard.

        Parameters
        ----------
        T: TColStd_Array1OfReal
        S: GeomAbs_Shape

        Returns
        -------
        None

        """
        return _Blend.Blend_AppFunction_Intervals(self, *args)

    def IsRational(self, *args) -> "Standard_Boolean":
        r"""
        Returns if the section is rationnal.

        Returns
        -------
        bool

        """
        return _Blend.Blend_AppFunction_IsRational(self, *args)

    def IsSolution(self, *args) -> "Standard_Boolean":
        r"""
        Returns standard_true if sol is a zero of the function. tol is the tolerance used in 3d space. the computation is made at the current value of the parameter on the guide line.

        Parameters
        ----------
        Sol: math_Vector
        Tol: float

        Returns
        -------
        bool

        """
        return _Blend.Blend_AppFunction_IsSolution(self, *args)

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

        Parameters
        ----------
        TKnots: TColStd_Array1OfReal

        Returns
        -------
        None

        """
        return _Blend.Blend_AppFunction_Knots(self, *args)

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

        Parameters
        ----------
        TMults: TColStd_Array1OfInteger

        Returns
        -------
        None

        """
        return _Blend.Blend_AppFunction_Mults(self, *args)

    def NbIntervals(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of intervals for continuity <s>. may be one if continuity(me) >= <s>.

        Parameters
        ----------
        S: GeomAbs_Shape

        Returns
        -------
        int

        """
        return _Blend.Blend_AppFunction_NbIntervals(self, *args)

    def Parameter(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter of the point p. used to impose the parameters in the approximation.

        Parameters
        ----------
        P: Blend_Point

        Returns
        -------
        float

        """
        return _Blend.Blend_AppFunction_Parameter(self, *args)

    def Pnt1(self, *args) -> "gp_Pnt const":
        r"""
        Returns the point on the first support.

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_AppFunction_Pnt1(self, *args)

    def Pnt2(self, *args) -> "gp_Pnt const":
        r"""
        Returns the point on the first support.

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_AppFunction_Pnt2(self, *args)

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

        Parameters
        ----------
        IC2d: int
        Tol: float

        Returns
        -------
        TolU: float
        TolV: float

        """
        return _Blend.Blend_AppFunction_Resolution(self, *args)

    def Section(self, *args) -> "Standard_Boolean":
        r"""
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal

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

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        Poles2d: TColgp_Array1OfPnt2d
        Weigths: TColStd_Array1OfReal

        Returns
        -------
        None
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        D2Poles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        D2Poles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal
        D2Weigths: TColStd_Array1OfReal

        Returns
        -------
        bool

        """
        return _Blend.Blend_AppFunction_Section(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Sets the value of the parameter along the guide line. this determines the plane in which the solution has to be found.

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

        Returns
        -------
        None
        Sets the bounds of the parametric interval on the guide line. this determines the derivatives in these values if the function is not cn.

        Parameters
        ----------
        First: float
        Last: float

        Returns
        -------
        None

        """
        return _Blend.Blend_AppFunction_Set(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_AppFunction

# Register Blend_AppFunction in _Blend:
_Blend.Blend_AppFunction_swigregister(Blend_AppFunction)

class Blend_CurvPointFuncInv(OCC.Core.math.math_FunctionSetWithDerivatives):
    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 GetBounds(self, *args) -> "void":
        r"""
        Returns in the vector infbound the lowest values allowed for each of the 3 variables. returns in the vector supbound the greatest values allowed for each of the 3 variables.

        Parameters
        ----------
        InfBound: math_Vector
        SupBound: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_CurvPointFuncInv_GetBounds(self, *args)

    def GetTolerance(self, *args) -> "void":
        r"""
        Returns in the vector tolerance the parametric tolerance for each of the 3 variables; tol is the tolerance used in 3d space.

        Parameters
        ----------
        Tolerance: math_Vector
        Tol: float

        Returns
        -------
        None

        """
        return _Blend.Blend_CurvPointFuncInv_GetTolerance(self, *args)

    def IsSolution(self, *args) -> "Standard_Boolean":
        r"""
        Returns standard_true if sol is a zero of the function. tol is the tolerance used in 3d space.

        Parameters
        ----------
        Sol: math_Vector
        Tol: float

        Returns
        -------
        bool

        """
        return _Blend.Blend_CurvPointFuncInv_IsSolution(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Set the point on which a solution has to be found.

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

        Returns
        -------
        None

        """
        return _Blend.Blend_CurvPointFuncInv_Set(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_CurvPointFuncInv

# Register Blend_CurvPointFuncInv in _Blend:
_Blend.Blend_CurvPointFuncInv_swigregister(Blend_CurvPointFuncInv)

class Blend_FuncInv(OCC.Core.math.math_FunctionSetWithDerivatives):
    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 GetBounds(self, *args) -> "void":
        r"""
        Returns in the vector infbound the lowest values allowed for each of the 4 variables. returns in the vector supbound the greatest values allowed for each of the 4 variables.

        Parameters
        ----------
        InfBound: math_Vector
        SupBound: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_FuncInv_GetBounds(self, *args)

    def GetTolerance(self, *args) -> "void":
        r"""
        Returns in the vector tolerance the parametric tolerance for each of the 4 variables; tol is the tolerance used in 3d space.

        Parameters
        ----------
        Tolerance: math_Vector
        Tol: float

        Returns
        -------
        None

        """
        return _Blend.Blend_FuncInv_GetTolerance(self, *args)

    def IsSolution(self, *args) -> "Standard_Boolean":
        r"""
        Returns standard_true if sol is a zero of the function. tol is the tolerance used in 3d space.

        Parameters
        ----------
        Sol: math_Vector
        Tol: float

        Returns
        -------
        bool

        """
        return _Blend.Blend_FuncInv_IsSolution(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Sets the curveonsurface on which a solution has to be found. if <onfirst> is set to standard_true, the curve will be on the first surface, otherwise the curve is on the second one.

        Parameters
        ----------
        OnFirst: bool
        COnSurf: Adaptor2d_HCurve2d

        Returns
        -------
        None

        """
        return _Blend.Blend_FuncInv_Set(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_FuncInv

# Register Blend_FuncInv in _Blend:
_Blend.Blend_FuncInv_swigregister(Blend_FuncInv)

class Blend_Point(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
        Creates a point on 2 surfaces, with tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        Tg1: gp_Vec
        Tg2: gp_Vec
        Tg12d: gp_Vec2d
        Tg22d: gp_Vec2d

        Returns
        -------
        None
        Creates a point on 2 surfaces, without tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float

        Returns
        -------
        None
        Creates a point on a surface and a curve, with tangents.

        Parameters
        ----------
        Pts: gp_Pnt
        Ptc: gp_Pnt
        Param: float
        U: float
        V: float
        W: float
        Tgs: gp_Vec
        Tgc: gp_Vec
        Tg2d: gp_Vec2d

        Returns
        -------
        None
        Creates a point on a surface and a curve, without tangents.

        Parameters
        ----------
        Pts: gp_Pnt
        Ptc: gp_Pnt
        Param: float
        U: float
        V: float
        W: float

        Returns
        -------
        None
        Creates a point on a surface and a curve on surface, with tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        PC: float
        Tg1: gp_Vec
        Tg2: gp_Vec
        Tg12d: gp_Vec2d
        Tg22d: gp_Vec2d

        Returns
        -------
        None
        Creates a point on a surface and a curve on surface, without tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        PC: float

        Returns
        -------
        None
        Creates a point on two curves on surfaces, with tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        PC1: float
        PC2: float
        Tg1: gp_Vec
        Tg2: gp_Vec
        Tg12d: gp_Vec2d
        Tg22d: gp_Vec2d

        Returns
        -------
        None
        Creates a point on two curves on surfaces, with tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        PC1: float
        PC2: float

        Returns
        -------
        None

        """
        _Blend.Blend_Point_swiginit(self, _Blend.new_Blend_Point(*args))

    def IsTangencyPoint(self, *args) -> "Standard_Boolean":
        r"""
        Returns standard_true if it was not possible to compute the tangent vectors at pointons1 and/or pointons2.

        Returns
        -------
        bool

        """
        return _Blend.Blend_Point_IsTangencyPoint(self, *args)

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

        Returns
        -------
        float

        """
        return _Blend.Blend_Point_Parameter(self, *args)

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

        Returns
        -------
        float

        """
        return _Blend.Blend_Point_ParameterOnC(self, *args)

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

        Returns
        -------
        float

        """
        return _Blend.Blend_Point_ParameterOnC1(self, *args)

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

        Returns
        -------
        float

        """
        return _Blend.Blend_Point_ParameterOnC2(self, *args)

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

        Parameters
        ----------

        Returns
        -------
        U: float
        V: float

        """
        return _Blend.Blend_Point_ParametersOnS(self, *args)

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

        Parameters
        ----------

        Returns
        -------
        U: float
        V: float

        """
        return _Blend.Blend_Point_ParametersOnS1(self, *args)

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

        Parameters
        ----------

        Returns
        -------
        U: float
        V: float

        """
        return _Blend.Blend_Point_ParametersOnS2(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_Point_PointOnC(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_Point_PointOnC1(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_Point_PointOnC2(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_Point_PointOnS(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_Point_PointOnS1(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_Point_PointOnS2(self, *args)

    def SetParameter(self, *args) -> "void":
        r"""
        Changes parameter on existing point.

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

        Returns
        -------
        None

        """
        return _Blend.Blend_Point_SetParameter(self, *args)

    def SetValue(self, *args) -> "void":
        r"""
        Set the values for a point on 2 surfaces, with tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        Tg1: gp_Vec
        Tg2: gp_Vec
        Tg12d: gp_Vec2d
        Tg22d: gp_Vec2d

        Returns
        -------
        None
        Set the values for a point on 2 surfaces, without tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float

        Returns
        -------
        None
        Set the values for a point on a surface and a curve, with tangents.

        Parameters
        ----------
        Pts: gp_Pnt
        Ptc: gp_Pnt
        Param: float
        U: float
        V: float
        W: float
        Tgs: gp_Vec
        Tgc: gp_Vec
        Tg2d: gp_Vec2d

        Returns
        -------
        None
        Set the values for a point on a surface and a curve, without tangents.

        Parameters
        ----------
        Pts: gp_Pnt
        Ptc: gp_Pnt
        Param: float
        U: float
        V: float
        W: float

        Returns
        -------
        None
        Creates a point on a surface and a curve on surface, with tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        PC: float
        Tg1: gp_Vec
        Tg2: gp_Vec
        Tg12d: gp_Vec2d
        Tg22d: gp_Vec2d

        Returns
        -------
        None
        Creates a point on a surface and a curve on surface, without tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        PC: float

        Returns
        -------
        None
        Creates a point on two curves on surfaces, with tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        PC1: float
        PC2: float
        Tg1: gp_Vec
        Tg2: gp_Vec
        Tg12d: gp_Vec2d
        Tg22d: gp_Vec2d

        Returns
        -------
        None
        Creates a point on two curves on surfaces, without tangents.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        U1: float
        V1: float
        U2: float
        V2: float
        PC1: float
        PC2: float

        Returns
        -------
        None
        Creates a point on two curves.

        Parameters
        ----------
        Pt1: gp_Pnt
        Pt2: gp_Pnt
        Param: float
        PC1: float
        PC2: float

        Returns
        -------
        None

        """
        return _Blend.Blend_Point_SetValue(self, *args)

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

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_Point_Tangent2d(self, *args)

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

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_Point_Tangent2dOnS1(self, *args)

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

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_Point_Tangent2dOnS2(self, *args)

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

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_Point_TangentOnC(self, *args)

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

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_Point_TangentOnC1(self, *args)

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

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_Point_TangentOnC2(self, *args)

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

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_Point_TangentOnS(self, *args)

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

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_Point_TangentOnS1(self, *args)

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

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_Point_TangentOnS2(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_Point

# Register Blend_Point in _Blend:
_Blend.Blend_Point_swigregister(Blend_Point)

class Blend_SurfCurvFuncInv(OCC.Core.math.math_FunctionSetWithDerivatives):
    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 GetBounds(self, *args) -> "void":
        r"""
        Returns in the vector infbound the lowest values allowed for each of the 3 variables. returns in the vector supbound the greatest values allowed for each of the 3 variables.

        Parameters
        ----------
        InfBound: math_Vector
        SupBound: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfCurvFuncInv_GetBounds(self, *args)

    def GetTolerance(self, *args) -> "void":
        r"""
        Returns in the vector tolerance the parametric tolerance for each of the 3 variables; tol is the tolerance used in 3d space.

        Parameters
        ----------
        Tolerance: math_Vector
        Tol: float

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfCurvFuncInv_GetTolerance(self, *args)

    def IsSolution(self, *args) -> "Standard_Boolean":
        r"""
        Returns standard_true if sol is a zero of the function. tol is the tolerance used in 3d space.

        Parameters
        ----------
        Sol: math_Vector
        Tol: float

        Returns
        -------
        bool

        """
        return _Blend.Blend_SurfCurvFuncInv_IsSolution(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Set the point on which a solution has to be found.

        Parameters
        ----------
        Rst: Adaptor2d_HCurve2d

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfCurvFuncInv_Set(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_SurfCurvFuncInv

# Register Blend_SurfCurvFuncInv in _Blend:
_Blend.Blend_SurfCurvFuncInv_swigregister(Blend_SurfCurvFuncInv)

class Blend_SurfPointFuncInv(OCC.Core.math.math_FunctionSetWithDerivatives):
    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 GetBounds(self, *args) -> "void":
        r"""
        Returns in the vector infbound the lowest values allowed for each of the 3 variables. returns in the vector supbound the greatest values allowed for each of the 3 variables.

        Parameters
        ----------
        InfBound: math_Vector
        SupBound: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfPointFuncInv_GetBounds(self, *args)

    def GetTolerance(self, *args) -> "void":
        r"""
        Returns in the vector tolerance the parametric tolerance for each of the 3 variables; tol is the tolerance used in 3d space.

        Parameters
        ----------
        Tolerance: math_Vector
        Tol: float

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfPointFuncInv_GetTolerance(self, *args)

    def IsSolution(self, *args) -> "Standard_Boolean":
        r"""
        Returns standard_true if sol is a zero of the function. tol is the tolerance used in 3d space.

        Parameters
        ----------
        Sol: math_Vector
        Tol: float

        Returns
        -------
        bool

        """
        return _Blend.Blend_SurfPointFuncInv_IsSolution(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Set the point on which a solution has to be found.

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

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfPointFuncInv_Set(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_SurfPointFuncInv

# Register Blend_SurfPointFuncInv in _Blend:
_Blend.Blend_SurfPointFuncInv_swigregister(Blend_SurfPointFuncInv)

class Blend_CSFunction(Blend_AppFunction):
    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 GetTolerance(self, *args) -> "void":
        r"""
        Returns in the vector tolerance the parametric tolerance for each of the 3 variables; tol is the tolerance used in 3d space.

        Parameters
        ----------
        Tolerance: math_Vector
        Tol: float

        Returns
        -------
        None
        Returns the tolerance to reach in approximation to respecte boundtol error at the boundary angletol tangent error at the boundary surftol error inside the surface.

        Parameters
        ----------
        BoundTol: float
        SurfTol: float
        AngleTol: float
        Tol3d: math_Vector
        Tol1D: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_CSFunction_GetTolerance(self, *args)

    def IsTangencyPoint(self, *args) -> "Standard_Boolean":
        r"""
        Returns true when it is not possible to compute the tangent vectors at pointons and/or pointonc.

        Returns
        -------
        bool

        """
        return _Blend.Blend_CSFunction_IsTangencyPoint(self, *args)

    def ParameterOnC(self, *args) -> "Standard_Real":
        r"""
        Returns parameter of the point on the curve.

        Returns
        -------
        float

        """
        return _Blend.Blend_CSFunction_ParameterOnC(self, *args)

    def Pnt2d(self, *args) -> "gp_Pnt2d const":
        r"""
        Returns u,v coordinates of the point on the surface.

        Returns
        -------
        gp_Pnt2d

        """
        return _Blend.Blend_CSFunction_Pnt2d(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_CSFunction_PointOnC(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_CSFunction_PointOnS(self, *args)

    def Section(self, *args) -> "Standard_Boolean":
        r"""
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal

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

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        Poles2d: TColgp_Array1OfPnt2d
        Weigths: TColStd_Array1OfReal

        Returns
        -------
        None
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        D2Poles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        D2Poles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal
        D2Weigths: TColStd_Array1OfReal

        Returns
        -------
        bool

        """
        return _Blend.Blend_CSFunction_Section(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Sets the value of the parameter along the guide line. this determines the plane in which the solution has to be found.

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

        Returns
        -------
        None
        Sets the bounds of the parametric interval on the guide line. this determines the derivatives in these values if the function is not cn.

        Parameters
        ----------
        First: float
        Last: float

        Returns
        -------
        None

        """
        return _Blend.Blend_CSFunction_Set(self, *args)

    def Tangent(self, *args) -> "void":
        r"""
        Returns the tangent vector at the section, at the beginning and the end of the section, and returns the normal (of the surfaces) at these points.

        Parameters
        ----------
        U: float
        V: float
        TgS: gp_Vec
        NormS: gp_Vec

        Returns
        -------
        None

        """
        return _Blend.Blend_CSFunction_Tangent(self, *args)

    def Tangent2d(self, *args) -> "gp_Vec2d const":
        r"""
        Returns the tangent vector at pointons, in the parametric space of the first surface.

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_CSFunction_Tangent2d(self, *args)

    def TangentOnC(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent vector at pointonc, in 3d space.

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_CSFunction_TangentOnC(self, *args)

    def TangentOnS(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent vector at pointons, in 3d space.

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_CSFunction_TangentOnS(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_CSFunction

# Register Blend_CSFunction in _Blend:
_Blend.Blend_CSFunction_swigregister(Blend_CSFunction)

class Blend_Function(Blend_AppFunction):
    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 IsTangencyPoint(self, *args) -> "Standard_Boolean":
        r"""
        Returns true when it is not possible to compute the tangent vectors at pointons1 and/or pointons2.

        Returns
        -------
        bool

        """
        return _Blend.Blend_Function_IsTangencyPoint(self, *args)

    def PointOnS1(self, *args) -> "gp_Pnt const":
        r"""
        Returns the point on the first surface, at parameter sol(1),sol(2) (sol is the vector used in the call of issolution.

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_Function_PointOnS1(self, *args)

    def PointOnS2(self, *args) -> "gp_Pnt const":
        r"""
        Returns the point on the second surface, at parameter sol(3),sol(4) (sol is the vector used in the call of issolution.

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_Function_PointOnS2(self, *args)

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

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        Poles2d: TColgp_Array1OfPnt2d
        Weigths: TColStd_Array1OfReal

        Returns
        -------
        None
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        D2Poles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        D2Poles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal
        D2Weigths: TColStd_Array1OfReal

        Returns
        -------
        bool

        """
        return _Blend.Blend_Function_Section(self, *args)

    def Tangent(self, *args) -> "void":
        r"""
        Returns the tangent vector at the section, at the beginning and the end of the section, and returns the normal (of the surfaces) at these points.

        Parameters
        ----------
        U1: float
        V1: float
        U2: float
        V2: float
        TgFirst: gp_Vec
        TgLast: gp_Vec
        NormFirst: gp_Vec
        NormLast: gp_Vec

        Returns
        -------
        None

        """
        return _Blend.Blend_Function_Tangent(self, *args)

    def Tangent2dOnS1(self, *args) -> "gp_Vec2d const":
        r"""
        Returns the tangent vector at pointons1, in the parametric space of the first surface.

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_Function_Tangent2dOnS1(self, *args)

    def Tangent2dOnS2(self, *args) -> "gp_Vec2d const":
        r"""
        Returns the tangent vector at pointons2, in the parametric space of the second surface.

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_Function_Tangent2dOnS2(self, *args)

    def TangentOnS1(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent vector at pointons1, in 3d space.

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_Function_TangentOnS1(self, *args)

    def TangentOnS2(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent vector at pointons2, in 3d space.

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_Function_TangentOnS2(self, *args)

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

        Returns
        -------
        bool

        """
        return _Blend.Blend_Function_TwistOnS1(self, *args)

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

        Returns
        -------
        bool

        """
        return _Blend.Blend_Function_TwistOnS2(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_Function

# Register Blend_Function in _Blend:
_Blend.Blend_Function_swigregister(Blend_Function)

class Blend_RstRstFunction(Blend_AppFunction):
    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 Decroch(self, *args) -> "Blend_DecrochStatus":
        r"""
        Enables to implement a criterion of decrochage specific to the function. warning: can be called without previous call of issolution but the values calculated can be senseless.

        Parameters
        ----------
        Sol: math_Vector
        NRst1: gp_Vec
        TgRst1: gp_Vec
        NRst2: gp_Vec
        TgRst2: gp_Vec

        Returns
        -------
        Blend_DecrochStatus

        """
        return _Blend.Blend_RstRstFunction_Decroch(self, *args)

    def GetTolerance(self, *args) -> "void":
        r"""
        Returns in the vector tolerance the parametric tolerance for each variable; tol is the tolerance used in 3d space.

        Parameters
        ----------
        Tolerance: math_Vector
        Tol: float

        Returns
        -------
        None
        Returns the tolerance to reach in approximation to respecte boundtol error at the boundary angletol tangent error at the boundary surftol error inside the surface.

        Parameters
        ----------
        BoundTol: float
        SurfTol: float
        AngleTol: float
        Tol3d: math_Vector
        Tol1D: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_RstRstFunction_GetTolerance(self, *args)

    def IsTangencyPoint(self, *args) -> "Standard_Boolean":
        r"""
        Returns true when it is not possible to compute the tangent vectors at pointons and/or pointonrst.

        Returns
        -------
        bool

        """
        return _Blend.Blend_RstRstFunction_IsTangencyPoint(self, *args)

    def ParameterOnRst1(self, *args) -> "Standard_Real":
        r"""
        Returns parameter of the point on the curve.

        Returns
        -------
        float

        """
        return _Blend.Blend_RstRstFunction_ParameterOnRst1(self, *args)

    def ParameterOnRst2(self, *args) -> "Standard_Real":
        r"""
        Returns parameter of the point on the curve.

        Returns
        -------
        float

        """
        return _Blend.Blend_RstRstFunction_ParameterOnRst2(self, *args)

    def Pnt2dOnRst1(self, *args) -> "gp_Pnt2d const":
        r"""
        Returns u,v coordinates of the point on the surface.

        Returns
        -------
        gp_Pnt2d

        """
        return _Blend.Blend_RstRstFunction_Pnt2dOnRst1(self, *args)

    def Pnt2dOnRst2(self, *args) -> "gp_Pnt2d const":
        r"""
        Returns u,v coordinates of the point on the curve on surface.

        Returns
        -------
        gp_Pnt2d

        """
        return _Blend.Blend_RstRstFunction_Pnt2dOnRst2(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_RstRstFunction_PointOnRst1(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_RstRstFunction_PointOnRst2(self, *args)

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

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        Poles2d: TColgp_Array1OfPnt2d
        Weigths: TColStd_Array1OfReal

        Returns
        -------
        None
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal

        Returns
        -------
        bool
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        D2Poles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        D2Poles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal
        D2Weigths: TColStd_Array1OfReal

        Returns
        -------
        bool

        """
        return _Blend.Blend_RstRstFunction_Section(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Sets the value of the parameter along the guide line. this determines the plane in which the solution has to be found.

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

        Returns
        -------
        None
        Sets the bounds of the parametric interval on the guide line. this determines the derivatives in these values if the function is not cn.

        Parameters
        ----------
        First: float
        Last: float

        Returns
        -------
        None

        """
        return _Blend.Blend_RstRstFunction_Set(self, *args)

    def Tangent2dOnRst1(self, *args) -> "gp_Vec2d const":
        r"""
        Returns the tangent vector at pointons, in the parametric space of the first surface.

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_RstRstFunction_Tangent2dOnRst1(self, *args)

    def Tangent2dOnRst2(self, *args) -> "gp_Vec2d const":
        r"""
        Returns the tangent vector at pointonrst, in the parametric space of the second surface.

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_RstRstFunction_Tangent2dOnRst2(self, *args)

    def TangentOnRst1(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent vector at pointons, in 3d space.

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_RstRstFunction_TangentOnRst1(self, *args)

    def TangentOnRst2(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent vector at pointonc, in 3d space.

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_RstRstFunction_TangentOnRst2(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_RstRstFunction

# Register Blend_RstRstFunction in _Blend:
_Blend.Blend_RstRstFunction_swigregister(Blend_RstRstFunction)

class Blend_SurfRstFunction(Blend_AppFunction):
    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 Decroch(self, *args) -> "Standard_Boolean":
        r"""
        Enables implementation of a criterion of decrochage specific to the function.

        Parameters
        ----------
        Sol: math_Vector
        NS: gp_Vec
        TgS: gp_Vec

        Returns
        -------
        bool

        """
        return _Blend.Blend_SurfRstFunction_Decroch(self, *args)

    def GetTolerance(self, *args) -> "void":
        r"""
        Returns in the vector tolerance the parametric tolerance for each variable; tol is the tolerance used in 3d space.

        Parameters
        ----------
        Tolerance: math_Vector
        Tol: float

        Returns
        -------
        None
        Returns the tolerance to reach in approximation to respecte boundtol error at the boundary angletol tangent error at the boundary surftol error inside the surface.

        Parameters
        ----------
        BoundTol: float
        SurfTol: float
        AngleTol: float
        Tol3d: math_Vector
        Tol1D: math_Vector

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfRstFunction_GetTolerance(self, *args)

    def IsTangencyPoint(self, *args) -> "Standard_Boolean":
        r"""
        Returns true when it is not possible to compute the tangent vectors at pointons and/or pointonrst.

        Returns
        -------
        bool

        """
        return _Blend.Blend_SurfRstFunction_IsTangencyPoint(self, *args)

    def ParameterOnRst(self, *args) -> "Standard_Real":
        r"""
        Returns parameter of the point on the curve.

        Returns
        -------
        float

        """
        return _Blend.Blend_SurfRstFunction_ParameterOnRst(self, *args)

    def Pnt2dOnRst(self, *args) -> "gp_Pnt2d const":
        r"""
        Returns u,v coordinates of the point on the curve on surface.

        Returns
        -------
        gp_Pnt2d

        """
        return _Blend.Blend_SurfRstFunction_Pnt2dOnRst(self, *args)

    def Pnt2dOnS(self, *args) -> "gp_Pnt2d const":
        r"""
        Returns u,v coordinates of the point on the surface.

        Returns
        -------
        gp_Pnt2d

        """
        return _Blend.Blend_SurfRstFunction_Pnt2dOnS(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_SurfRstFunction_PointOnRst(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _Blend.Blend_SurfRstFunction_PointOnS(self, *args)

    def Section(self, *args) -> "void":
        r"""
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal

        Returns
        -------
        bool
        Used for the first and last section the method returns standard_true if the derivatives are computed, otherwise it returns standard_false.

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        DPoles: TColgp_Array1OfVec
        D2Poles: TColgp_Array1OfVec
        Poles2d: TColgp_Array1OfPnt2d
        DPoles2d: TColgp_Array1OfVec2d
        D2Poles2d: TColgp_Array1OfVec2d
        Weigths: TColStd_Array1OfReal
        DWeigths: TColStd_Array1OfReal
        D2Weigths: TColStd_Array1OfReal

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

        Parameters
        ----------
        P: Blend_Point
        Poles: TColgp_Array1OfPnt
        Poles2d: TColgp_Array1OfPnt2d
        Weigths: TColStd_Array1OfReal

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfRstFunction_Section(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Sets the value of the parameter along the guide line. this determines the plane in which the solution has to be found.

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

        Returns
        -------
        None
        Sets the bounds of the parametric interval on the guide line. this determines the derivatives in these values if the function is not cn.

        Parameters
        ----------
        First: float
        Last: float

        Returns
        -------
        None

        """
        return _Blend.Blend_SurfRstFunction_Set(self, *args)

    def Tangent2dOnRst(self, *args) -> "gp_Vec2d const":
        r"""
        Returns the tangent vector at pointonrst, in the parametric space of the second surface.

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_SurfRstFunction_Tangent2dOnRst(self, *args)

    def Tangent2dOnS(self, *args) -> "gp_Vec2d const":
        r"""
        Returns the tangent vector at pointons, in the parametric space of the first surface.

        Returns
        -------
        gp_Vec2d

        """
        return _Blend.Blend_SurfRstFunction_Tangent2dOnS(self, *args)

    def TangentOnRst(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent vector at pointonc, in 3d space.

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_SurfRstFunction_TangentOnRst(self, *args)

    def TangentOnS(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent vector at pointons, in 3d space.

        Returns
        -------
        gp_Vec

        """
        return _Blend.Blend_SurfRstFunction_TangentOnS(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Blend.delete_Blend_SurfRstFunction

# Register Blend_SurfRstFunction in _Blend:
_Blend.Blend_SurfRstFunction_swigregister(Blend_SurfRstFunction)





