# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.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.4.0/refman/html/package_intcurvesurface.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 _IntCurveSurface
else:
    import _IntCurveSurface

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _IntCurveSurface.SWIG_PyInstanceMethod_New
_swig_new_static_method = _IntCurveSurface.SWIG_PyStaticMethod_New

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__ = _IntCurveSurface.delete_SwigPyIterator
    value = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_value)
    incr = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_incr)
    decr = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_decr)
    distance = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_distance)
    equal = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_equal)
    copy = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_copy)
    next = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_next)
    __next__ = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator___next__)
    previous = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_previous)
    advance = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator_advance)
    __eq__ = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator___eq__)
    __ne__ = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator___ne__)
    __iadd__ = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator___iadd__)
    __isub__ = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator___isub__)
    __add__ = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator___add__)
    __sub__ = _swig_new_instance_method(_IntCurveSurface.SwigPyIterator___sub__)
    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


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.math
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.Message
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
IntCurveSurface_Tangent = _IntCurveSurface.IntCurveSurface_Tangent
IntCurveSurface_In = _IntCurveSurface.IntCurveSurface_In
IntCurveSurface_Out = _IntCurveSurface.IntCurveSurface_Out
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
    begin = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_begin)
    end = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_end)
    cbegin = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_cbegin)
    cend = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_cend)

    def __init__(self, *args):
        _IntCurveSurface.IntCurveSurface_SequenceOfSeg_swiginit(self, _IntCurveSurface.new_IntCurveSurface_SequenceOfSeg(*args))
    Size = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Size)
    Length = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Length)
    Lower = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Lower)
    Upper = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Upper)
    IsEmpty = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_IsEmpty)
    Reverse = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Reverse)
    Exchange = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Exchange)
    delNode = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_delNode)
    Clear = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Clear)
    Assign = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Assign)
    Set = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Set)
    Remove = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Remove)
    Append = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Append)
    Prepend = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Prepend)
    InsertBefore = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_InsertBefore)
    InsertAfter = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_InsertAfter)
    Split = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Split)
    First = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_First)
    ChangeFirst = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeFirst)
    Last = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Last)
    ChangeLast = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeLast)
    Value = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_Value)
    ChangeValue = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeValue)
    __call__ = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg___call__)
    SetValue = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfSeg_SetValue)
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_SequenceOfSeg

# Register IntCurveSurface_SequenceOfSeg in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_SequenceOfSeg_swigregister(IntCurveSurface_SequenceOfSeg)
IntCurveSurface_SequenceOfSeg_delNode = _IntCurveSurface.IntCurveSurface_SequenceOfSeg_delNode

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
    begin = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_begin)
    end = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_end)
    cbegin = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_cbegin)
    cend = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_cend)

    def __init__(self, *args):
        _IntCurveSurface.IntCurveSurface_SequenceOfPnt_swiginit(self, _IntCurveSurface.new_IntCurveSurface_SequenceOfPnt(*args))
    Size = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Size)
    Length = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Length)
    Lower = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Lower)
    Upper = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Upper)
    IsEmpty = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_IsEmpty)
    Reverse = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Reverse)
    Exchange = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Exchange)
    delNode = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_delNode)
    Clear = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Clear)
    Assign = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Assign)
    Set = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Set)
    Remove = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Remove)
    Append = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Append)
    Prepend = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Prepend)
    InsertBefore = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_InsertBefore)
    InsertAfter = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_InsertAfter)
    Split = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Split)
    First = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_First)
    ChangeFirst = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeFirst)
    Last = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Last)
    ChangeLast = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeLast)
    Value = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_Value)
    ChangeValue = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeValue)
    __call__ = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt___call__)
    SetValue = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_SequenceOfPnt_SetValue)
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_SequenceOfPnt

