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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _ChFi3d:
_ChFi3d.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 _ChFi3d.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.BRepAdaptor
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.gp
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.TopAbs
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.math
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.TopoDS
import OCC.Core.TopLoc
import OCC.Core.GeomAdaptor
import OCC.Core.Geom2dAdaptor
import OCC.Core.ChFiDS
import OCC.Core.TopTools
import OCC.Core.Law
import OCC.Core.TopOpeBRepBuild
import OCC.Core.TopOpeBRepDS
import OCC.Core.TopOpeBRepTool
import OCC.Core.BRepClass3d
import OCC.Core.IntCurveSurface
import OCC.Core.Intf
import OCC.Core.Bnd
import OCC.Core.BVH
import OCC.Core.IntSurf
import OCC.Core.IntCurvesFace
import OCC.Core.TopExp
import OCC.Core.Extrema
import OCC.Core.BRepBlend
import OCC.Core.BlendFunc
import OCC.Core.Convert
import OCC.Core.Blend
import OCC.Core.Approx
import OCC.Core.AppCont
import OCC.Core.AppParCurves
import OCC.Core.AppBlend
import OCC.Core.GeomFill
import OCC.Core.TColGeom

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

ChFi3d_Rational = _ChFi3d.ChFi3d_Rational
ChFi3d_QuasiAngular = _ChFi3d.ChFi3d_QuasiAngular
ChFi3d_Polynomial = _ChFi3d.ChFi3d_Polynomial


class ChFi3d_FilletShape(IntEnum):
	ChFi3d_Rational = 0
	ChFi3d_QuasiAngular = 1
	ChFi3d_Polynomial = 2
