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

"""
IntCurveSurface module, see official documentation at
https://www.opencascade.com/doc/occt-7.7.0/refman/html/package_intcurvesurface.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 _IntCurveSurface
else:
    import _IntCurveSurface

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _IntCurveSurface:
_IntCurveSurface.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 _IntCurveSurface.process_exception(error, method_name, class_name)

from six import with_metaclass
import warnings
from OCC.Wrapper.wrapper_utils import Proxy, deprecated

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.gp
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.math
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.TopAbs
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.Intf
import OCC.Core.Bnd
import OCC.Core.BVH
import OCC.Core.IntSurf

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

IntCurveSurface_Tangent = _IntCurveSurface.IntCurveSurface_Tangent
IntCurveSurface_In = _IntCurveSurface.IntCurveSurface_In
IntCurveSurface_Out = _IntCurveSurface.IntCurveSurface_Out


class IntCurveSurface_TransitionOnCurve(IntEnum):
	IntCurveSurface_Tangent = 0
	IntCurveSurface_In = 1
	IntCurveSurface_Out = 2
IntCurveSurface_Tangent = IntCurveSurface_TransitionOnCurve.IntCurveSurface_Tangent
IntCurveSurface_In = IntCurveSurface_TransitionOnCurve.IntCurveSurface_In
IntCurveSurface_Out = IntCurveSurface_TransitionOnCurve.IntCurveSurface_Out

class IntCurveSurface_SequenceOfPnt(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 _IntCurveSurface.IntCurveSurface_SequenceOfPnt_begin(self)

    def end(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_end(self)

    def cbegin(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_cbegin(self)

    def cend(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_cend(self)

    def __init__(self, *args):
        _IntCurveSurface.IntCurveSurface_SequenceOfPnt_swiginit(self, _IntCurveSurface.new_IntCurveSurface_SequenceOfPnt(*args))

    def Size(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Size(self)

    def Length(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Length(self)

    def Lower(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Lower(self)

    def Upper(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Upper(self)

    def IsEmpty(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_IsEmpty(self)

    def Reverse(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Reverse(self)

    def Exchange(self, I, J):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Exchange(self, I, J)

    @staticmethod
    def delNode(theNode, theAl):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_delNode(theNode, theAl)

    def Clear(self, theAllocator=0):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Clear(self, theAllocator)

    def Assign(self, theOther):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Assign(self, theOther)

    def Set(self, theOther):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Set(self, theOther)

    def Remove(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Remove(self, *args)

    def Append(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Append(self, *args)

    def Prepend(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Prepend(self, *args)

    def InsertBefore(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_InsertBefore(self, *args)

    def InsertAfter(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_InsertAfter(self, *args)

    def Split(self, theIndex, theSeq):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Split(self, theIndex, theSeq)

    def First(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_First(self)

    def ChangeFirst(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeFirst(self)

    def Last(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Last(self)

    def ChangeLast(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeLast(self)

    def Value(self, theIndex):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Value(self, theIndex)

    def ChangeValue(self, theIndex):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeValue(self, theIndex)

    def __call__(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt___call__(self, *args)

    def SetValue(self, theIndex, theItem):
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_SequenceOfPnt

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


# Register IntCurveSurface_SequenceOfPnt in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_SequenceOfPnt_swigregister(IntCurveSurface_SequenceOfPnt)
class IntCurveSurface_SequenceOfSeg(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 _IntCurveSurface.IntCurveSurface_SequenceOfSeg_begin(self)

    def end(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_end(self)

    def cbegin(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_cbegin(self)

    def cend(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_cend(self)

    def __init__(self, *args):
        _IntCurveSurface.IntCurveSurface_SequenceOfSeg_swiginit(self, _IntCurveSurface.new_IntCurveSurface_SequenceOfSeg(*args))

    def Size(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Size(self)

    def Length(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Length(self)

    def Lower(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Lower(self)

    def Upper(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Upper(self)

    def IsEmpty(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_IsEmpty(self)

    def Reverse(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Reverse(self)

    def Exchange(self, I, J):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Exchange(self, I, J)

    @staticmethod
    def delNode(theNode, theAl):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_delNode(theNode, theAl)

    def Clear(self, theAllocator=0):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Clear(self, theAllocator)

    def Assign(self, theOther):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Assign(self, theOther)

    def Set(self, theOther):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Set(self, theOther)

    def Remove(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Remove(self, *args)

    def Append(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Append(self, *args)

    def Prepend(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Prepend(self, *args)

    def InsertBefore(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_InsertBefore(self, *args)

    def InsertAfter(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_InsertAfter(self, *args)

    def Split(self, theIndex, theSeq):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Split(self, theIndex, theSeq)

    def First(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_First(self)

    def ChangeFirst(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeFirst(self)

    def Last(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Last(self)

    def ChangeLast(self):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeLast(self)

    def Value(self, theIndex):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Value(self, theIndex)

    def ChangeValue(self, theIndex):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeValue(self, theIndex)

    def __call__(self, *args):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg___call__(self, *args)

    def SetValue(self, theIndex, theItem):
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_SequenceOfSeg

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


# Register IntCurveSurface_SequenceOfSeg in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_SequenceOfSeg_swigregister(IntCurveSurface_SequenceOfSeg)
class IntCurveSurface_Intersection(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 Dump(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Dump all the fields.

        """
        return _IntCurveSurface.IntCurveSurface_Intersection_Dump(self, *args)

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

        Description
        -----------
        Returns the <done> field.

        """
        return _IntCurveSurface.IntCurveSurface_Intersection_IsDone(self, *args)

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

        Description
        -----------
        Returns true if curve is parallel or belongs surface this case is recognized only for some pairs of analytical curves and surfaces (plane - line, ...).

        """
        return _IntCurveSurface.IntCurveSurface_Intersection_IsParallel(self, *args)

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

        Description
        -----------
        Returns the number of intersectionpoint if isdone returns true. else notdone is raised.

        """
        return _IntCurveSurface.IntCurveSurface_Intersection_NbPoints(self, *args)

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

        Description
        -----------
        Returns the number of intersectionsegment if isdone returns true. else notdone is raised.

        """
        return _IntCurveSurface.IntCurveSurface_Intersection_NbSegments(self, *args)

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

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

        Return
        -------
        IntCurveSurface_IntersectionPoint

        Description
        -----------
        Returns the intersectionpoint of range <index> raises notdone if the computation has failed or if the computation has not been done raises outofrange if index is not in the range <1..nbpoints>.

        """
        return _IntCurveSurface.IntCurveSurface_Intersection_Point(self, *args)

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

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

        Return
        -------
        IntCurveSurface_IntersectionSegment

        Description
        -----------
        Returns the intersectionsegment of range <index> raises notdone if the computation has failed or if the computation has not been done raises outofrange if index is not in the range <1..nbsegment>.

        """
        return _IntCurveSurface.IntCurveSurface_Intersection_Segment(self, *args)

    __repr__ = _dumps_object