# Register IntCurveSurface_SequenceOfPnt in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_SequenceOfPnt_swigregister(IntCurveSurface_SequenceOfPnt)
IntCurveSurface_SequenceOfPnt_delNode = _IntCurveSurface.IntCurveSurface_SequenceOfPnt_delNode

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
    Dump = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_Intersection_Dump)
    IsDone = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_Intersection_IsDone)
    IsParallel = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_Intersection_IsParallel)
    NbPoints = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_Intersection_NbPoints)
    NbSegments = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_Intersection_NbSegments)
    Point = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_Intersection_Point)
    Segment = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_Intersection_Segment)

    __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
    Dump = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionPoint_Dump)

    def __init__(self, *args):
        r"""
        * Empty Constructor.
        	:rtype: None* Create an IntersectionPoint.
        	:param P:
        	:type P: gp_Pnt
        	:param USurf:
        	:type USurf: float
        	:param VSurf:
        	:type VSurf: float
        	:param UCurv:
        	:type UCurv: float
        	:param TrCurv:
        	:type TrCurv: IntCurveSurface_TransitionOnCurve
        	:rtype: None
        """
        _IntCurveSurface.IntCurveSurface_IntersectionPoint_swiginit(self, _IntCurveSurface.new_IntCurveSurface_IntersectionPoint(*args))
    Pnt = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionPoint_Pnt)
    SetValues = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionPoint_SetValues)
    Transition = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionPoint_Transition)
    U = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionPoint_U)
    V = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionPoint_V)
    Values = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionPoint_Values)
    W = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionPoint_W)

    __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
    Dump = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionSegment_Dump)
    FirstPoint = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionSegment_FirstPoint)

    def __init__(self, *args):
        r"""
        :rtype: None:param P1:
        	:type P1: IntCurveSurface_IntersectionPoint
        	:param P2:
        	:type P2: IntCurveSurface_IntersectionPoint
        	:rtype: None
        """
        _IntCurveSurface.IntCurveSurface_IntersectionSegment_swiginit(self, _IntCurveSurface.new_IntCurveSurface_IntersectionSegment(*args))
    SecondPoint = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionSegment_SecondPoint)
    SetValues = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionSegment_SetValues)
    Values = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_IntersectionSegment_Values)

    __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
    AuxillarCurve = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_AuxillarCurve)
    AuxillarSurface = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_AuxillarSurface)

    def __init__(self, *args):
        r"""
        :param S:
        	:type S: Adaptor3d_HSurface
        	:param C:
        	:type C: Adaptor3d_HCurve
        	:rtype: None
        """
        _IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheCSFunctionOfHInter(*args))
    Point = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_Point)
    Root = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_Root)

    __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
    Function = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheExactHInter_Function)

    def __init__(self, *args):
        r"""
        * compute the solution point with the close point MarginCoef is the coefficient for extension of UV bounds. Ex., UFirst -= MarginCoef*(ULast-UFirst)
        	:param U:
        	:type U: float
        	:param V:
        	:type V: float
        	:param W:
        	:type W: float
        	:param F:
        	:type F: IntCurveSurface_TheCSFunctionOfHInter
        	:param TolTangency:
        	:type TolTangency: float
        	:param MarginCoef: default value is 0.0
        	:type MarginCoef: float
        	:rtype: None* initialize the parameters to compute the solution
        	:param F:
        	:type F: IntCurveSurface_TheCSFunctionOfHInter
        	:param TolTangency:
        	:type TolTangency: float
        	:rtype: None
        """
        _IntCurveSurface.IntCurveSurface_TheExactHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheExactHInter(*args))
    IsDone = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheExactHInter_IsDone)
    IsEmpty = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheExactHInter_IsEmpty)
    ParameterOnCurve = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheExactHInter_ParameterOnCurve)
    ParameterOnSurface = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheExactHInter_ParameterOnSurface)
    Perform = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheExactHInter_Perform)
    Point = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheExactHInter_Point)

    __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
    BSpline = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_BSpline)
    Bezier = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Bezier)
    Circle = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Circle)
    Continuity = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Continuity)
    D0 = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_D0)
    D1 = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_D1)
    D2 = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_D2)
    D3 = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_D3)
    DN = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_DN)
    Ellipse = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Ellipse)
    FirstParameter = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_FirstParameter)
    GetType = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_GetType)
    Hyperbola = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Hyperbola)
    Intervals = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Intervals)
    IsClosed = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_IsClosed)
    IsPeriodic = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_IsPeriodic)
    LastParameter = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_LastParameter)
    Line = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Line)
    NbIntervals = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_NbIntervals)
    NbSamples = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_NbSamples)
    Parabola = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Parabola)
    Period = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Period)
    Resolution = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Resolution)
    SamplePars = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_SamplePars)
    Value = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_TheHCurveTool_Value)

    __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)