ChFi3d_Rational = ChFi3d_FilletShape.ChFi3d_Rational
ChFi3d_QuasiAngular = ChFi3d_FilletShape.ChFi3d_QuasiAngular
ChFi3d_Polynomial = ChFi3d_FilletShape.ChFi3d_Polynomial

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

    @staticmethod
    def ConcaveSide(*args) -> "Standard_Integer":
        r"""
        Returns reversed in or1 and(or) or2 if the concave edge defined by the interior of faces f1 and f2, in the neighbourhood of their boundary e is of the edge opposite to the normal of their surface support. the orientation of faces is not taken into consideration in the calculation. the function returns 0 if the calculation fails (tangence), if not, it returns the number of choice of the fillet or chamfer corresponding to the orientations calculated and to the tangent to the guide line read in e.

        Parameters
        ----------
        S1: BRepAdaptor_Surface
        S2: BRepAdaptor_Surface
        E: TopoDS_Edge
        Or1: TopAbs_Orientation
        Or2: TopAbs_Orientation

        Returns
        -------
        int

        """
        return _ChFi3d.chfi3d_ConcaveSide(*args)

    @staticmethod
    def DefineConnectType(*args) -> "ChFiDS_TypeOfConcavity":
        r"""
        Defines the type of concavity in the edge of connection of two faces.

        Parameters
        ----------
        E: TopoDS_Edge
        F1: TopoDS_Face
        F2: TopoDS_Face
        SinTol: float
        CorrectPoint: bool

        Returns
        -------
        ChFiDS_TypeOfConcavity

        """
        return _ChFi3d.chfi3d_DefineConnectType(*args)

    @staticmethod
    def IsTangentFaces(*args) -> "Standard_Boolean":
        r"""
        Returns true if theedge between theface1 and theface2 is tangent.

        Parameters
        ----------
        theEdge: TopoDS_Edge
        theFace1: TopoDS_Face
        theFace2: TopoDS_Face
        Order: GeomAbs_Shape,optional
        	default value is GeomAbs_G1

        Returns
        -------
        bool

        """
        return _ChFi3d.chfi3d_IsTangentFaces(*args)

    @staticmethod
    def NextSide(*args) -> "void":
        r"""
        Same as concaveside, but the orientations are logically deduced from the result of the call of concaveside on the first pair of faces of the fillet or chamnfer.

        Parameters
        ----------
        Or1: TopAbs_Orientation
        Or2: TopAbs_Orientation
        OrSave1: TopAbs_Orientation
        OrSave2: TopAbs_Orientation
        ChoixSauv: int

        Returns
        -------
        int
        Same as the other nextside, but the calculation is done on an edge only.

        Parameters
        ----------
        Or: TopAbs_Orientation
        OrSave: TopAbs_Orientation
        OrFace: TopAbs_Orientation

        Returns
        -------
        None

        """
        return _ChFi3d.chfi3d_NextSide(*args)

    @staticmethod
    def SameSide(*args) -> "Standard_Boolean":
        r"""
        Enables to determine while processing an angle, if two fillets or chamfers constituting a face have identic or opposed concave edges.

        Parameters
        ----------
        Or: TopAbs_Orientation
        OrSave1: TopAbs_Orientation
        OrSave2: TopAbs_Orientation
        OrFace1: TopAbs_Orientation
        OrFace2: TopAbs_Orientation

        Returns
        -------
        bool

        """
        return _ChFi3d.chfi3d_SameSide(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _ChFi3d.chfi3d_swiginit(self, _ChFi3d.new_chfi3d())
    __swig_destroy__ = _ChFi3d.delete_chfi3d

# Register chfi3d in _ChFi3d:
_ChFi3d.chfi3d_swigregister(chfi3d)

def chfi3d_ConcaveSide(*args) -> "Standard_Integer":
    r"""
    Returns reversed in or1 and(or) or2 if the concave edge defined by the interior of faces f1 and f2, in the neighbourhood of their boundary e is of the edge opposite to the normal of their surface support. the orientation of faces is not taken into consideration in the calculation. the function returns 0 if the calculation fails (tangence), if not, it returns the number of choice of the fillet or chamfer corresponding to the orientations calculated and to the tangent to the guide line read in e.

    Parameters
    ----------
    S1: BRepAdaptor_Surface
    S2: BRepAdaptor_Surface
    E: TopoDS_Edge
    Or1: TopAbs_Orientation
    Or2: TopAbs_Orientation

    Returns
    -------
    int

    """
    return _ChFi3d.chfi3d_ConcaveSide(*args)

def chfi3d_DefineConnectType(*args) -> "ChFiDS_TypeOfConcavity":
    r"""
    Defines the type of concavity in the edge of connection of two faces.

    Parameters
    ----------
    E: TopoDS_Edge
    F1: TopoDS_Face
    F2: TopoDS_Face
    SinTol: float
    CorrectPoint: bool

    Returns
    -------
    ChFiDS_TypeOfConcavity

    """
    return _ChFi3d.chfi3d_DefineConnectType(*args)

def chfi3d_IsTangentFaces(*args) -> "Standard_Boolean":
    r"""
    Returns true if theedge between theface1 and theface2 is tangent.

    Parameters
    ----------
    theEdge: TopoDS_Edge
    theFace1: TopoDS_Face
    theFace2: TopoDS_Face
    Order: GeomAbs_Shape,optional
    	default value is GeomAbs_G1

    Returns
    -------
    bool

    """
    return _ChFi3d.chfi3d_IsTangentFaces(*args)

def chfi3d_NextSide(*args) -> "void":
    r"""
    Same as concaveside, but the orientations are logically deduced from the result of the call of concaveside on the first pair of faces of the fillet or chamnfer.

    Parameters
    ----------
    Or1: TopAbs_Orientation
    Or2: TopAbs_Orientation
    OrSave1: TopAbs_Orientation
    OrSave2: TopAbs_Orientation
    ChoixSauv: int

    Returns
    -------
    int
    Same as the other nextside, but the calculation is done on an edge only.

    Parameters
    ----------
    Or: TopAbs_Orientation
    OrSave: TopAbs_Orientation
    OrFace: TopAbs_Orientation

    Returns
    -------
    None

    """
    return _ChFi3d.chfi3d_NextSide(*args)

def chfi3d_SameSide(*args) -> "Standard_Boolean":
    r"""
    Enables to determine while processing an angle, if two fillets or chamfers constituting a face have identic or opposed concave edges.

    Parameters
    ----------
    Or: TopAbs_Orientation
    OrSave1: TopAbs_Orientation
    OrSave2: TopAbs_Orientation
    OrFace1: TopAbs_Orientation
    OrFace2: TopAbs_Orientation

    Returns
    -------
    bool

    """
    return _ChFi3d.chfi3d_SameSide(*args)

class ChFi3d_Builder(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")
    __repr__ = _swig_repr

    def Abscissa(self, *args) -> "Standard_Real":
        r"""
        Returns the abscissa of the vertex v on the contour of index ic.

        Parameters
        ----------
        IC: int
        V: TopoDS_Vertex

        Returns
        -------
        float

        """
        return _ChFi3d.ChFi3d_Builder_Abscissa(self, *args)

    def BadShape(self, *args) -> "TopoDS_Shape":
        r"""
        If (hasresult()) returns partial result if (!hasresult()).

        Returns
        -------
        TopoDS_Shape

        """
        return _ChFi3d.ChFi3d_Builder_BadShape(self, *args)

    def Builder(self, *args) -> "opencascade::handle< TopOpeBRepBuild_HBuilder >":
        r"""
        Returns the builder of topologic operations.

        Returns
        -------
        opencascade::handle<TopOpeBRepBuild_HBuilder>

        """
        return _ChFi3d.ChFi3d_Builder_Builder(self, *args)

    def Closed(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the contour of index ic is closed.

        Parameters
        ----------
        IC: int

        Returns
        -------
        bool

        """
        return _ChFi3d.ChFi3d_Builder_Closed(self, *args)

    def ClosedAndTangent(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the contour of index ic is closed an tangent.

        Parameters
        ----------
        IC: int

        Returns
        -------
        bool

        """
        return _ChFi3d.ChFi3d_Builder_ClosedAndTangent(self, *args)

    def Compute(self, *args) -> "void":
        r"""
        General calculation of geometry on all edges, topologic reconstruction.

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_Builder_Compute(self, *args)

    def ComputedSurface(self, *args) -> "opencascade::handle< Geom_Surface >":
        r"""
        Returns the is'th surface calculated on the contour ic.

        Parameters
        ----------
        IC: int
        IS: int

        Returns
        -------
        opencascade::handle<Geom_Surface>

        """
        return _ChFi3d.ChFi3d_Builder_ComputedSurface(self, *args)

    def Contains(self, *args) -> "Standard_Integer":
        r"""
        Gives the number of the contour containing e or 0 if e does not belong to any contour.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        int
        Gives the number of the contour containing e or 0 if e does not belong to any contour. sets in indexinspine the index of e in the contour if it's found.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        IndexInSpine: int

        """
        return _ChFi3d.ChFi3d_Builder_Contains(self, *args)

    def FaultyContour(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of i'th contour on which the calculation has failed.

        Parameters
        ----------
        I: int

        Returns
        -------
        int

        """
        return _ChFi3d.ChFi3d_Builder_FaultyContour(self, *args)

    def FaultyVertex(self, *args) -> "TopoDS_Vertex":
        r"""
        Returns the iv'th vertex on which the calculation has failed.

        Parameters
        ----------
        IV: int

        Returns
        -------
        TopoDS_Vertex

        """
        return _ChFi3d.ChFi3d_Builder_FaultyVertex(self, *args)

    def FirstVertex(self, *args) -> "TopoDS_Vertex":
        r"""
        Returns the first vertex v of the contour of index ic.

        Parameters
        ----------
        IC: int

        Returns
        -------
        TopoDS_Vertex

        """
        return _ChFi3d.ChFi3d_Builder_FirstVertex(self, *args)

    def Generated(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Advanced function for the history.

        Parameters
        ----------
        EouV: TopoDS_Shape

        Returns
        -------
        TopTools_ListOfShape

        """
        return _ChFi3d.ChFi3d_Builder_Generated(self, *args)

    def HasResult(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if a partial result has been calculated.

        Returns
        -------
        bool

        """
        return _ChFi3d.ChFi3d_Builder_HasResult(self, *args)

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the computation is success.

        Returns
        -------
        bool

        """
        return _ChFi3d.ChFi3d_Builder_IsDone(self, *args)

    def LastVertex(self, *args) -> "TopoDS_Vertex":
        r"""
        Returns the last vertex v of the contour of index ic.

        Parameters
        ----------
        IC: int

        Returns
        -------
        TopoDS_Vertex

        """
        return _ChFi3d.ChFi3d_Builder_LastVertex(self, *args)

    def Length(self, *args) -> "Standard_Real":
        r"""
        Returns the length of the contour of index ic.

        Parameters
        ----------
        IC: int

        Returns
        -------
        float

        """
        return _ChFi3d.ChFi3d_Builder_Length(self, *args)

    def NbComputedSurfaces(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of surfaces calculated on the contour ic.

        Parameters
        ----------
        IC: int

        Returns
        -------
        int

        """
        return _ChFi3d.ChFi3d_Builder_NbComputedSurfaces(self, *args)

    def NbElements(self, *args) -> "Standard_Integer":
        r"""
        Gives the number of disjoint contours on which the fillets are calculated.

        Returns
        -------
        int

        """
        return _ChFi3d.ChFi3d_Builder_NbElements(self, *args)

    def NbFaultyContours(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of contours on which the calculation has failed.

        Returns
        -------
        int

        """
        return _ChFi3d.ChFi3d_Builder_NbFaultyContours(self, *args)

    def NbFaultyVertices(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of vertices on which the calculation has failed.

        Returns
        -------
        int

        """
        return _ChFi3d.ChFi3d_Builder_NbFaultyVertices(self, *args)

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

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

        Returns
        -------
        bool

        """
        return _ChFi3d.ChFi3d_Builder_PerformTwoCornerbyInter(self, *args)

    def RelativeAbscissa(self, *args) -> "Standard_Real":
        r"""
        Returns the relative abscissa([0.,1.]) of the vertex v on the contour of index ic.

        Parameters
        ----------
        IC: int
        V: TopoDS_Vertex

        Returns
        -------
        float

        """
        return _ChFi3d.ChFi3d_Builder_RelativeAbscissa(self, *args)

    def Remove(self, *args) -> "void":
        r"""
        Extracts from the list the contour containing edge e.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_Builder_Remove(self, *args)

    def Reset(self, *args) -> "void":
        r"""
        Reset all results of compute and returns the algorythm in the state of the last acquisition to enable modification of contours or areas.

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_Builder_Reset(self, *args)

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

        Parameters
        ----------
        InternalContinuity: GeomAbs_Shape
        AngularTolerance: float

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_Builder_SetContinuity(self, *args)

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

        Parameters
        ----------
        Tang: float
        Tesp: float
        T2d: float
        TApp3d: float
        TolApp2d: float
        Fleche: float

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_Builder_SetParams(self, *args)

    def Shape(self, *args) -> "TopoDS_Shape":
        r"""
        If (isdone()) makes the result. if (!isdone()).

        Returns
        -------
        TopoDS_Shape

        """
        return _ChFi3d.ChFi3d_Builder_Shape(self, *args)

    def SplitKPart(self, *args) -> "Standard_Boolean":
        r"""
        Method, implemented in the inheritants, calculates the elements of construction of the surface (fillet or chamfer).

        Parameters
        ----------
        Data: ChFiDS_SurfData
        SetData: ChFiDS_SequenceOfSurfData
        Spine: ChFiDS_Spine
        Iedge: int
        S1: Adaptor3d_HSurface
        I1: Adaptor3d_TopolTool
        S2: Adaptor3d_HSurface
        I2: Adaptor3d_TopolTool

        Returns
        -------
        Intf: bool
        Intl: bool

        """
        return _ChFi3d.ChFi3d_Builder_SplitKPart(self, *args)

    def StripeStatus(self, *args) -> "ChFiDS_ErrorStatus":
        r"""
        For the stripe ic ,indication on the cause of failure walkingfailure,twistedsurface,error, ok.

        Parameters
        ----------
        IC: int

        Returns
        -------
        ChFiDS_ErrorStatus

        """
        return _ChFi3d.ChFi3d_Builder_StripeStatus(self, *args)

    def Value(self, *args) -> "opencascade::handle< ChFiDS_Spine >":
        r"""
        Gives the n'th set of edges (contour) if i >nbelements().

        Parameters
        ----------
        I: int

        Returns
        -------
        opencascade::handle<ChFiDS_Spine>

        """
        return _ChFi3d.ChFi3d_Builder_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _ChFi3d.delete_ChFi3d_Builder

# Register ChFi3d_Builder in _ChFi3d:
_ChFi3d.ChFi3d_Builder_swigregister(ChFi3d_Builder)

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

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

        Parameters
        ----------
        C1: Geom_Curve
        C2: Geom_Curve

        Returns
        -------
        None

        """
        _ChFi3d.ChFi3d_SearchSing_swiginit(self, _ChFi3d.new_ChFi3d_SearchSing(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _ChFi3d.delete_ChFi3d_SearchSing

# Register ChFi3d_SearchSing in _ChFi3d:
_ChFi3d.ChFi3d_SearchSing_swigregister(ChFi3d_SearchSing)

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

    def __init__(self, *args):
        r"""
        Initializes the builder with the shape <s> for the computation of chamfers.

        Parameters
        ----------
        S: TopoDS_Shape
        Ta: float,optional
        	default value is 1.0e-2

        Returns
        -------
        None

        """
        _ChFi3d.ChFi3d_ChBuilder_swiginit(self, _ChFi3d.new_ChFi3d_ChBuilder(*args))

    def Add(self, *args) -> "void":
        r"""
        Initializes a contour with the edge <e> as first (the next are found by propagation ). the two distances (parameters of the chamfer) must be set after. if the edge <e> has more than 2 adjacent faces.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        None
        Initializes a new contour with the edge <e> as first (the next are found by propagation ), and the distance <dis> if the edge <e> has more than 2 adjacent faces.

        Parameters
        ----------
        Dis: float
        E: TopoDS_Edge

        Returns
        -------
        None
        Initializes a new contour with the edge <e> as first (the next are found by propagation ), and the distance <dis1> and <dis2> if the edge <e> has more than 2 adjacent faces.

        Parameters
        ----------
        Dis1: float
        Dis2: float
        E: TopoDS_Edge
        F: TopoDS_Face

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_ChBuilder_Add(self, *args)

    def AddDA(self, *args) -> "void":
        r"""
        Initializes a new contour with the edge <e> as first (the next are found by propagation ), and the distance <dis1> and <angle> if the edge <e> has more than 2 adjacent faces.

        Parameters
        ----------
        Dis: float
        Angle: float
        E: TopoDS_Edge
        F: TopoDS_Face

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_ChBuilder_AddDA(self, *args)

    def Dists(self, *args) -> "void":
        r"""
        Gives the distances <dis1> and <dis2> of the fillet contour of index <ic> in the ds.

        Parameters
        ----------
        IC: int

        Returns
        -------
        Dis1: float
        Dis2: float

        """
        return _ChFi3d.ChFi3d_ChBuilder_Dists(self, *args)

    def GetDist(self, *args) -> "void":
        r"""
        Gives the distances <dis> of the fillet contour of index <ic> in the ds.

        Parameters
        ----------
        IC: int

        Returns
        -------
        Dis: float

        """
        return _ChFi3d.ChFi3d_ChBuilder_GetDist(self, *args)

    def GetDistAngle(self, *args) -> "void":
        r"""
        Gives the distances <dis> and <angle> of the fillet contour of index <ic> in the ds.

        Parameters
        ----------
        IC: int

        Returns
        -------
        Dis: float
        Angle: float

        """
        return _ChFi3d.ChFi3d_ChBuilder_GetDistAngle(self, *args)

    def IsChamfer(self, *args) -> "ChFiDS_ChamfMethod":
        r"""
        Renvoi la methode des chanfreins utilisee.

        Parameters
        ----------
        IC: int

        Returns
        -------
        ChFiDS_ChamfMethod

        """
        return _ChFi3d.ChFi3d_ChBuilder_IsChamfer(self, *args)

    def Mode(self, *args) -> "ChFiDS_ChamfMode":
        r"""
        Returns the mode of chamfer used.

        Returns
        -------
        ChFiDS_ChamfMode

        """
        return _ChFi3d.ChFi3d_ChBuilder_Mode(self, *args)

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

        Parameters
        ----------
        IC: int

        Returns
        -------
        int

        """
        return _ChFi3d.ChFi3d_ChBuilder_NbSurf(self, *args)

    def PerformSurf(self, *args) -> "void":
        r"""
        Methode, implemented in inheritants, calculates the elements of construction of the surface (fillet or chamfer).

        Parameters
        ----------
        Data: ChFiDS_SequenceOfSurfData
        Guide: ChFiDS_HElSpine
        Spine: ChFiDS_Spine
        Choix: int
        S1: BRepAdaptor_HSurface
        I1: Adaptor3d_TopolTool
        S2: BRepAdaptor_HSurface
        I2: Adaptor3d_TopolTool
        MaxStep: float
        Fleche: float
        TolGuide: float
        Inside: bool
        Appro: bool
        Forward: bool
        RecOnS1: bool
        RecOnS2: bool
        Soldep: math_Vector

        Returns
        -------
        First: float
        Last: float
        Intf: int
        Intl: int
        Method, implemented in the inheritants, calculates the elements of construction of the surface (fillet or chamfer) contact edge/face.

        Parameters
        ----------
        Data: ChFiDS_SequenceOfSurfData
        Guide: ChFiDS_HElSpine
        Spine: ChFiDS_Spine
        Choix: int
        S1: BRepAdaptor_HSurface
        I1: Adaptor3d_TopolTool
        PC1: BRepAdaptor_HCurve2d
        Sref1: BRepAdaptor_HSurface
        PCref1: BRepAdaptor_HCurve2d
        S2: BRepAdaptor_HSurface
        I2: Adaptor3d_TopolTool
        Or2: TopAbs_Orientation
        MaxStep: float
        Fleche: float
        TolGuide: float
        Inside: bool
        Appro: bool
        Forward: bool
        RecP: bool
        RecS: bool
        RecRst: bool
        Soldep: math_Vector

        Returns
        -------
        Decroch1: bool
        First: float
        Last: float
        Method, implemented in inheritants, calculates the elements of construction of the surface (fillet or chamfer) contact edge/face.

        Parameters
        ----------
        Data: ChFiDS_SequenceOfSurfData
        Guide: ChFiDS_HElSpine
        Spine: ChFiDS_Spine
        Choix: int
        S1: BRepAdaptor_HSurface
        I1: Adaptor3d_TopolTool
        Or1: TopAbs_Orientation
        S2: BRepAdaptor_HSurface
        I2: Adaptor3d_TopolTool
        PC2: BRepAdaptor_HCurve2d
        Sref2: BRepAdaptor_HSurface
        PCref2: BRepAdaptor_HCurve2d
        MaxStep: float
        Fleche: float
        TolGuide: float
        Inside: bool
        Appro: bool
        Forward: bool
        RecP: bool
        RecS: bool
        RecRst: bool
        Soldep: math_Vector

        Returns
        -------
        Decroch2: bool
        First: float
        Last: float
        Method, implemented in inheritants, calculates the elements of construction of the surface (fillet or chamfer) contact edge/edge.

        Parameters
        ----------
        Data: ChFiDS_SequenceOfSurfData
        Guide: ChFiDS_HElSpine
        Spine: ChFiDS_Spine
        Choix: int
        S1: BRepAdaptor_HSurface
        I1: Adaptor3d_TopolTool
        PC1: BRepAdaptor_HCurve2d
        Sref1: BRepAdaptor_HSurface
        PCref1: BRepAdaptor_HCurve2d
        Or1: TopAbs_Orientation
        S2: BRepAdaptor_HSurface
        I2: Adaptor3d_TopolTool
        PC2: BRepAdaptor_HCurve2d
        Sref2: BRepAdaptor_HSurface
        PCref2: BRepAdaptor_HCurve2d
        Or2: TopAbs_Orientation
        MaxStep: float
        Fleche: float
        TolGuide: float
        Inside: bool
        Appro: bool
        Forward: bool
        RecP1: bool
        RecRst1: bool
        RecP2: bool
        RecRst2: bool
        Soldep: math_Vector

        Returns
        -------
        Decroch1: bool
        Decroch2: bool
        First: float
        Last: float

        """
        return _ChFi3d.ChFi3d_ChBuilder_PerformSurf(self, *args)

    def ResetContour(self, *args) -> "void":
        r"""
        Reset tous rayons du contour ic.

        Parameters
        ----------
        IC: int

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_ChBuilder_ResetContour(self, *args)

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

        Parameters
        ----------
        IC: int
        IS: int

        Returns
        -------
        opencascade::handle<ChFiDS_SecHArray1>

        """
        return _ChFi3d.ChFi3d_ChBuilder_Sect(self, *args)

    def SetDist(self, *args) -> "void":
        r"""
        Set the distance <dis> of the fillet contour of index <ic> in the ds with <dis> on <f>. if the face <f> is not one of common faces of an edge of the contour <ic>.

        Parameters
        ----------
        Dis: float
        IC: int
        F: TopoDS_Face

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_ChBuilder_SetDist(self, *args)

    def SetDistAngle(self, *args) -> "void":
        r"""
        Set the distance <dis> and <angle> of the fillet contour of index <ic> in the ds with <dis> on <f>. if the face <f> is not one of common faces of an edge of the contour <ic>.

        Parameters
        ----------
        Dis: float
        Angle: float
        IC: int
        F: TopoDS_Face

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_ChBuilder_SetDistAngle(self, *args)

    def SetDists(self, *args) -> "void":
        r"""
        Set the distances <dis1> and <dis2> of the fillet contour of index <ic> in the ds with <dis1> on <f>. if the face <f> is not one of common faces of an edge of the contour <ic>.

        Parameters
        ----------
        Dis1: float
        Dis2: float
        IC: int
        F: TopoDS_Face

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_ChBuilder_SetDists(self, *args)

    def SetMode(self, *args) -> "void":
        r"""
        Set the mode of shamfer.

        Parameters
        ----------
        theMode: ChFiDS_ChamfMode

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_ChBuilder_SetMode(self, *args)

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

        Parameters
        ----------
        Data: ChFiDS_SurfData
        Guide: ChFiDS_HElSpine
        Spine: ChFiDS_Spine
        Choix: int
        S1: BRepAdaptor_HSurface
        I1: Adaptor3d_TopolTool
        PC1: BRepAdaptor_HCurve2d
        Sref1: BRepAdaptor_HSurface
        PCref1: BRepAdaptor_HCurve2d
        S2: BRepAdaptor_HSurface
        I2: Adaptor3d_TopolTool
        Or2: TopAbs_Orientation
        Fleche: float
        TolGuide: float
        Inside: bool
        Appro: bool
        Forward: bool
        RecP: bool
        RecS: bool
        RecRst: bool
        Soldep: math_Vector

        Returns
        -------
        Decroch1: bool
        First: float
        Last: float
        No available documentation.

        Parameters
        ----------
        Data: ChFiDS_SurfData
        Guide: ChFiDS_HElSpine
        Spine: ChFiDS_Spine
        Choix: int
        S1: BRepAdaptor_HSurface
        I1: Adaptor3d_TopolTool
        Or1: TopAbs_Orientation
        S2: BRepAdaptor_HSurface
        I2: Adaptor3d_TopolTool
        PC2: BRepAdaptor_HCurve2d
        Sref2: BRepAdaptor_HSurface
        PCref2: BRepAdaptor_HCurve2d
        Fleche: float
        TolGuide: float
        Inside: bool
        Appro: bool
        Forward: bool
        RecP: bool
        RecS: bool
        RecRst: bool
        Soldep: math_Vector

        Returns
        -------
        Decroch2: bool
        First: float
        Last: float
        No available documentation.

        Parameters
        ----------
        Data: ChFiDS_SurfData
        Guide: ChFiDS_HElSpine
        Spine: ChFiDS_Spine
        Choix: int
        S1: BRepAdaptor_HSurface
        I1: Adaptor3d_TopolTool
        PC1: BRepAdaptor_HCurve2d
        Sref1: BRepAdaptor_HSurface
        PCref1: BRepAdaptor_HCurve2d
        Or1: TopAbs_Orientation
        S2: BRepAdaptor_HSurface
        I2: Adaptor3d_TopolTool
        PC2: BRepAdaptor_HCurve2d
        Sref2: BRepAdaptor_HSurface
        PCref2: BRepAdaptor_HCurve2d
        Or2: TopAbs_Orientation
        Fleche: float
        TolGuide: float
        Inside: bool
        Appro: bool
        Forward: bool
        RecP1: bool
        RecRst1: bool
        RecP2: bool
        RecRst2: bool
        Soldep: math_Vector

        Returns
        -------
        Decroch1: bool
        Decroch2: bool
        First: float
        Last: float

        """
        return _ChFi3d.ChFi3d_ChBuilder_SimulSurf(self, *args)

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

        Parameters
        ----------
        IC: int

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_ChBuilder_Simulate(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _ChFi3d.delete_ChFi3d_ChBuilder

# Register ChFi3d_ChBuilder in _ChFi3d:
_ChFi3d.ChFi3d_ChBuilder_swigregister(ChFi3d_ChBuilder)

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

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

        Parameters
        ----------
        S: TopoDS_Shape
        FShape: ChFi3d_FilletShape,optional
        	default value is ChFi3d_Rational
        Ta: float,optional
        	default value is 1.0e-2

        Returns
        -------
        None

        """
        _ChFi3d.ChFi3d_FilBuilder_swiginit(self, _ChFi3d.new_ChFi3d_FilBuilder(*args))

    def Add(self, *args) -> "void":
        r"""
        Initialisation of a contour with the first edge (the following are found by propagation). attention, you need to start with setradius.

        Parameters
        ----------
        E: TopoDS_Edge

        Returns
        -------
        None
        Initialisation of the constant vector the corresponding 1st edge.

        Parameters
        ----------
        Radius: float
        E: TopoDS_Edge

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_FilBuilder_Add(self, *args)

    def GetBounds(self, *args) -> "Standard_Boolean":
        r"""
        Returns in first and last les extremities of the part of variable vector framing e, returns false if e is flagged as edge constant.

        Parameters
        ----------
        IC: int
        E: TopoDS_Edge

        Returns
        -------
        First: float
        Last: float

        """
        return _ChFi3d.ChFi3d_FilBuilder_GetBounds(self, *args)

    def GetFilletShape(self, *args) -> "ChFi3d_FilletShape":
        r"""
        Returns the type of fillet surface.

        Returns
        -------
        ChFi3d_FilletShape

        """
        return _ChFi3d.ChFi3d_FilBuilder_GetFilletShape(self, *args)

    def GetLaw(self, *args) -> "opencascade::handle< Law_Function >":
        r"""
        Returns the rule of elementary evolution of the part to variable vector framing e, returns a rule zero if e is flagged as edge constant.

        Parameters
        ----------
        IC: int
        E: TopoDS_Edge

        Returns
        -------
        opencascade::handle<Law_Function>

        """
        return _ChFi3d.ChFi3d_FilBuilder_GetLaw(self, *args)

    def IsConstant(self, *args) -> "Standard_Boolean":
        r"""
        Returns true the contour is flaged as edge constant.

        Parameters
        ----------
        IC: int

        Returns
        -------
        bool
        Returns true e is flagged as edge constant.

        Parameters
        ----------
        IC: int
        E: TopoDS_Edge

        Returns
        -------
        bool

        """
        return _ChFi3d.ChFi3d_FilBuilder_IsConstant(self, *args)

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

        Parameters
        ----------
        IC: int

        Returns
        -------
        int

        """
        return _ChFi3d.ChFi3d_FilBuilder_NbSurf(self, *args)

    def Radius(self, *args) -> "Standard_Real":
        r"""
        Returns the vector if the contour is flagged as edge constant.

        Parameters
        ----------
        IC: int

        Returns
        -------
        float
        Returns the vector if e is flagged as edge constant.

        Parameters
        ----------
        IC: int
        E: TopoDS_Edge

        Returns
        -------
        float

        """
        return _ChFi3d.ChFi3d_FilBuilder_Radius(self, *args)

    def ResetContour(self, *args) -> "void":
        r"""
        Reset all vectors of contour ic.

        Parameters
        ----------
        IC: int

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_FilBuilder_ResetContour(self, *args)

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

        Parameters
        ----------
        IC: int
        IS: int

        Returns
        -------
        opencascade::handle<ChFiDS_SecHArray1>

        """
        return _ChFi3d.ChFi3d_FilBuilder_Sect(self, *args)

    def SetFilletShape(self, *args) -> "void":
        r"""
        Sets the type of fillet surface.

        Parameters
        ----------
        FShape: ChFi3d_FilletShape

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_FilBuilder_SetFilletShape(self, *args)

    def SetLaw(self, *args) -> "void":
        r"""
        Sets the rule of elementary evolution of the part to variable vector framing e.

        Parameters
        ----------
        IC: int
        E: TopoDS_Edge
        L: Law_Function

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_FilBuilder_SetLaw(self, *args)

    def SetRadius(self, *args) -> "void":
        r"""
        Set the radius of the contour of index ic.

        Parameters
        ----------
        C: Law_Function
        IC: int
        IinC: int

        Returns
        -------
        None
        Set a constant on edge e of the contour of index ic. since then e is flagged as constant.

        Parameters
        ----------
        Radius: float
        IC: int
        E: TopoDS_Edge

        Returns
        -------
        None
        Set a vector on vertex v of the contour of index ic.

        Parameters
        ----------
        Radius: float
        IC: int
        V: TopoDS_Vertex

        Returns
        -------
        None
        Set a vertex on the point of parametre u in the edge iinc of the contour of index ic.

        Parameters
        ----------
        UandR: gp_XY
        IC: int
        IinC: int

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_FilBuilder_SetRadius(self, *args)

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

        Parameters
        ----------
        IC: int

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_FilBuilder_Simulate(self, *args)

    def UnSet(self, *args) -> "void":
        r"""
        Extracts the flag constant and the vector of edge e.

        Parameters
        ----------
        IC: int
        E: TopoDS_Edge

        Returns
        -------
        None
        Extracts the vector of the vertex v.

        Parameters
        ----------
        IC: int
        V: TopoDS_Vertex

        Returns
        -------
        None

        """
        return _ChFi3d.ChFi3d_FilBuilder_UnSet(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _ChFi3d.delete_ChFi3d_FilBuilder

# Register ChFi3d_FilBuilder in _ChFi3d:
_ChFi3d.ChFi3d_FilBuilder_swigregister(ChFi3d_FilBuilder)





