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

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

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


def process_exception(error, method_name, class_name):
    return _Law.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.TColStd
import OCC.Core.TCollection
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.gp
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 *




def Handle_Law_BSpline_Create():
    return _Law.Handle_Law_BSpline_Create()

def Handle_Law_BSpline_DownCast(t):
    return _Law.Handle_Law_BSpline_DownCast(t)

def Handle_Law_BSpline_IsNull(t):
    return _Law.Handle_Law_BSpline_IsNull(t)

def Handle_Law_Function_Create():
    return _Law.Handle_Law_Function_Create()

def Handle_Law_Function_DownCast(t):
    return _Law.Handle_Law_Function_DownCast(t)

def Handle_Law_Function_IsNull(t):
    return _Law.Handle_Law_Function_IsNull(t)

def Handle_Law_BSpFunc_Create():
    return _Law.Handle_Law_BSpFunc_Create()

def Handle_Law_BSpFunc_DownCast(t):
    return _Law.Handle_Law_BSpFunc_DownCast(t)

def Handle_Law_BSpFunc_IsNull(t):
    return _Law.Handle_Law_BSpFunc_IsNull(t)

def Handle_Law_Composite_Create():
    return _Law.Handle_Law_Composite_Create()

def Handle_Law_Composite_DownCast(t):
    return _Law.Handle_Law_Composite_DownCast(t)

def Handle_Law_Composite_IsNull(t):
    return _Law.Handle_Law_Composite_IsNull(t)

def Handle_Law_Constant_Create():
    return _Law.Handle_Law_Constant_Create()

def Handle_Law_Constant_DownCast(t):
    return _Law.Handle_Law_Constant_DownCast(t)

def Handle_Law_Constant_IsNull(t):
    return _Law.Handle_Law_Constant_IsNull(t)

def Handle_Law_Linear_Create():
    return _Law.Handle_Law_Linear_Create()

def Handle_Law_Linear_DownCast(t):
    return _Law.Handle_Law_Linear_DownCast(t)

def Handle_Law_Linear_IsNull(t):
    return _Law.Handle_Law_Linear_IsNull(t)

def Handle_Law_Interpol_Create():
    return _Law.Handle_Law_Interpol_Create()

def Handle_Law_Interpol_DownCast(t):
    return _Law.Handle_Law_Interpol_DownCast(t)

def Handle_Law_Interpol_IsNull(t):
    return _Law.Handle_Law_Interpol_IsNull(t)

def Handle_Law_S_Create():
    return _Law.Handle_Law_S_Create()

def Handle_Law_S_DownCast(t):
    return _Law.Handle_Law_S_DownCast(t)

def Handle_Law_S_IsNull(t):
    return _Law.Handle_Law_S_IsNull(t)
class Law_Laws(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):
        return _Law.Law_Laws_begin(self)

    def end(self):
        return _Law.Law_Laws_end(self)

    def cbegin(self):
        return _Law.Law_Laws_cbegin(self)

    def cend(self):
        return _Law.Law_Laws_cend(self)

    def __init__(self, *args):
        _Law.Law_Laws_swiginit(self, _Law.new_Law_Laws(*args))

    def Size(self):
        return _Law.Law_Laws_Size(self)

    def Assign(self, theOther):
        return _Law.Law_Laws_Assign(self, theOther)

    def Set(self, theOther):
        return _Law.Law_Laws_Set(self, theOther)

    def Clear(self, theAllocator=0):
        return _Law.Law_Laws_Clear(self, theAllocator)

    def First(self):
        return _Law.Law_Laws_First(self)

    def Last(self):
        return _Law.Law_Laws_Last(self)

    def Append(self, *args):
        return _Law.Law_Laws_Append(self, *args)

    def Prepend(self, *args):
        return _Law.Law_Laws_Prepend(self, *args)

    def RemoveFirst(self):
        return _Law.Law_Laws_RemoveFirst(self)

    def Remove(self, theIter):
        return _Law.Law_Laws_Remove(self, theIter)

    def InsertBefore(self, *args):
        return _Law.Law_Laws_InsertBefore(self, *args)

    def InsertAfter(self, *args):
        return _Law.Law_Laws_InsertAfter(self, *args)

    def Reverse(self):
        return _Law.Law_Laws_Reverse(self)
    __swig_destroy__ = _Law.delete_Law_Laws

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


# Register Law_Laws in _Law:
_Law.Law_Laws_swigregister(Law_Laws)
class Law_ListIteratorOfLaws(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):
        _Law.Law_ListIteratorOfLaws_swiginit(self, _Law.new_Law_ListIteratorOfLaws(*args))

    def More(self):
        return _Law.Law_ListIteratorOfLaws_More(self)

    def Next(self):
        return _Law.Law_ListIteratorOfLaws_Next(self)

    def Value(self):
        return _Law.Law_ListIteratorOfLaws_Value(self)

    def ChangeValue(self):
        return _Law.Law_ListIteratorOfLaws_ChangeValue(self)
    __swig_destroy__ = _Law.delete_Law_ListIteratorOfLaws