IntCurveSurface_TheHCurveTool_BSpline = _IntCurveSurface.IntCurveSurface_TheHCurveTool_BSpline
IntCurveSurface_TheHCurveTool_Bezier = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Bezier
IntCurveSurface_TheHCurveTool_Circle = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Circle
IntCurveSurface_TheHCurveTool_Continuity = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Continuity
IntCurveSurface_TheHCurveTool_D0 = _IntCurveSurface.IntCurveSurface_TheHCurveTool_D0
IntCurveSurface_TheHCurveTool_D1 = _IntCurveSurface.IntCurveSurface_TheHCurveTool_D1
IntCurveSurface_TheHCurveTool_D2 = _IntCurveSurface.IntCurveSurface_TheHCurveTool_D2
IntCurveSurface_TheHCurveTool_D3 = _IntCurveSurface.IntCurveSurface_TheHCurveTool_D3
IntCurveSurface_TheHCurveTool_DN = _IntCurveSurface.IntCurveSurface_TheHCurveTool_DN
IntCurveSurface_TheHCurveTool_Ellipse = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Ellipse
IntCurveSurface_TheHCurveTool_FirstParameter = _IntCurveSurface.IntCurveSurface_TheHCurveTool_FirstParameter
IntCurveSurface_TheHCurveTool_GetType = _IntCurveSurface.IntCurveSurface_TheHCurveTool_GetType
IntCurveSurface_TheHCurveTool_Hyperbola = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Hyperbola
IntCurveSurface_TheHCurveTool_Intervals = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Intervals
IntCurveSurface_TheHCurveTool_IsClosed = _IntCurveSurface.IntCurveSurface_TheHCurveTool_IsClosed
IntCurveSurface_TheHCurveTool_IsPeriodic = _IntCurveSurface.IntCurveSurface_TheHCurveTool_IsPeriodic
IntCurveSurface_TheHCurveTool_LastParameter = _IntCurveSurface.IntCurveSurface_TheHCurveTool_LastParameter
IntCurveSurface_TheHCurveTool_Line = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Line
IntCurveSurface_TheHCurveTool_NbIntervals = _IntCurveSurface.IntCurveSurface_TheHCurveTool_NbIntervals
IntCurveSurface_TheHCurveTool_NbSamples = _IntCurveSurface.IntCurveSurface_TheHCurveTool_NbSamples
IntCurveSurface_TheHCurveTool_Parabola = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Parabola
IntCurveSurface_TheHCurveTool_Period = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Period
IntCurveSurface_TheHCurveTool_Resolution = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Resolution
IntCurveSurface_TheHCurveTool_SamplePars = _IntCurveSurface.IntCurveSurface_TheHCurveTool_SamplePars
IntCurveSurface_TheHCurveTool_Value = _IntCurveSurface.IntCurveSurface_TheHCurveTool_Value

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"""
        * Constructs an empty interference between Polygon and Polyhedron.
        	:rtype: None* Constructs and computes an interference between the Polygon and the Polyhedron.
        	:param thePolyg:
        	:type thePolyg: IntCurveSurface_ThePolygonOfHInter
        	:param thePolyh:
        	:type thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        	:rtype: None* Constructs and computes an interference between the Straight Line and the Polyhedron.
        	:param theLin:
        	:type theLin: gp_Lin
        	:param thePolyh:
        	:type thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        	:rtype: None* Constructs and computes an interference between the Straight Lines and the Polyhedron.
        	:param theLins:
        	:type theLins: Intf_Array1OfLin
        	:param thePolyh:
        	:type thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        	:rtype: None* Constructs and computes an interference between the Polygon and the Polyhedron.
        	:param thePolyg:
        	:type thePolyg: IntCurveSurface_ThePolygonOfHInter
        	:param thePolyh:
        	:type thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        	:param theBoundSB:
        	:type theBoundSB: Bnd_BoundSortBox
        	:rtype: None* Constructs and computes an interference between the Straight Line and the Polyhedron.
        	:param theLin:
        	:type theLin: gp_Lin
        	:param thePolyh:
        	:type thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        	:param theBoundSB:
        	:type theBoundSB: Bnd_BoundSortBox
        	:rtype: None* Constructs and computes an interference between the Straight Lines and the Polyhedron.
        	:param theLins:
        	:type theLins: Intf_Array1OfLin
        	:param thePolyh:
        	:type thePolyh: IntCurveSurface_ThePolyhedronOfHInter
        	:param theBoundSB:
        	:type theBoundSB: Bnd_BoundSortBox
        	:rtype: None
        """
        _IntCurveSurface.IntCurveSurface_TheInterferenceOfHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheInterferenceOfHInter(*args))
    Interference = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheInterferenceOfHInter_Interference)
    Perform = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheInterferenceOfHInter_Perform)

    __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
    ApproxParamOnCurve = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_ApproxParamOnCurve)
    BeginOfSeg = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_BeginOfSeg)
    Bounding = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_Bounding)
    Closed = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_Closed)
    DeflectionOverEstimation = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_DeflectionOverEstimation)
    Dump = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_Dump)
    EndOfSeg = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_EndOfSeg)
    InfParameter = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_InfParameter)

    def __init__(self, *args):
        r"""
        :param Curve:
        	:type Curve: Adaptor3d_HCurve
        	:param NbPnt:
        	:type NbPnt: int
        	:rtype: None:param Curve:
        	:type Curve: Adaptor3d_HCurve
        	:param U1:
        	:type U1: float
        	:param U2:
        	:type U2: float
        	:param NbPnt:
        	:type NbPnt: int
        	:rtype: None:param Curve:
        	:type Curve: Adaptor3d_HCurve
        	:param Upars:
        	:type Upars: TColStd_Array1OfReal
        	:rtype: None
        """
        _IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_ThePolygonOfHInter(*args))
    NbSegments = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_NbSegments)
    SetDeflectionOverEstimation = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_SetDeflectionOverEstimation)
    SupParameter = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_SupParameter)

    __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
    BeginOfSeg = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_BeginOfSeg)
    Bounding = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Bounding)
    Closed = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Closed)
    DeflectionOverEstimation = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_DeflectionOverEstimation)
    Dump = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Dump)
    EndOfSeg = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_EndOfSeg)
    NbSegments = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_NbSegments)

    __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)