# Register IntCurveSurface_Intersection in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_Intersection_swigregister(IntCurveSurface_Intersection)
class IntCurveSurface_IntersectionPoint(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"""
        Return
        -------
        None

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        P: gp_Pnt
        USurf: float
        VSurf: float
        UCurv: float
        TrCurv: IntCurveSurface_TransitionOnCurve

        Return
        -------
        None

        Description
        -----------
        Create an intersectionpoint.

        """
        _IntCurveSurface.IntCurveSurface_IntersectionPoint_swiginit(self, _IntCurveSurface.new_IntCurveSurface_IntersectionPoint(*args))

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

        Description
        -----------
        Dump all the fields.

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionPoint_Dump(self, *args)

    def Pnt(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the geometric point.

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionPoint_Pnt(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt
        USurf: float
        VSurf: float
        UCurv: float
        TrCurv: IntCurveSurface_TransitionOnCurve

        Return
        -------
        None

        Description
        -----------
        Set the fields of the current intersectionpoint.

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionPoint_SetValues(self, *args)

    def Transition(self, *args):
        r"""
        Return
        -------
        IntCurveSurface_TransitionOnCurve

        Description
        -----------
        Returns the transition of the point.

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionPoint_Transition(self, *args)

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

        Description
        -----------
        Returns the u parameter on the surface.

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionPoint_U(self, *args)

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

        Description
        -----------
        Returns the v parameter on the surface.

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionPoint_V(self, *args)

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

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

        Return
        -------
        USurf: float
        VSurf: float
        UCurv: float
        TrCurv: IntCurveSurface_TransitionOnCurve

        Description
        -----------
        Get the fields of the current intersectionpoint.

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionPoint_Values(self, *args)

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

        Description
        -----------
        Returns the parameter on the curve.

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionPoint_W(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_IntersectionPoint

# Register IntCurveSurface_IntersectionPoint in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_IntersectionPoint_swigregister(IntCurveSurface_IntersectionPoint)
class IntCurveSurface_IntersectionSegment(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"""
        Return
        -------
        None

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

        Parameters
        ----------
        P1: IntCurveSurface_IntersectionPoint
        P2: IntCurveSurface_IntersectionPoint

        Return
        -------
        None

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

        """
        _IntCurveSurface.IntCurveSurface_IntersectionSegment_swiginit(self, _IntCurveSurface.new_IntCurveSurface_IntersectionSegment(*args))

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

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

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionSegment_Dump(self, *args)

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

        Parameters
        ----------
        P1: IntCurveSurface_IntersectionPoint

        Return
        -------
        None

        Description
        -----------
        No available documentation.
        Return
        -------
        IntCurveSurface_IntersectionPoint

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

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionSegment_FirstPoint(self, *args)

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

        Parameters
        ----------
        P2: IntCurveSurface_IntersectionPoint

        Return
        -------
        None

        Description
        -----------
        No available documentation.
        Return
        -------
        IntCurveSurface_IntersectionPoint

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

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionSegment_SecondPoint(self, *args)

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

        Parameters
        ----------
        P1: IntCurveSurface_IntersectionPoint
        P2: IntCurveSurface_IntersectionPoint

        Return
        -------
        None

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

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionSegment_SetValues(self, *args)

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

        Parameters
        ----------
        P1: IntCurveSurface_IntersectionPoint
        P2: IntCurveSurface_IntersectionPoint

        Return
        -------
        None

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

        """
        return _IntCurveSurface.IntCurveSurface_IntersectionSegment_Values(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_IntersectionSegment

# Register IntCurveSurface_IntersectionSegment in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_IntersectionSegment_swigregister(IntCurveSurface_IntersectionSegment)
class IntCurveSurface_TheCSFunctionOfHInter(OCC.Core.math.math_FunctionSetWithDerivatives):
    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
        ----------
        S: Adaptor3d_Surface
        C: Adaptor3d_Curve

        Return
        -------
        None

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

        """
        _IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheCSFunctionOfHInter(*args))

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

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

        """
        return _IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_AuxillarCurve(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_AuxillarSurface(self, *args)

    def Point(self, *args):
        r"""
        Return
        -------
        gp_Pnt

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

        """
        return _IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_Point(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_Root(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheCSFunctionOfHInter

# Register IntCurveSurface_TheCSFunctionOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_swigregister(IntCurveSurface_TheCSFunctionOfHInter)
class IntCurveSurface_TheExactHInter(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
        ----------
        U: float
        V: float
        W: float
        F: IntCurveSurface_TheCSFunctionOfHInter
        TolTangency: float
        MarginCoef: float (optional, default to 0.0)

        Return
        -------
        None

        Description
        -----------
        Compute the solution point with the close point margincoef is the coefficient for extension of uv bounds. ex., ufirst -= margincoef*(ulast-ufirst).

        Parameters
        ----------
        F: IntCurveSurface_TheCSFunctionOfHInter
        TolTangency: float

        Return
        -------
        None

        Description
        -----------
        Initialize the parameters to compute the solution.

        """
        _IntCurveSurface.IntCurveSurface_TheExactHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheExactHInter(*args))

    def Function(self, *args):
        r"""
        Return
        -------
        IntCurveSurface_TheCSFunctionOfHInter

        Description
        -----------
        Return the math function which is used to compute the intersection.

        """
        return _IntCurveSurface.IntCurveSurface_TheExactHInter_Function(self, *args)

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

        Description
        -----------
        Returns true if the creation completed without failure.

        """
        return _IntCurveSurface.IntCurveSurface_TheExactHInter_IsDone(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_TheExactHInter_IsEmpty(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_TheExactHInter_ParameterOnCurve(self, *args)

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

        Parameters
        ----------

        Return
        -------
        U: float
        V: float

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

        """
        return _IntCurveSurface.IntCurveSurface_TheExactHInter_ParameterOnSurface(self, *args)

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

        Parameters
        ----------
        U: float
        V: float
        W: float
        Rsnld: math_FunctionSetRoot
        u0: float
        v0: float
        u1: float
        v1: float
        w0: float
        w1: float

        Return
        -------
        None

        Description
        -----------
        Compute the solution it's possible to write to optimize: intimp_intcs inter(s1,c1,toltangency) math_functionsetroot rsnld(inter.function()) while ...{ u=... v=... w=... inter.perform(u,v,w,rsnld) } or intimp_intcs inter(toltangency) inter.setsurface(s); math_functionsetroot rsnld(inter.function()) while ...{ c=... inter.setcurve(c); u=... v=... w=... inter.perform(u,v,w,rsnld) }.

        """
        return _IntCurveSurface.IntCurveSurface_TheExactHInter_Perform(self, *args)

    def Point(self, *args):
        r"""
        Return
        -------
        gp_Pnt

        Description
        -----------
        Returns the intersection point the exception notdone is raised if isdone is false. the exception domainerror is raised if isempty is true.

        """
        return _IntCurveSurface.IntCurveSurface_TheExactHInter_Point(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheExactHInter

# Register IntCurveSurface_TheExactHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheExactHInter_swigregister(IntCurveSurface_TheExactHInter)
class IntCurveSurface_TheHCurveTool(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        opencascade::handle<Geom_BSplineCurve>

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_BSpline(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        opencascade::handle<Geom_BezierCurve>

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Bezier(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        gp_Circ

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Circle(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        GeomAbs_Shape

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Continuity(*args)

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

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

        Return
        -------
        None

        Description
        -----------
        Computes the point of parameter u on the curve.

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D0(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float
        P: gp_Pnt
        V: gp_Vec

        Return
        -------
        None

        Description
        -----------
        Computes the point of parameter u on the curve with its first derivative. raised if the continuity of the current interval is not c1.

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D1(*args)

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

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

        Return
        -------
        None

        Description
        -----------
        Returns the point p of parameter u, the first and second derivatives v1 and v2. raised if the continuity of the current interval is not c2.

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D2(*args)

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

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

        Return
        -------
        None

        Description
        -----------
        Returns the point p of parameter u, the first, the second and the third derivative. raised if the continuity of the current interval is not c3.

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D3(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float
        N: int

        Return
        -------
        gp_Vec

        Description
        -----------
        The returned vector gives the value of the derivative for the order of derivation n. raised if the continuity of the current interval is not cn. raised if n < 1.

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_DN(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        gp_Elips

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Ellipse(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        float

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_FirstParameter(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        GeomAbs_CurveType

        Description
        -----------
        Returns the type of the curve in the current interval: line, circle, ellipse, hyperbola, parabola, beziercurve, bsplinecurve, othercurve.

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_GetType(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        gp_Hypr

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Hyperbola(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve
        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 _IntCurveSurface.IntCurveSurface_TheHCurveTool_Intervals(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        bool

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_IsClosed(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        bool

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_IsPeriodic(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        float

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_LastParameter(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        gp_Lin

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Line(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve
        S: GeomAbs_Shape

        Return
        -------
        int

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_NbIntervals(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve
        U0: float
        U1: float

        Return
        -------
        int

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_NbSamples(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        gp_Parab

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Parabola(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve

        Return
        -------
        float

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Period(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve
        R3d: float

        Return
        -------
        float

        Description
        -----------
        Returns the parametric resolution corresponding to the real space resolution <r3d>.

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Resolution(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve
        U0: float
        U1: float
        Defl: float
        NbMin: int
        Pars: TColStd_HArray1OfReal

        Return
        -------
        None

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

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_SamplePars(*args)

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

        Parameters
        ----------
        C: Adaptor3d_Curve
        U: float

        Return
        -------
        gp_Pnt

        Description
        -----------
        Computes the point of parameter u on the curve.

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Value(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntCurveSurface.IntCurveSurface_TheHCurveTool_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheHCurveTool())
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheHCurveTool

# Register IntCurveSurface_TheHCurveTool in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheHCurveTool_swigregister(IntCurveSurface_TheHCurveTool)
class IntCurveSurface_TheInterferenceOfHInter(OCC.Core.Intf.Intf_Interference):
    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 interference between polygon and polyhedron.

        Parameters
        ----------
        thePolyg: IntCurveSurface_ThePolygonOfHInter
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Constructs and computes an interference between the polygon and the polyhedron.

        Parameters
        ----------
        theLin: gp_Lin
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Constructs and computes an interference between the straight line and the polyhedron.

        Parameters
        ----------
        theLins: Intf_Array1OfLin
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Constructs and computes an interference between the straight lines and the polyhedron.

        Parameters
        ----------
        thePolyg: IntCurveSurface_ThePolygonOfHInter
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        theBoundSB: Bnd_BoundSortBox

        Return
        -------
        None

        Description
        -----------
        Constructs and computes an interference between the polygon and the polyhedron.

        Parameters
        ----------
        theLin: gp_Lin
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        theBoundSB: Bnd_BoundSortBox

        Return
        -------
        None

        Description
        -----------
        Constructs and computes an interference between the straight line and the polyhedron.

        Parameters
        ----------
        theLins: Intf_Array1OfLin
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        theBoundSB: Bnd_BoundSortBox

        Return
        -------
        None

        Description
        -----------
        Constructs and computes an interference between the straight lines and the polyhedron.

        """
        _IntCurveSurface.IntCurveSurface_TheInterferenceOfHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheInterferenceOfHInter(*args))

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

        Parameters
        ----------
        thePolyg: IntCurveSurface_ThePolygonOfHInter
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        theBoundSB: Bnd_BoundSortBox

        Return
        -------
        None

        Description
        -----------
        Compares the boundings between the segment of <thepolyg> and the facets of <thepolyh>.

        Parameters
        ----------
        thePolyg: IntCurveSurface_ThePolygonOfHInter
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Compares the boundings between the segment of <thepolyg> and the facets of <thepolyh>.

        """
        return _IntCurveSurface.IntCurveSurface_TheInterferenceOfHInter_Interference(self, *args)

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

        Parameters
        ----------
        thePolyg: IntCurveSurface_ThePolygonOfHInter
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Computes an interference between the polygon and the polyhedron.

        Parameters
        ----------
        theLin: gp_Lin
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Computes an interference between the straight line and the polyhedron.

        Parameters
        ----------
        theLins: Intf_Array1OfLin
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Computes an interference between the straight lines and the polyhedron.

        Parameters
        ----------
        thePolyg: IntCurveSurface_ThePolygonOfHInter
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        theBoundSB: Bnd_BoundSortBox

        Return
        -------
        None

        Description
        -----------
        Computes an interference between the polygon and the polyhedron.

        Parameters
        ----------
        theLin: gp_Lin
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        theBoundSB: Bnd_BoundSortBox

        Return
        -------
        None

        Description
        -----------
        Computes an interference between the straight line and the polyhedron.

        Parameters
        ----------
        theLins: Intf_Array1OfLin
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        theBoundSB: Bnd_BoundSortBox

        Return
        -------
        None

        Description
        -----------
        Computes an interference between the straight lines and the polyhedron.

        """
        return _IntCurveSurface.IntCurveSurface_TheInterferenceOfHInter_Perform(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheInterferenceOfHInter

# Register IntCurveSurface_TheInterferenceOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheInterferenceOfHInter_swigregister(IntCurveSurface_TheInterferenceOfHInter)
class IntCurveSurface_ThePolygonOfHInter(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
        ----------
        Curve: Adaptor3d_Curve
        NbPnt: int

        Return
        -------
        None

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

        Parameters
        ----------
        Curve: Adaptor3d_Curve
        U1: float
        U2: float
        NbPnt: int

        Return
        -------
        None

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

        Parameters
        ----------
        Curve: Adaptor3d_Curve
        Upars: TColStd_Array1OfReal

        Return
        -------
        None

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

        """
        _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_ThePolygonOfHInter(*args))

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

        Parameters
        ----------
        Index: int
        ParamOnLine: float

        Return
        -------
        float

        Description
        -----------
        Give an approximation of the parameter on the curve according to the discretization of the curve.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_ApproxParamOnCurve(self, *args)

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

        Parameters
        ----------
        theIndex: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Give the point of range index in the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_BeginOfSeg(self, *args)

    def Bounding(self, *args):
        r"""
        Return
        -------
        Bnd_Box

        Description
        -----------
        Give the bounding box of the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_Bounding(self, *args)

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

        Parameters
        ----------
        flag: bool

        Return
        -------
        None

        Description
        -----------
        No available documentation.
        Return
        -------
        bool

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_Closed(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_DeflectionOverEstimation(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_Dump(self, *args)

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

        Parameters
        ----------
        theIndex: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Give the point of range index in the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_EndOfSeg(self, *args)

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

        Description
        -----------
        Returns the parameter (on the curve) of the first point of the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_InfParameter(self, *args)

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

        Description
        -----------
        Give the number of segments in the polyline.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_NbSegments(self, *args)

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

        Parameters
        ----------
        x: float

        Return
        -------
        None

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_SetDeflectionOverEstimation(self, *args)

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

        Description
        -----------
        Returns the parameter (on the curve) of the last point of the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_SupParameter(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_ThePolygonOfHInter

# Register IntCurveSurface_ThePolygonOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_swigregister(IntCurveSurface_ThePolygonOfHInter)
class IntCurveSurface_ThePolygonToolOfHInter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        thePolygon: IntCurveSurface_ThePolygonOfHInter
        Index: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Give the point of range index in the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_BeginOfSeg(*args)

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

        Parameters
        ----------
        thePolygon: IntCurveSurface_ThePolygonOfHInter

        Return
        -------
        Bnd_Box

        Description
        -----------
        Give the bounding box of the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Bounding(*args)

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

        Parameters
        ----------
        thePolygon: IntCurveSurface_ThePolygonOfHInter

        Return
        -------
        bool

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Closed(*args)

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

        Parameters
        ----------
        thePolygon: IntCurveSurface_ThePolygonOfHInter

        Return
        -------
        float

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_DeflectionOverEstimation(*args)

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

        Parameters
        ----------
        thePolygon: IntCurveSurface_ThePolygonOfHInter

        Return
        -------
        None

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Dump(*args)

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

        Parameters
        ----------
        thePolygon: IntCurveSurface_ThePolygonOfHInter
        Index: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Give the point of range index in the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_EndOfSeg(*args)

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

        Parameters
        ----------
        thePolygon: IntCurveSurface_ThePolygonOfHInter

        Return
        -------
        int

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_NbSegments(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_ThePolygonToolOfHInter())
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_ThePolygonToolOfHInter

# Register IntCurveSurface_ThePolygonToolOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_swigregister(IntCurveSurface_ThePolygonToolOfHInter)
class IntCurveSurface_ThePolyhedronToolOfHInter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        Bnd_Box

        Description
        -----------
        Give the bounding box of the polyhedrontool.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Bounding(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        opencascade::handle<Bnd_HArray1OfBox>

        Description
        -----------
        Give the array of boxes. the box <n> corresponding to the triangle <n>.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_ComponentsBounding(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        float

        Description
        -----------
        Give the tolerance of the polygon.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_DeflectionOverEstimation(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

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

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Dump(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        float

        Description
        -----------
        This method returns a border deflection of the polyhedron.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_GetBorderDeflection(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        Index1: int
        Index2: int

        Return
        -------
        bool

        Description
        -----------
        This method returns true if the edge based on points with indices index1 and index2 represents a boundary edge. it is necessary to take into account the boundary deflection for this edge.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_IsOnBound(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        int

        Description
        -----------
        Give the number of triangles in this polyhedral surface.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_NbTriangles(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        Index: int

        Return
        -------
        gp_Pnt

        Description
        -----------
        Give the point of index i in the polyhedral surface.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Point(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        Triang: int
        Pivot: int
        Pedge: int

        Return
        -------
        TriCon: int
        OtherP: int

        Description
        -----------
        Give the address tricon of the triangle connexe to the triangle of address triang by the edge pivot pedge and the third point of this connexe triangle. when we are on a free edge tricon==0 but the function return the value of the triangle in the other side of pivot on the free edge. used to turn around a vertex.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_TriConnex(*args)

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

        Parameters
        ----------
        thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        Index: int

        Return
        -------
        P1: int
        P2: int
        P3: int

        Description
        -----------
        Give the indices of the 3 points of the triangle of address index in the polyhedrontool.

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Triangle(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_ThePolyhedronToolOfHInter())
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_ThePolyhedronToolOfHInter

# Register IntCurveSurface_ThePolyhedronToolOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_swigregister(IntCurveSurface_ThePolyhedronToolOfHInter)
class IntCurveSurface_TheQuadCurvExactHInter(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
        ----------
        S: Adaptor3d_Surface
        C: Adaptor3d_Curve

        Return
        -------
        None

        Description
        -----------
        Provides the signed distance function: q(w) and its first derivative dq(w)/dw.

        """
        _IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheQuadCurvExactHInter(*args))

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

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

        Return
        -------
        U1: float
        U2: float

        Description
        -----------
        U1 and u2 are the parameters of a segment on the curve.

        """
        return _IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_Intervals(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_IsDone(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_NbIntervals(self, *args)

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

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

        """
        return _IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_NbRoots(self, *args)

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

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

        Return
        -------
        float

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

        """
        return _IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_Root(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheQuadCurvExactHInter

# Register IntCurveSurface_TheQuadCurvExactHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_swigregister(IntCurveSurface_TheQuadCurvExactHInter)
class IntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter(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"""

        Parameters
        ----------
        Q: IntSurf_Quadric
        C: Adaptor3d_Curve

        Return
        -------
        None

        Description
        -----------
        Create the function.

        """
        _IntCurveSurface.IntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter

# Register IntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter_swigregister(IntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter)
class IntCurveSurface_HInter(IntCurveSurface_Intersection):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Empty constructor.

        """
        _IntCurveSurface.IntCurveSurface_HInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_HInter(*args))

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

        Parameters
        ----------
        Curve: Adaptor3d_Curve
        Surface: Adaptor3d_Surface

        Return
        -------
        None

        Description
        -----------
        Compute the intersection between the curve and the surface.

        Parameters
        ----------
        Curve: Adaptor3d_Curve
        Polygon: IntCurveSurface_ThePolygonOfHInter
        Surface: Adaptor3d_Surface

        Return
        -------
        None

        Description
        -----------
        Compute the intersection between the curve and the surface. the curve is already sampled and its polygon: <polygon> is given.

        Parameters
        ----------
        Curve: Adaptor3d_Curve
        ThePolygon: IntCurveSurface_ThePolygonOfHInter
        Surface: Adaptor3d_Surface
        Polyhedron: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Compute the intersection between the curve and the surface. the curve is already sampled and its polygon: <polygon> is given. the surface is also sampled and <polyhedron> is given.

        Parameters
        ----------
        Curve: Adaptor3d_Curve
        ThePolygon: IntCurveSurface_ThePolygonOfHInter
        Surface: Adaptor3d_Surface
        Polyhedron: IntCurveSurface_ThePolyhedronOfHInter
        BndBSB: Bnd_BoundSortBox

        Return
        -------
        None

        Description
        -----------
        Compute the intersection between the curve and the surface. the curve is already sampled and its polygon: <polygon> is given. the surface is also sampled and <polyhedron> is given.

        Parameters
        ----------
        Curve: Adaptor3d_Curve
        Surface: Adaptor3d_Surface
        Polyhedron: IntCurveSurface_ThePolyhedronOfHInter

        Return
        -------
        None

        Description
        -----------
        Compute the intersection between the curve and the surface. the surface is already sampled and its polyhedron: <polyhedron> is given.

        """
        return _IntCurveSurface.IntCurveSurface_HInter_Perform(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_HInter

# Register IntCurveSurface_HInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_HInter_swigregister(IntCurveSurface_HInter)

@classnotwrapped
class IntCurveSurface_ThePolyhedronOfHInter:
	pass





@deprecated
def IntCurveSurface_TheHCurveTool_BSpline(*args):
	return IntCurveSurface_TheHCurveTool.BSpline(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Bezier(*args):
	return IntCurveSurface_TheHCurveTool.Bezier(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Circle(*args):
	return IntCurveSurface_TheHCurveTool.Circle(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Continuity(*args):
	return IntCurveSurface_TheHCurveTool.Continuity(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_D0(*args):
	return IntCurveSurface_TheHCurveTool.D0(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_D1(*args):
	return IntCurveSurface_TheHCurveTool.D1(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_D2(*args):
	return IntCurveSurface_TheHCurveTool.D2(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_D3(*args):
	return IntCurveSurface_TheHCurveTool.D3(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_DN(*args):
	return IntCurveSurface_TheHCurveTool.DN(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Ellipse(*args):
	return IntCurveSurface_TheHCurveTool.Ellipse(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_FirstParameter(*args):
	return IntCurveSurface_TheHCurveTool.FirstParameter(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_GetType(*args):
	return IntCurveSurface_TheHCurveTool.GetType(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Hyperbola(*args):
	return IntCurveSurface_TheHCurveTool.Hyperbola(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Intervals(*args):
	return IntCurveSurface_TheHCurveTool.Intervals(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_IsClosed(*args):
	return IntCurveSurface_TheHCurveTool.IsClosed(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_IsPeriodic(*args):
	return IntCurveSurface_TheHCurveTool.IsPeriodic(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_LastParameter(*args):
	return IntCurveSurface_TheHCurveTool.LastParameter(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Line(*args):
	return IntCurveSurface_TheHCurveTool.Line(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_NbIntervals(*args):
	return IntCurveSurface_TheHCurveTool.NbIntervals(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_NbSamples(*args):
	return IntCurveSurface_TheHCurveTool.NbSamples(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Parabola(*args):
	return IntCurveSurface_TheHCurveTool.Parabola(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Period(*args):
	return IntCurveSurface_TheHCurveTool.Period(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Resolution(*args):
	return IntCurveSurface_TheHCurveTool.Resolution(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_SamplePars(*args):
	return IntCurveSurface_TheHCurveTool.SamplePars(*args)

@deprecated
def IntCurveSurface_TheHCurveTool_Value(*args):
	return IntCurveSurface_TheHCurveTool.Value(*args)

@deprecated
def IntCurveSurface_ThePolygonToolOfHInter_BeginOfSeg(*args):
	return IntCurveSurface_ThePolygonToolOfHInter.BeginOfSeg(*args)

@deprecated
def IntCurveSurface_ThePolygonToolOfHInter_Bounding(*args):
	return IntCurveSurface_ThePolygonToolOfHInter.Bounding(*args)

@deprecated
def IntCurveSurface_ThePolygonToolOfHInter_Closed(*args):
	return IntCurveSurface_ThePolygonToolOfHInter.Closed(*args)

@deprecated
def IntCurveSurface_ThePolygonToolOfHInter_DeflectionOverEstimation(*args):
	return IntCurveSurface_ThePolygonToolOfHInter.DeflectionOverEstimation(*args)

@deprecated
def IntCurveSurface_ThePolygonToolOfHInter_Dump(*args):
	return IntCurveSurface_ThePolygonToolOfHInter.Dump(*args)

@deprecated
def IntCurveSurface_ThePolygonToolOfHInter_EndOfSeg(*args):
	return IntCurveSurface_ThePolygonToolOfHInter.EndOfSeg(*args)

@deprecated
def IntCurveSurface_ThePolygonToolOfHInter_NbSegments(*args):
	return IntCurveSurface_ThePolygonToolOfHInter.NbSegments(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_Bounding(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.Bounding(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_ComponentsBounding(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.ComponentsBounding(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_DeflectionOverEstimation(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.DeflectionOverEstimation(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_Dump(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.Dump(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_GetBorderDeflection(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.GetBorderDeflection(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_IsOnBound(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.IsOnBound(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_NbTriangles(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.NbTriangles(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_Point(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.Point(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_TriConnex(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.TriConnex(*args)

@deprecated
def IntCurveSurface_ThePolyhedronToolOfHInter_Triangle(*args):
	return IntCurveSurface_ThePolyhedronToolOfHInter.Triangle(*args)