# Register Law_ListIteratorOfLaws in _Law:
_Law.Law_ListIteratorOfLaws_swigregister(Law_ListIteratorOfLaws)
class law(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def MixBnd(*args):
        r"""

        Parameters
        ----------
        Lin: Law_Linear

        Return
        -------
        opencascade::handle<Law_BSpFunc>

        Description
        -----------
        This algorithm searches the knot values corresponding to the splitting of a given b-spline law into several arcs with the same continuity. the continuity order is given at the construction time. builds a 1d bspline that is near from lin with null derivatives at the extremities.

        Parameters
        ----------
        Degree: int
        Knots: TColStd_Array1OfReal
        Mults: TColStd_Array1OfInteger
        Lin: Law_Linear

        Return
        -------
        opencascade::handle<TColStd_HArray1OfReal>

        Description
        -----------
        Builds the poles of the 1d bspline that is near from lin with null derivatives at the extremities.

        """
        return _Law.law_MixBnd(*args)

    @staticmethod
    def MixTgt(*args):
        r"""

        Parameters
        ----------
        Degree: int
        Knots: TColStd_Array1OfReal
        Mults: TColStd_Array1OfInteger
        NulOnTheRight: bool
        Index: int

        Return
        -------
        opencascade::handle<TColStd_HArray1OfReal>

        Description
        -----------
        Builds the poles of the 1d bspline that is null on the right side of knots(index) (on the left if nulontheright is false) and that is like a t*(1-t)(1-t) curve on the left side of knots(index) (on the right if nulontheright is false). the result curve is c1 with a derivative equal to 1. at first parameter (-1 at last parameter if nulontheright is false). warning: mults(index) must greater or equal to degree-1.

        """
        return _Law.law_MixTgt(*args)

    @staticmethod
    def Reparametrize(*args):
        r"""

        Parameters
        ----------
        Curve: Adaptor3d_Curve
        First: float
        Last: float
        HasDF: bool
        HasDL: bool
        DFirst: float
        DLast: float
        Rev: bool
        NbPoints: int

        Return
        -------
        opencascade::handle<Law_BSpline>

        Description
        -----------
        Computes a 1 d curve to reparametrize a curve. its an interpolation of nbpoints points calculated at quasi constant abscissa.

        """
        return _Law.law_Reparametrize(*args)

    @staticmethod
    def Scale(*args):
        r"""

        Parameters
        ----------
        First: float
        Last: float
        HasF: bool
        HasL: bool
        VFirst: float
        VLast: float

        Return
        -------
        opencascade::handle<Law_BSpline>

        Description
        -----------
        Computes a 1 d curve to scale a field of tangency. value is 1. for t = (first+last)/2 . if hasfirst value for t = first is vfirst (null derivative). if haslast value for t = last is vlast (null derivative). //! 1.  _ _/ \_ __/ \__ / vfirst ____/  vlast \____ first  last.

        """
        return _Law.law_Scale(*args)

    @staticmethod
    def ScaleCub(*args):
        r"""

        Parameters
        ----------
        First: float
        Last: float
        HasF: bool
        HasL: bool
        VFirst: float
        VLast: float

        Return
        -------
        opencascade::handle<Law_BSpline>

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

        """
        return _Law.law_ScaleCub(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _Law.law_swiginit(self, _Law.new_law())
    __swig_destroy__ = _Law.delete_law

# Register law in _Law:
_Law.law_swigregister(law)
class Law_BSpline(OCC.Core.Standard.Standard_Transient):
    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"""

        Parameters
        ----------
        Poles: TColStd_Array1OfReal
        Knots: TColStd_Array1OfReal
        Multiplicities: TColStd_Array1OfInteger
        Degree: int
        Periodic: bool (optional, default to Standard_False)

        Return
        -------
        None

        Description
        -----------
        Creates a non-rational b_spline curve on the basis <knots, multiplicities> of degree <degree>.

        Parameters
        ----------
        Poles: TColStd_Array1OfReal
        Weights: TColStd_Array1OfReal
        Knots: TColStd_Array1OfReal
        Multiplicities: TColStd_Array1OfInteger
        Degree: int
        Periodic: bool (optional, default to Standard_False)

        Return
        -------
        None

        Description
        -----------
        Creates a rational b_spline curve on the basis <knots, multiplicities> of degree <degree>.

        """
        _Law.Law_BSpline_swiginit(self, _Law.new_Law_BSpline(*args))

    def Continuity(self, *args):
        r"""
        Return
        -------
        GeomAbs_Shape

        Description
        -----------
        Returns the global continuity of the curve: c0: only geometric continuity, c1: continuity of the first derivative all along the curve, c2: continuity of the second derivative all along the curve, c3: continuity of the third derivative all along the curve, cn: the order of continuity is infinite. for a b-spline curve of degree d if a knot ui has a multiplicity p the b-spline curve is only cd-p continuous at ui. so the global continuity of the curve can't be greater than cd-p where p is the maximum multiplicity of the interior knots. in the interior of a knot span the curve is infinitely continuously differentiable.

        """
        return _Law.Law_BSpline_Continuity(self, *args)

    def Copy(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Law_BSpline>

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

        """
        return _Law.Law_BSpline_Copy(self, *args)

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

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

        Return
        -------
        P: float

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

        """
        return _Law.Law_BSpline_D0(self, *args)

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

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

        Return
        -------
        P: float
        V1: float

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

        """
        return _Law.Law_BSpline_D1(self, *args)

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

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

        Return
        -------
        P: float
        V1: float
        V2: float

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

        """
        return _Law.Law_BSpline_D2(self, *args)

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

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

        Return
        -------
        P: float
        V1: float
        V2: float
        V3: float

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

        """
        return _Law.Law_BSpline_D3(self, *args)

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

        Parameters
        ----------
        U: float
        N: int

        Return
        -------
        float

        Description
        -----------
        The following functions computes the point of parameter u and the derivatives at this point on the b-spline curve arc defined between the knot fromk1 and the knot tok2. u can be out of bounds [knot (fromk1), knot (tok2)] but for the computation we only use the definition of the curve between these two knots. this method is useful to compute local derivative, if the order of continuity of the whole curve is not greater enough. inside the parametric domain knot (fromk1), knot (tok2) the evaluations are the same as if we consider the whole definition of the curve. of course the evaluations are different outside this parametric domain.

        """
        return _Law.Law_BSpline_DN(self, *args)

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

        Description
        -----------
        Computation of value and derivatives.

        """
        return _Law.Law_BSpline_Degree(self, *args)

    def EndPoint(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the last point of the curve. warnings: the last point of the curve is different from the last pole of the curve if the multiplicity of the last knot is lower than degree.

        """
        return _Law.Law_BSpline_EndPoint(self, *args)

    def FirstParameter(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the parametric value of the start point of the curve. it is a knot value.

        """
        return _Law.Law_BSpline_FirstParameter(self, *args)

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

        Description
        -----------
        For a b-spline curve the first parameter (which gives the start point of the curve) is a knot value but if the multiplicity of the first knot index is lower than degree + 1 it is not the first knot of the curve. this method computes the index of the knot corresponding to the first parameter.

        """
        return _Law.Law_BSpline_FirstUKnotIndex(self, *args)

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

        Parameters
        ----------
        Degree: int

        Return
        -------
        None

        Description
        -----------
        Increase the degree to <degree>. nothing is done if <degree> is lower or equal to the current degree.

        """
        return _Law.Law_BSpline_IncreaseDegree(self, *args)

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

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

        Return
        -------
        None

        Description
        -----------
        Increases the multiplicity of the knot <index> to <m>. //! if <m> is lower or equal to the current multiplicity nothing is done. if <m> is higher than the degree the degree is used. if <index> is not in [firstuknotindex, lastuknotindex].

        Parameters
        ----------
        I1: int
        I2: int
        M: int

        Return
        -------
        None

        Description
        -----------
        Increases the multiplicities of the knots in [i1,i2] to <m>. //! for each knot if <m> is lower or equal to the current multiplicity nothing is done. if <m> is higher than the degree the degree is used. if <i1,i2> are not in [firstuknotindex, lastuknotindex].

        """
        return _Law.Law_BSpline_IncreaseMultiplicity(self, *args)

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

        Parameters
        ----------
        I1: int
        I2: int
        M: int

        Return
        -------
        None

        Description
        -----------
        Increment the multiplicities of the knots in [i1,i2] by <m>. //! if <m> is not positive nithing is done. //! for each knot the resulting multiplicity is limited to the degree. if <i1,i2> are not in [firstuknotindex, lastuknotindex].

        """
        return _Law.Law_BSpline_IncrementMultiplicity(self, *args)

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

        Parameters
        ----------
        U: float
        M: int (optional, default to 1)
        ParametricTolerance: float (optional, default to 0.0)
        Add: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Inserts a knot value in the sequence of knots. if <u> is an existing knot the multiplicity is increased by <m>. //! if u is not on the parameter range nothing is done. //! if the multiplicity is negative or null nothing is done. the new multiplicity is limited to the degree. //! the tolerance criterion for knots equality is the max of epsilon(u) and parametrictolerance.

        """
        return _Law.Law_BSpline_InsertKnot(self, *args)

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

        Parameters
        ----------
        Knots: TColStd_Array1OfReal
        Mults: TColStd_Array1OfInteger
        ParametricTolerance: float (optional, default to 0.0)
        Add: bool (optional, default to Standard_False)

        Return
        -------
        None

        Description
        -----------
        Inserts a set of knots values in the sequence of knots. //! for each u = knots(i), m = mults(i) //! if <u> is an existing knot the multiplicity is increased by <m> if <add> is true, increased to <m> if <add> is false. //! if u is not on the parameter range nothing is done. //! if the multiplicity is negative or null nothing is done. the new multiplicity is limited to the degree. //! the tolerance criterion for knots equality is the max of epsilon(u) and parametrictolerance.

        """
        return _Law.Law_BSpline_InsertKnots(self, *args)

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

        Parameters
        ----------
        N: int

        Return
        -------
        bool

        Description
        -----------
        Returns the continuity of the curve, the curve is at least c0. raised if n < 0.

        """
        return _Law.Law_BSpline_IsCN(self, *args)

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

        Description
        -----------
        Returns true if the distance between the first point and the last point of the curve is lower or equal to resolution from package gp. warnings: the first and the last point can be different from the first pole and the last pole of the curve.

        """
        return _Law.Law_BSpline_IsClosed(self, *args)

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

        Description
        -----------
        Returns true if the curve is periodic.

        """
        return _Law.Law_BSpline_IsPeriodic(self, *args)

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

        Description
        -----------
        Returns true if the weights are not identical. the tolerance criterion is epsilon of the class real.

        """
        return _Law.Law_BSpline_IsRational(self, *args)

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

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

        Return
        -------
        float

        Description
        -----------
        Returns the knot of range index. when there is a knot with a multiplicity greater than 1 the knot is not repeated. the method multiplicity can be used to get the multiplicity of the knot. raised if index < 1 or index > nbknots.

        """
        return _Law.Law_BSpline_Knot(self, *args)

    def KnotDistribution(self, *args):
        r"""
        Return
        -------
        GeomAbs_BSplKnotDistribution

        Description
        -----------
        Returns nonuniform or uniform or quasiuniform or piecewisebezier. if all the knots differ by a positive constant from the preceding knot the bspline curve can be: - uniform if all the knots are of multiplicity 1, - quasiuniform if all the knots are of multiplicity 1 except for the first and last knot which are of multiplicity degree + 1, - piecewisebezier if the first and last knots have multiplicity degree + 1 and if interior knots have multiplicity degree a piecewise bezier with only two knots is a beziercurve. else the curve is non uniform. the tolerance criterion is epsilon from class real.

        """
        return _Law.Law_BSpline_KnotDistribution(self, *args)

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

        Parameters
        ----------
        K: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Returns the knots sequence. in this sequence the knots with a multiplicity greater than 1 are repeated. example: k = {k1, k1, k1, k2, k3, k3, k4, k4, k4} //! raised if the length of k is not equal to nbpoles + degree + 1.

        """
        return _Law.Law_BSpline_KnotSequence(self, *args)

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

        Parameters
        ----------
        K: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Returns the knot values of the b-spline curve; //! raised if the length of k is not equal to the number of knots.

        """
        return _Law.Law_BSpline_Knots(self, *args)

    def LastParameter(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Computes the parametric value of the end point of the curve. it is a knot value.

        """
        return _Law.Law_BSpline_LastParameter(self, *args)

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

        Description
        -----------
        For a bspline curve the last parameter (which gives the end point of the curve) is a knot value but if the multiplicity of the last knot index is lower than degree + 1 it is not the last knot of the curve. this method computes the index of the knot corresponding to the last parameter.

        """
        return _Law.Law_BSpline_LastUKnotIndex(self, *args)

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

        Parameters
        ----------
        U: float
        FromK1: int
        ToK2: int

        Return
        -------
        P: float

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

        """
        return _Law.Law_BSpline_LocalD0(self, *args)

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

        Parameters
        ----------
        U: float
        FromK1: int
        ToK2: int

        Return
        -------
        P: float
        V1: float

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

        """
        return _Law.Law_BSpline_LocalD1(self, *args)

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

        Parameters
        ----------
        U: float
        FromK1: int
        ToK2: int

        Return
        -------
        P: float
        V1: float
        V2: float

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

        """
        return _Law.Law_BSpline_LocalD2(self, *args)

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

        Parameters
        ----------
        U: float
        FromK1: int
        ToK2: int

        Return
        -------
        P: float
        V1: float
        V2: float
        V3: float

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

        """
        return _Law.Law_BSpline_LocalD3(self, *args)

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

        Parameters
        ----------
        U: float
        FromK1: int
        ToK2: int
        N: int

        Return
        -------
        float

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

        """
        return _Law.Law_BSpline_LocalDN(self, *args)

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

        Parameters
        ----------
        U: float
        FromK1: int
        ToK2: int

        Return
        -------
        float

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

        """
        return _Law.Law_BSpline_LocalValue(self, *args)

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

        Parameters
        ----------
        U: float
        ParametricTolerance: float
        WithKnotRepetition: bool (optional, default to Standard_False)

        Return
        -------
        I1: int
        I2: int

        Description
        -----------
        Locates the parametric value u in the sequence of knots. if 'withknotrepetition' is true we consider the knot's representation with repetition of multiple knot value, otherwise we consider the knot's representation with no repetition of multiple knot values. knots (i1) <= u <= knots (i2) . if i1 = i2 u is a knot value (the tolerance criterion parametrictolerance is used). . if i1 < 1 => u < knots (1) - abs(parametrictolerance) . if i2 > nbknots => u > knots (nbknots) + abs(parametrictolerance).

        """
        return _Law.Law_BSpline_LocateU(self, *args)

    @staticmethod
    def MaxDegree(*args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the value of the maximum degree of the normalized b-spline basis functions in this package.

        """
        return _Law.Law_BSpline_MaxDegree(*args)

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

        Parameters
        ----------
        U: float
        NewValue: float
        Derivative: float
        Tolerance: float
        StartingCondition: int
        EndingCondition: int

        Return
        -------
        ErrorStatus: int

        Description
        -----------
        Changes the value of the law at parameter u to newvalue. and makes its derivative at u be derivative. startingcondition = -1 means first can move endingcondition = -1 means last point can move startingcondition = 0 means the first point cannot move endingcondition = 0 means the last point cannot move startingcondition = 1 means the first point and tangent cannot move endingcondition = 1 means the last point and tangent cannot move and so forth errorstatus != 0 means that there are not enough degree of freedom with the constrain to deform the curve accordingly.

        """
        return _Law.Law_BSpline_MovePointAndTangent(self, *args)

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

        Parameters
        ----------
        M: TColStd_Array1OfInteger

        Return
        -------
        None

        Description
        -----------
        Returns the multiplicity of the knots of the curve. //! raised if the length of m is not equal to nbknots.

        """
        return _Law.Law_BSpline_Multiplicities(self, *args)

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

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

        Return
        -------
        int

        Description
        -----------
        Returns the multiplicity of the knots of range index. raised if index < 1 or index > nbknots.

        """
        return _Law.Law_BSpline_Multiplicity(self, *args)

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

        Description
        -----------
        Returns the number of knots. this method returns the number of knot without repetition of multiple knots.

        """
        return _Law.Law_BSpline_NbKnots(self, *args)

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

        Description
        -----------
        Returns the number of poles.

        """
        return _Law.Law_BSpline_NbPoles(self, *args)

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

        Parameters
        ----------

        Return
        -------
        U: float

        Description
        -----------
        Returns the parameter normalized within the period if the curve is periodic: otherwise does not do anything.

        """
        return _Law.Law_BSpline_PeriodicNormalization(self, *args)

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

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

        Return
        -------
        float

        Description
        -----------
        Returns the pole of range index. raised if index < 1 or index > nbpoles.

        """
        return _Law.Law_BSpline_Pole(self, *args)

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

        Parameters
        ----------
        P: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Returns the poles of the b-spline curve; //! raised if the length of p is not equal to the number of poles.

        """
        return _Law.Law_BSpline_Poles(self, *args)

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

        Parameters
        ----------
        Index: int
        M: int
        Tolerance: float

        Return
        -------
        bool

        Description
        -----------
        Decrement the knots multiplicity to <m>. if m is 0 the knot is removed. the poles sequence is modified. //! as there are two ways to compute the new poles the average is computed if the distance is lower than the <tolerance>, else false is returned. //! a low tolerance is used to prevent the modification of the curve. //! a high tolerance is used to 'smooth' the curve. //! raised if index is not in the range [firstuknotindex, lastuknotindex] pole insertion and pole removing this operation is limited to the uniform or quasiuniform bsplinecurve. the knot values are modified . if the bspline is nonuniform or piecewise bezier an exception construction error is raised.

        """
        return _Law.Law_BSpline_RemoveKnot(self, *args)

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

        Parameters
        ----------
        Tolerance3D: float

        Return
        -------
        UTolerance: float

        Description
        -----------
        Given tolerance3d returns utolerance such that if f(t) is the curve we have | t1 - t0| < utolerance ===> |f(t1) - f(t0)| < tolerance3d.

        """
        return _Law.Law_BSpline_Resolution(self, *args)

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

        Description
        -----------
        Changes the direction of parametrization of <self>. the knot sequence is modified, the firstparameter and the lastparameter are not modified. the startpoint of the initial curve becomes the endpoint of the reversed curve and the endpoint of the initial curve becomes the startpoint of the reversed curve.

        """
        return _Law.Law_BSpline_Reverse(self, *args)

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

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

        Return
        -------
        float

        Description
        -----------
        Returns the parameter on the reversed curve for the point of parameter u on <self>. //! returns ufirst + ulast - u.

        """
        return _Law.Law_BSpline_ReversedParameter(self, *args)

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

        Parameters
        ----------
        U1: float
        U2: float

        Return
        -------
        None

        Description
        -----------
        Segments the curve between u1 and u2. the control points are modified, the first and the last point are not the same. warnings: even if <self> is not closed it can become closed after the segmentation for example if u1 or u2 are out of the bounds of the curve <self> or if the curve makes loop. after the segmentation the length of a curve can be null. raises if u2 < u1.

        """
        return _Law.Law_BSpline_Segment(self, *args)

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

        Parameters
        ----------
        Index: int
        K: float

        Return
        -------
        None

        Description
        -----------
        Changes the knot of range index. the multiplicity of the knot is not modified. raised if k >= knots(index+1) or k <= knots(index-1). raised if index < 1 || index > nbknots.

        Parameters
        ----------
        Index: int
        K: float
        M: int

        Return
        -------
        None

        Description
        -----------
        Changes the knot of range index with its multiplicity. you can increase the multiplicity of a knot but it is not allowed to decrease the multiplicity of an existing knot. //! raised if k >= knots(index+1) or k <= knots(index-1). raised if m is greater than degree or lower than the previous multiplicity of knot of range index. raised if index < 1 || index > nbknots.

        """
        return _Law.Law_BSpline_SetKnot(self, *args)

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

        Parameters
        ----------
        K: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Changes all the knots of the curve the multiplicity of the knots are not modified. //! raised if there is an index such that k (index+1) <= k (index). //! raised if k.lower() < 1 or k.upper() > nbknots.

        """
        return _Law.Law_BSpline_SetKnots(self, *args)

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

        Description
        -----------
        Makes a non periodic curve. if the curve was non periodic the curve is not modified.

        """
        return _Law.Law_BSpline_SetNotPeriodic(self, *args)

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

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

        Return
        -------
        None

        Description
        -----------
        Set the origin of a periodic curve at knot(index) knotvector and poles are modified. raised if the curve is not periodic raised if index not in the range [firstuknotindex , lastuknotindex].

        """
        return _Law.Law_BSpline_SetOrigin(self, *args)

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

        Description
        -----------
        Makes a closed b-spline into a periodic curve. the curve is periodic if the knot sequence is periodic and if the curve is closed (the tolerance criterion is resolution from gp). the period t is equal to knot(lastuknotindex) - knot(firstuknotindex). a periodic b-spline can be uniform or not. raised if the curve is not closed.

        """
        return _Law.Law_BSpline_SetPeriodic(self, *args)

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

        Parameters
        ----------
        Index: int
        P: float

        Return
        -------
        None

        Description
        -----------
        Substitutes the pole of range index with p. //! raised if index < 1 || index > nbpoles.

        Parameters
        ----------
        Index: int
        P: float
        Weight: float

        Return
        -------
        None

        Description
        -----------
        Substitutes the pole and the weight of range index. if the curve <self> is not rational it can become rational if the curve was rational it can become non rational //! raised if index < 1 || index > nbpoles raised if weight <= 0.0.

        """
        return _Law.Law_BSpline_SetPole(self, *args)

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

        Parameters
        ----------
        Index: int
        Weight: float

        Return
        -------
        None

        Description
        -----------
        Changes the weight for the pole of range index. if the curve was non rational it can become rational. if the curve was rational it can become non rational. //! raised if index < 1 || index > nbpoles raised if weight <= 0.0.

        """
        return _Law.Law_BSpline_SetWeight(self, *args)

    def StartPoint(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        Returns the start point of the curve. warnings: this point is different from the first pole of the curve if the multiplicity of the first knot is lower than degree.

        """
        return _Law.Law_BSpline_StartPoint(self, *args)

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

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

        Return
        -------
        float

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

        """
        return _Law.Law_BSpline_Value(self, *args)

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

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

        Return
        -------
        float

        Description
        -----------
        Returns the weight of the pole of range index . raised if index < 1 or index > nbpoles.

        """
        return _Law.Law_BSpline_Weight(self, *args)

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

        Parameters
        ----------
        W: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Returns the weights of the b-spline curve; //! raised if the length of w is not equal to nbpoles.

        """
        return _Law.Law_BSpline_Weights(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_BSpline

# Register Law_BSpline in _Law:
_Law.Law_BSpline_swigregister(Law_BSpline)
class Law_BSplineKnotSplitting(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"""

        Parameters
        ----------
        BasisLaw: Law_BSpline
        ContinuityRange: int

        Return
        -------
        None

        Description
        -----------
        Locates the knot values which correspond to the segmentation of the curve into arcs with a continuity equal to continuityrange. //! raised if continuityrange is not greater or equal zero.

        """
        _Law.Law_BSplineKnotSplitting_swiginit(self, _Law.new_Law_BSplineKnotSplitting(*args))

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

        Description
        -----------
        Returns the number of knots corresponding to the splitting.

        """
        return _Law.Law_BSplineKnotSplitting_NbSplits(self, *args)

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

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

        Return
        -------
        int

        Description
        -----------
        Returns the index of the knot corresponding to the splitting of range index. //! raised if index < 1 or index > nbsplits.

        """
        return _Law.Law_BSplineKnotSplitting_SplitValue(self, *args)

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

        Parameters
        ----------
        SplitValues: TColStd_Array1OfInteger

        Return
        -------
        None

        Description
        -----------
        Returns the indexes of the bspline curve knots corresponding to the splitting. //! raised if the length of splitvalues is not equal to nbsplit.

        """
        return _Law.Law_BSplineKnotSplitting_Splitting(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_BSplineKnotSplitting

# Register Law_BSplineKnotSplitting in _Law:
_Law.Law_BSplineKnotSplitting_swigregister(Law_BSplineKnotSplitting)
class Law_Function(OCC.Core.Standard.Standard_Transient):
    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 Bounds(self, *args):
        r"""

        Parameters
        ----------

        Return
        -------
        PFirst: float
        PLast: float

        Description
        -----------
        Returns the parametric bounds of the function.

        """
        return _Law.Law_Function_Bounds(self, *args)

    def Continuity(self, *args):
        r"""
        Return
        -------
        GeomAbs_Shape

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

        """
        return _Law.Law_Function_Continuity(self, *args)

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

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

        Return
        -------
        F: float
        D: float

        Description
        -----------
        Returns the value f and the first derivative d of the function at the point of parameter x.

        """
        return _Law.Law_Function_D1(self, *args)

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

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

        Return
        -------
        F: float
        D: float
        D2: float

        Description
        -----------
        Returns the value, first and seconde derivatives at parameter x.

        """
        return _Law.Law_Function_D2(self, *args)

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

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

        Return
        -------
        None

        Description
        -----------
        Stores in <t> the parameters bounding the intervals of continuity <s>. the array must provide enough room to accommodate for the parameters, i.e. t.length() > nbintervals().

        """
        return _Law.Law_Function_Intervals(self, *args)

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

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

        Return
        -------
        int

        Description
        -----------
        Returns the number of intervals for continuity <s>. may be one if continuity(me) >= <s>.

        """
        return _Law.Law_Function_NbIntervals(self, *args)

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

        Parameters
        ----------
        PFirst: float
        PLast: float
        Tol: float

        Return
        -------
        opencascade::handle<Law_Function>

        Description
        -----------
        Returns a law equivalent of <self> between parameters <first> and <last>. <tol> is used to test for 3d points confusion. it is usfule to determines the derivatives in these values <first> and <last> if the law is not cn.

        """
        return _Law.Law_Function_Trim(self, *args)

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

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

        Return
        -------
        float

        Description
        -----------
        Returns the value of the function at the point of parameter x.

        """
        return _Law.Law_Function_Value(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_Function

# Register Law_Function in _Law:
_Law.Law_Function_swigregister(Law_Function)
class Law_Interpolate(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"""

        Parameters
        ----------
        Points: TColStd_HArray1OfReal
        PeriodicFlag: bool
        Tolerance: float

        Return
        -------
        None

        Description
        -----------
        Tolerance is to check if the points are not too close to one an other. it is also used to check if the tangent vector is not too small. there should be at least 2 points. if periodicflag is true then the curve will be periodic be periodic.

        Parameters
        ----------
        Points: TColStd_HArray1OfReal
        Parameters: TColStd_HArray1OfReal
        PeriodicFlag: bool
        Tolerance: float

        Return
        -------
        None

        Description
        -----------
        Tolerance is to check if the points are not too close to one an other. it is also used to check if the tangent vector is not too small. there should be at least 2 points. if periodicflag is true then the curve will be periodic be periodic.

        """
        _Law.Law_Interpolate_swiginit(self, _Law.new_Law_Interpolate(*args))

    def Curve(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Law_BSpline>

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

        """
        return _Law.Law_Interpolate_Curve(self, *args)

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

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

        """
        return _Law.Law_Interpolate_IsDone(self, *args)

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

        Parameters
        ----------
        InitialTangent: float
        FinalTangent: float

        Return
        -------
        None

        Description
        -----------
        Loads initial and final tangents if any.

        Parameters
        ----------
        Tangents: TColStd_Array1OfReal
        TangentFlags: TColStd_HArray1OfBoolean

        Return
        -------
        None

        Description
        -----------
        Loads the tangents. we should have as many tangents as they are points in the array if tangentflags.value(i) is standard_true use the tangent tangents.value(i) otherwise the tangent is not constrained.

        """
        return _Law.Law_Interpolate_Load(self, *args)

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

        Description
        -----------
        Makes the interpolation.

        """
        return _Law.Law_Interpolate_Perform(self, *args)

    __repr__ = _dumps_object

    @methodnotwrapped
    def ClearTangents(self):
    	pass

    __swig_destroy__ = _Law.delete_Law_Interpolate

# Register Law_Interpolate in _Law:
_Law.Law_Interpolate_swigregister(Law_Interpolate)
class Law_BSpFunc(Law_Function):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

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

        Parameters
        ----------
        C: Law_BSpline
        First: float
        Last: float

        Return
        -------
        None

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

        """
        _Law.Law_BSpFunc_swiginit(self, _Law.new_Law_BSpFunc(*args))

    def Curve(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Law_BSpline>

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

        """
        return _Law.Law_BSpFunc_Curve(self, *args)

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

        Parameters
        ----------
        C: Law_BSpline

        Return
        -------
        None

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

        """
        return _Law.Law_BSpFunc_SetCurve(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_BSpFunc

# Register Law_BSpFunc in _Law:
_Law.Law_BSpFunc_swigregister(Law_BSpFunc)
class Law_Composite(Law_Function):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Construct an empty law.

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

        Return
        -------
        None

        Description
        -----------
        Construct an empty, trimmed law.

        """
        _Law.Law_Composite_swiginit(self, _Law.new_Law_Composite(*args))

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

        Parameters
        ----------
        W: float

        Return
        -------
        opencascade::handle<Law_Function>

        Description
        -----------
        Returns the elementary function of the composite used to compute at parameter w.

        """
        return _Law.Law_Composite_ChangeElementaryLaw(self, *args)

    def ChangeLaws(self, *args):
        r"""
        Return
        -------
        Law_Laws

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

        """
        return _Law.Law_Composite_ChangeLaws(self, *args)

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

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

        """
        return _Law.Law_Composite_IsPeriodic(self, *args)

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

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

        """
        return _Law.Law_Composite_SetPeriodic(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_Composite

# Register Law_Composite in _Law:
_Law.Law_Composite_swigregister(Law_Composite)
class Law_Constant(Law_Function):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

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

        """
        _Law.Law_Constant_swiginit(self, _Law.new_Law_Constant(*args))

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

        Parameters
        ----------
        Radius: float
        PFirst: float
        PLast: float

        Return
        -------
        None

        Description
        -----------
        Set the radius and the range of the constant law.

        """
        return _Law.Law_Constant_Set(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_Constant

# Register Law_Constant in _Law:
_Law.Law_Constant_swigregister(Law_Constant)
class Law_Linear(Law_Function):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Constructs an empty linear evolution law.

        """
        _Law.Law_Linear_swiginit(self, _Law.new_Law_Linear(*args))

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

        Parameters
        ----------
        Pdeb: float
        Valdeb: float
        Pfin: float
        Valfin: float

        Return
        -------
        None

        Description
        -----------
        Defines this linear evolution law by assigning both: - the bounds pdeb and pfin of the parameter, and - the values valdeb and valfin of the function at these two parametric bounds.

        """
        return _Law.Law_Linear_Set(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_Linear

# Register Law_Linear in _Law:
_Law.Law_Linear_swigregister(Law_Linear)
class Law_Interpol(Law_BSpFunc):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Constructs an empty interpolative evolution law. the function set is used to define the law.

        """
        _Law.Law_Interpol_swiginit(self, _Law.new_Law_Interpol(*args))

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

        Parameters
        ----------
        ParAndRad: TColgp_Array1OfPnt2d
        Periodic: bool (optional, default to Standard_False)

        Return
        -------
        None

        Description
        -----------
        Defines this evolution law by interpolating the set of 2d points parandrad. the y coordinate of a point of parandrad is the value of the function at the parameter point given by its x coordinate. if periodic is true, this function is assumed to be periodic. warning - the x coordinates of points in the table parandrad must be given in ascendant order. - if periodic is true, the first and last y coordinates of points in the table parandrad are assumed to be equal. in addition, with the second syntax, dd and df are also assumed to be equal. if this is not the case, set uses the first value(s) as last value(s).

        Parameters
        ----------
        ParAndRad: TColgp_Array1OfPnt2d
        Dd: float
        Df: float
        Periodic: bool (optional, default to Standard_False)

        Return
        -------
        None

        Description
        -----------
        Defines this evolution law by interpolating the set of 2d points parandrad. the y coordinate of a point of parandrad is the value of the function at the parameter point given by its x coordinate. if periodic is true, this function is assumed to be periodic. in the second syntax, dd and df define the values of the first derivative of the function at its first and last points. warning - the x coordinates of points in the table parandrad must be given in ascendant order. - if periodic is true, the first and last y coordinates of points in the table parandrad are assumed to be equal. in addition, with the second syntax, dd and df are also assumed to be equal. if this is not the case, set uses the first value(s) as last value(s).

        """
        return _Law.Law_Interpol_Set(self, *args)

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

        Parameters
        ----------
        ParAndRad: TColgp_Array1OfPnt2d
        Ud: float
        Uf: float
        Periodic: bool (optional, default to Standard_False)

        Return
        -------
        None

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

        Parameters
        ----------
        ParAndRad: TColgp_Array1OfPnt2d
        Ud: float
        Uf: float
        Dd: float
        Df: float
        Periodic: bool (optional, default to Standard_False)

        Return
        -------
        None

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

        """
        return _Law.Law_Interpol_SetInRelative(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_Interpol

# Register Law_Interpol in _Law:
_Law.Law_Interpol_swigregister(Law_Interpol)
class Law_S(Law_BSpFunc):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Constructs an empty 's' evolution law.

        """
        _Law.Law_S_swiginit(self, _Law.new_Law_S(*args))

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

        Parameters
        ----------
        Pdeb: float
        Valdeb: float
        Pfin: float
        Valfin: float

        Return
        -------
        None

        Description
        -----------
        Defines this s evolution law by assigning both: - the bounds pdeb and pfin of the parameter, and - the values valdeb and valfin of the function at these two parametric bounds. the function is assumed to have the first derivatives equal to 0 at the two parameter points pdeb and pfin.

        Parameters
        ----------
        Pdeb: float
        Valdeb: float
        Ddeb: float
        Pfin: float
        Valfin: float
        Dfin: float

        Return
        -------
        None

        Description
        -----------
        Defines this s evolution law by assigning - the bounds pdeb and pfin of the parameter, - the values valdeb and valfin of the function at these two parametric bounds, and - the values ddeb and dfin of the first derivative of the function at these two parametric bounds.

        """
        return _Law.Law_S_Set(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Law.delete_Law_S

# Register Law_S in _Law:
_Law.Law_S_swigregister(Law_S)



@deprecated
def law_MixBnd(*args):
	return law.MixBnd(*args)

@deprecated
def law_MixBnd(*args):
	return law.MixBnd(*args)

@deprecated
def law_MixTgt(*args):
	return law.MixTgt(*args)

@deprecated
def law_Reparametrize(*args):
	return law.Reparametrize(*args)

@deprecated
def law_Scale(*args):
	return law.Scale(*args)

@deprecated
def law_ScaleCub(*args):
	return law.ScaleCub(*args)

@deprecated
def Law_BSpline_MaxDegree(*args):
	return Law_BSpline.MaxDegree(*args)