IntCurveSurface_ThePolygonToolOfHInter_BeginOfSeg = _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_BeginOfSeg
IntCurveSurface_ThePolygonToolOfHInter_Bounding = _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Bounding
IntCurveSurface_ThePolygonToolOfHInter_Closed = _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Closed
IntCurveSurface_ThePolygonToolOfHInter_DeflectionOverEstimation = _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_DeflectionOverEstimation
IntCurveSurface_ThePolygonToolOfHInter_Dump = _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Dump
IntCurveSurface_ThePolygonToolOfHInter_EndOfSeg = _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_EndOfSeg
IntCurveSurface_ThePolygonToolOfHInter_NbSegments = _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_NbSegments

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
    Bounding = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Bounding)
    ComponentsBounding = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_ComponentsBounding)
    DeflectionOverEstimation = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_DeflectionOverEstimation)
    Dump = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Dump)
    GetBorderDeflection = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_GetBorderDeflection)
    IsOnBound = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_IsOnBound)
    NbTriangles = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_NbTriangles)
    Point = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Point)
    TriConnex = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_TriConnex)
    Triangle = _swig_new_static_method(_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Triangle)

    __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)
IntCurveSurface_ThePolyhedronToolOfHInter_Bounding = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Bounding
IntCurveSurface_ThePolyhedronToolOfHInter_ComponentsBounding = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_ComponentsBounding
IntCurveSurface_ThePolyhedronToolOfHInter_DeflectionOverEstimation = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_DeflectionOverEstimation
IntCurveSurface_ThePolyhedronToolOfHInter_Dump = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Dump
IntCurveSurface_ThePolyhedronToolOfHInter_GetBorderDeflection = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_GetBorderDeflection
IntCurveSurface_ThePolyhedronToolOfHInter_IsOnBound = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_IsOnBound
IntCurveSurface_ThePolyhedronToolOfHInter_NbTriangles = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_NbTriangles
IntCurveSurface_ThePolyhedronToolOfHInter_Point = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Point
IntCurveSurface_ThePolyhedronToolOfHInter_TriConnex = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_TriConnex
IntCurveSurface_ThePolyhedronToolOfHInter_Triangle = _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Triangle

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"""
        * Provides the signed distance function : Q(w) and its first derivative dQ(w)/dw
        	:param S:
        	:type S: Adaptor3d_HSurface
        	:param C:
        	:type C: Adaptor3d_HCurve
        	:rtype: None
        """
        _IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_TheQuadCurvExactHInter(*args))
    Intervals = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_Intervals)
    IsDone = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_IsDone)
    NbIntervals = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_NbIntervals)
    NbRoots = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_NbRoots)
    Root = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_Root)

    __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"""
        * Create the function.
        	:param Q:
        	:type Q: IntSurf_Quadric
        	:param C:
        	:type C: Adaptor3d_HCurve
        	:rtype: None
        """
        _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"""
        * Empty Constructor
        	:rtype: None
        """
        _IntCurveSurface.IntCurveSurface_HInter_swiginit(self, _IntCurveSurface.new_IntCurveSurface_HInter(*args))
    Perform = _swig_new_instance_method(_IntCurveSurface.IntCurveSurface_HInter_Perform)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_HInter

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



