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

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


def process_exception(error: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    return _IntSurf.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.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.math
import OCC.Core.Message
import OCC.Core.OSD

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

IntSurf_Inside = _IntSurf.IntSurf_Inside
IntSurf_Outside = _IntSurf.IntSurf_Outside
IntSurf_Unknown = _IntSurf.IntSurf_Unknown
IntSurf_In = _IntSurf.IntSurf_In
IntSurf_Out = _IntSurf.IntSurf_Out
IntSurf_Touch = _IntSurf.IntSurf_Touch
IntSurf_Undecided = _IntSurf.IntSurf_Undecided


class IntSurf_Situation(IntEnum):
	IntSurf_Inside = 0
	IntSurf_Outside = 1
	IntSurf_Unknown = 2
IntSurf_Inside = IntSurf_Situation.IntSurf_Inside
IntSurf_Outside = IntSurf_Situation.IntSurf_Outside
IntSurf_Unknown = IntSurf_Situation.IntSurf_Unknown

class IntSurf_TypeTrans(IntEnum):
	IntSurf_In = 0
	IntSurf_Out = 1
	IntSurf_Touch = 2
	IntSurf_Undecided = 3
IntSurf_In = IntSurf_TypeTrans.IntSurf_In
IntSurf_Out = IntSurf_TypeTrans.IntSurf_Out
IntSurf_Touch = IntSurf_TypeTrans.IntSurf_Touch
IntSurf_Undecided = IntSurf_TypeTrans.IntSurf_Undecided


def Handle_IntSurf_LineOn2S_Create() -> "opencascade::handle< IntSurf_LineOn2S >":
    return _IntSurf.Handle_IntSurf_LineOn2S_Create()

def Handle_IntSurf_LineOn2S_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< IntSurf_LineOn2S >":
    return _IntSurf.Handle_IntSurf_LineOn2S_DownCast(t)

def Handle_IntSurf_LineOn2S_IsNull(t: "opencascade::handle< IntSurf_LineOn2S > const &") -> "bool":
    return _IntSurf.Handle_IntSurf_LineOn2S_IsNull(t)
class IntSurf_Allocator(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):
        _IntSurf.IntSurf_Allocator_swiginit(self, _IntSurf.new_IntSurf_Allocator())
    __swig_destroy__ = _IntSurf.delete_IntSurf_Allocator

# Register IntSurf_Allocator in _IntSurf:
_IntSurf.IntSurf_Allocator_swigregister(IntSurf_Allocator)

class IntSurf_ListIteratorOfListOfPntOn2S(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):
        _IntSurf.IntSurf_ListIteratorOfListOfPntOn2S_swiginit(self, _IntSurf.new_IntSurf_ListIteratorOfListOfPntOn2S(*args))

    def More(self) -> "Standard_Boolean":
        return _IntSurf.IntSurf_ListIteratorOfListOfPntOn2S_More(self)

    def Next(self) -> "void":
        return _IntSurf.IntSurf_ListIteratorOfListOfPntOn2S_Next(self)

    def Value(self) -> "IntSurf_PntOn2S const &":
        return _IntSurf.IntSurf_ListIteratorOfListOfPntOn2S_Value(self)

    def ChangeValue(self) -> "IntSurf_PntOn2S &":
        return _IntSurf.IntSurf_ListIteratorOfListOfPntOn2S_ChangeValue(self)
    __swig_destroy__ = _IntSurf.delete_IntSurf_ListIteratorOfListOfPntOn2S

# Register IntSurf_ListIteratorOfListOfPntOn2S in _IntSurf:
_IntSurf.IntSurf_ListIteratorOfListOfPntOn2S_swigregister(IntSurf_ListIteratorOfListOfPntOn2S)

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

    def begin(self) -> "NCollection_List< IntSurf_PntOn2S >::iterator":
        return _IntSurf.IntSurf_ListOfPntOn2S_begin(self)

    def end(self) -> "NCollection_List< IntSurf_PntOn2S >::iterator":
        return _IntSurf.IntSurf_ListOfPntOn2S_end(self)

    def cbegin(self) -> "NCollection_List< IntSurf_PntOn2S >::const_iterator":
        return _IntSurf.IntSurf_ListOfPntOn2S_cbegin(self)

    def cend(self) -> "NCollection_List< IntSurf_PntOn2S >::const_iterator":
        return _IntSurf.IntSurf_ListOfPntOn2S_cend(self)

    def __init__(self, *args):
        _IntSurf.IntSurf_ListOfPntOn2S_swiginit(self, _IntSurf.new_IntSurf_ListOfPntOn2S(*args))

    def Size(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_ListOfPntOn2S_Size(self)

    def Assign(self, theOther: "IntSurf_ListOfPntOn2S") -> "NCollection_List< IntSurf_PntOn2S > &":
        return _IntSurf.IntSurf_ListOfPntOn2S_Assign(self, theOther)

    def Set(self, theOther: "IntSurf_ListOfPntOn2S") -> "NCollection_List< IntSurf_PntOn2S > &":
        return _IntSurf.IntSurf_ListOfPntOn2S_Set(self, theOther)

    def Clear(self, theAllocator: "IntSurf_Allocator"=0) -> "void":
        return _IntSurf.IntSurf_ListOfPntOn2S_Clear(self, theAllocator)

    def First(self) -> "IntSurf_PntOn2S const &":
        return _IntSurf.IntSurf_ListOfPntOn2S_First(self)

    def Last(self) -> "IntSurf_PntOn2S const &":
        return _IntSurf.IntSurf_ListOfPntOn2S_Last(self)

    def Append(self, *args) -> "void":
        return _IntSurf.IntSurf_ListOfPntOn2S_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _IntSurf.IntSurf_ListOfPntOn2S_Prepend(self, *args)

    def RemoveFirst(self) -> "void":
        return _IntSurf.IntSurf_ListOfPntOn2S_RemoveFirst(self)

    def Remove(self, theIter: "IntSurf_ListIteratorOfListOfPntOn2S") -> "void":
        return _IntSurf.IntSurf_ListOfPntOn2S_Remove(self, theIter)

    def InsertBefore(self, *args) -> "void":
        return _IntSurf.IntSurf_ListOfPntOn2S_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _IntSurf.IntSurf_ListOfPntOn2S_InsertAfter(self, *args)

    def Reverse(self) -> "void":
        return _IntSurf.IntSurf_ListOfPntOn2S_Reverse(self)
    __swig_destroy__ = _IntSurf.delete_IntSurf_ListOfPntOn2S

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


# Register IntSurf_ListOfPntOn2S in _IntSurf:
_IntSurf.IntSurf_ListOfPntOn2S_swigregister(IntSurf_ListOfPntOn2S)

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

    def begin(self) -> "NCollection_Sequence< IntSurf_Couple >::iterator":
        return _IntSurf.IntSurf_SequenceOfCouple_begin(self)

    def end(self) -> "NCollection_Sequence< IntSurf_Couple >::iterator":
        return _IntSurf.IntSurf_SequenceOfCouple_end(self)

    def cbegin(self) -> "NCollection_Sequence< IntSurf_Couple >::const_iterator":
        return _IntSurf.IntSurf_SequenceOfCouple_cbegin(self)

    def cend(self) -> "NCollection_Sequence< IntSurf_Couple >::const_iterator":
        return _IntSurf.IntSurf_SequenceOfCouple_cend(self)

    def __init__(self, *args):
        _IntSurf.IntSurf_SequenceOfCouple_swiginit(self, _IntSurf.new_IntSurf_SequenceOfCouple(*args))

    def Size(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfCouple_Size(self)

    def Length(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfCouple_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfCouple_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfCouple_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _IntSurf.IntSurf_SequenceOfCouple_IsEmpty(self)

    def Reverse(self) -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_Reverse(self)

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

    @staticmethod
    def delNode(theNode: "NCollection_SeqNode *", theAl: "IntSurf_Allocator") -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_delNode(theNode, theAl)

    def Clear(self, theAllocator: "IntSurf_Allocator"=0) -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_Clear(self, theAllocator)

    def Assign(self, theOther: "IntSurf_SequenceOfCouple") -> "NCollection_Sequence< IntSurf_Couple > &":
        return _IntSurf.IntSurf_SequenceOfCouple_Assign(self, theOther)

    def Set(self, theOther: "IntSurf_SequenceOfCouple") -> "NCollection_Sequence< IntSurf_Couple > &":
        return _IntSurf.IntSurf_SequenceOfCouple_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "IntSurf_SequenceOfCouple") -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_Split(self, theIndex, theSeq)

    def First(self) -> "IntSurf_Couple const &":
        return _IntSurf.IntSurf_SequenceOfCouple_First(self)

    def ChangeFirst(self) -> "IntSurf_Couple &":
        return _IntSurf.IntSurf_SequenceOfCouple_ChangeFirst(self)

    def Last(self) -> "IntSurf_Couple const &":
        return _IntSurf.IntSurf_SequenceOfCouple_Last(self)

    def ChangeLast(self) -> "IntSurf_Couple &":
        return _IntSurf.IntSurf_SequenceOfCouple_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "IntSurf_Couple const &":
        return _IntSurf.IntSurf_SequenceOfCouple_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "IntSurf_Couple &":
        return _IntSurf.IntSurf_SequenceOfCouple_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "IntSurf_Couple &":
        return _IntSurf.IntSurf_SequenceOfCouple___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "IntSurf_Couple") -> "void":
        return _IntSurf.IntSurf_SequenceOfCouple_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _IntSurf.delete_IntSurf_SequenceOfCouple

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


# Register IntSurf_SequenceOfCouple in _IntSurf:
_IntSurf.IntSurf_SequenceOfCouple_swigregister(IntSurf_SequenceOfCouple)

def IntSurf_SequenceOfCouple_delNode(theNode: "NCollection_SeqNode *", theAl: "IntSurf_Allocator") -> "void":
    return _IntSurf.IntSurf_SequenceOfCouple_delNode(theNode, theAl)

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

    def begin(self) -> "NCollection_Sequence< IntSurf_InteriorPoint >::iterator":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_begin(self)

    def end(self) -> "NCollection_Sequence< IntSurf_InteriorPoint >::iterator":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_end(self)

    def cbegin(self) -> "NCollection_Sequence< IntSurf_InteriorPoint >::const_iterator":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_cbegin(self)

    def cend(self) -> "NCollection_Sequence< IntSurf_InteriorPoint >::const_iterator":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_cend(self)

    def __init__(self, *args):
        _IntSurf.IntSurf_SequenceOfInteriorPoint_swiginit(self, _IntSurf.new_IntSurf_SequenceOfInteriorPoint(*args))

    def Size(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Size(self)

    def Length(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_IsEmpty(self)

    def Reverse(self) -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Reverse(self)

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

    @staticmethod
    def delNode(theNode: "NCollection_SeqNode *", theAl: "IntSurf_Allocator") -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_delNode(theNode, theAl)

    def Clear(self, theAllocator: "IntSurf_Allocator"=0) -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Clear(self, theAllocator)

    def Assign(self, theOther: "IntSurf_SequenceOfInteriorPoint") -> "NCollection_Sequence< IntSurf_InteriorPoint > &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Assign(self, theOther)

    def Set(self, theOther: "IntSurf_SequenceOfInteriorPoint") -> "NCollection_Sequence< IntSurf_InteriorPoint > &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "IntSurf_SequenceOfInteriorPoint") -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Split(self, theIndex, theSeq)

    def First(self) -> "IntSurf_InteriorPoint const &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_First(self)

    def ChangeFirst(self) -> "IntSurf_InteriorPoint &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_ChangeFirst(self)

    def Last(self) -> "IntSurf_InteriorPoint const &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Last(self)

    def ChangeLast(self) -> "IntSurf_InteriorPoint &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "IntSurf_InteriorPoint const &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "IntSurf_InteriorPoint &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "IntSurf_InteriorPoint &":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "IntSurf_InteriorPoint") -> "void":
        return _IntSurf.IntSurf_SequenceOfInteriorPoint_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _IntSurf.delete_IntSurf_SequenceOfInteriorPoint

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


# Register IntSurf_SequenceOfInteriorPoint in _IntSurf:
_IntSurf.IntSurf_SequenceOfInteriorPoint_swigregister(IntSurf_SequenceOfInteriorPoint)

def IntSurf_SequenceOfInteriorPoint_delNode(theNode: "NCollection_SeqNode *", theAl: "IntSurf_Allocator") -> "void":
    return _IntSurf.IntSurf_SequenceOfInteriorPoint_delNode(theNode, theAl)

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

    def begin(self) -> "NCollection_Sequence< IntSurf_PathPoint >::iterator":
        return _IntSurf.IntSurf_SequenceOfPathPoint_begin(self)

    def end(self) -> "NCollection_Sequence< IntSurf_PathPoint >::iterator":
        return _IntSurf.IntSurf_SequenceOfPathPoint_end(self)

    def cbegin(self) -> "NCollection_Sequence< IntSurf_PathPoint >::const_iterator":
        return _IntSurf.IntSurf_SequenceOfPathPoint_cbegin(self)

    def cend(self) -> "NCollection_Sequence< IntSurf_PathPoint >::const_iterator":
        return _IntSurf.IntSurf_SequenceOfPathPoint_cend(self)

    def __init__(self, *args):
        _IntSurf.IntSurf_SequenceOfPathPoint_swiginit(self, _IntSurf.new_IntSurf_SequenceOfPathPoint(*args))

    def Size(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Size(self)

    def Length(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _IntSurf.IntSurf_SequenceOfPathPoint_IsEmpty(self)

    def Reverse(self) -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Reverse(self)

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

    @staticmethod
    def delNode(theNode: "NCollection_SeqNode *", theAl: "IntSurf_Allocator") -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_delNode(theNode, theAl)

    def Clear(self, theAllocator: "IntSurf_Allocator"=0) -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Clear(self, theAllocator)

    def Assign(self, theOther: "IntSurf_SequenceOfPathPoint") -> "NCollection_Sequence< IntSurf_PathPoint > &":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Assign(self, theOther)

    def Set(self, theOther: "IntSurf_SequenceOfPathPoint") -> "NCollection_Sequence< IntSurf_PathPoint > &":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "IntSurf_SequenceOfPathPoint") -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Split(self, theIndex, theSeq)

    def First(self) -> "IntSurf_PathPoint const &":
        return _IntSurf.IntSurf_SequenceOfPathPoint_First(self)

    def ChangeFirst(self) -> "IntSurf_PathPoint &":
        return _IntSurf.IntSurf_SequenceOfPathPoint_ChangeFirst(self)

    def Last(self) -> "IntSurf_PathPoint const &":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Last(self)

    def ChangeLast(self) -> "IntSurf_PathPoint &":
        return _IntSurf.IntSurf_SequenceOfPathPoint_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "IntSurf_PathPoint const &":
        return _IntSurf.IntSurf_SequenceOfPathPoint_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "IntSurf_PathPoint &":
        return _IntSurf.IntSurf_SequenceOfPathPoint_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "IntSurf_PathPoint &":
        return _IntSurf.IntSurf_SequenceOfPathPoint___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "IntSurf_PathPoint") -> "void":
        return _IntSurf.IntSurf_SequenceOfPathPoint_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _IntSurf.delete_IntSurf_SequenceOfPathPoint

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


# Register IntSurf_SequenceOfPathPoint in _IntSurf:
_IntSurf.IntSurf_SequenceOfPathPoint_swigregister(IntSurf_SequenceOfPathPoint)

def IntSurf_SequenceOfPathPoint_delNode(theNode: "NCollection_SeqNode *", theAl: "IntSurf_Allocator") -> "void":
    return _IntSurf.IntSurf_SequenceOfPathPoint_delNode(theNode, theAl)

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

    def begin(self) -> "NCollection_Sequence< IntSurf_PntOn2S >::iterator":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_begin(self)

    def end(self) -> "NCollection_Sequence< IntSurf_PntOn2S >::iterator":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_end(self)

    def cbegin(self) -> "NCollection_Sequence< IntSurf_PntOn2S >::const_iterator":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_cbegin(self)

    def cend(self) -> "NCollection_Sequence< IntSurf_PntOn2S >::const_iterator":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_cend(self)

    def __init__(self, *args):
        _IntSurf.IntSurf_SequenceOfPntOn2S_swiginit(self, _IntSurf.new_IntSurf_SequenceOfPntOn2S(*args))

    def Size(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Size(self)

    def Length(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_IsEmpty(self)

    def Reverse(self) -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Reverse(self)

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

    @staticmethod
    def delNode(theNode: "NCollection_SeqNode *", theAl: "IntSurf_Allocator") -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_delNode(theNode, theAl)

    def Clear(self, theAllocator: "IntSurf_Allocator"=0) -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Clear(self, theAllocator)

    def Assign(self, theOther: "IntSurf_SequenceOfPntOn2S") -> "NCollection_Sequence< IntSurf_PntOn2S > &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Assign(self, theOther)

    def Set(self, theOther: "IntSurf_SequenceOfPntOn2S") -> "NCollection_Sequence< IntSurf_PntOn2S > &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "IntSurf_SequenceOfPntOn2S") -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Split(self, theIndex, theSeq)

    def First(self) -> "IntSurf_PntOn2S const &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_First(self)

    def ChangeFirst(self) -> "IntSurf_PntOn2S &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_ChangeFirst(self)

    def Last(self) -> "IntSurf_PntOn2S const &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Last(self)

    def ChangeLast(self) -> "IntSurf_PntOn2S &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "IntSurf_PntOn2S const &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "IntSurf_PntOn2S &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "IntSurf_PntOn2S &":
        return _IntSurf.IntSurf_SequenceOfPntOn2S___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "IntSurf_PntOn2S") -> "void":
        return _IntSurf.IntSurf_SequenceOfPntOn2S_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _IntSurf.delete_IntSurf_SequenceOfPntOn2S

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


# Register IntSurf_SequenceOfPntOn2S in _IntSurf:
_IntSurf.IntSurf_SequenceOfPntOn2S_swigregister(IntSurf_SequenceOfPntOn2S)

def IntSurf_SequenceOfPntOn2S_delNode(theNode: "NCollection_SeqNode *", theAl: "IntSurf_Allocator") -> "void":
    return _IntSurf.IntSurf_SequenceOfPntOn2S_delNode(theNode, theAl)

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

    @staticmethod
    def MakeTransition(*args) -> "void":
        r"""
        Computes the transition of the intersection point between the two lines. tgfirst is the tangent vector of the first line. tgsecond is the tangent vector of the second line. normal is the direction used to orientate the cross product tgfirst^tgsecond. tfirst is the transition of the point on the first line. tsecond is the transition of the point on the second line.

        Parameters
        ----------
        TgFirst: gp_Vec
        TgSecond: gp_Vec
        Normal: gp_Dir
        TFirst: IntSurf_Transition
        TSecond: IntSurf_Transition

        Returns
        -------
        None

        """
        return _IntSurf.intsurf_MakeTransition(*args)

    @staticmethod
    def SetPeriod(*args) -> "void":
        r"""
        Fills thearrofperiod array by the period values of thefirstsurf and thesecondsurf. [0] = u-period of thefirstsurf, [1] = v-period of thefirstsurf, [2] = u-period of thesecondsurf, [3] = v-period of thesecondsurf. //! if surface is not periodic in correspond direction then its period is considered to be equal to 0.

        Parameters
        ----------
        theFirstSurf: Adaptor3d_HSurface
        theSecondSurf: Adaptor3d_HSurface
        theArrOfPeriod: float

        Returns
        -------
        None

        """
        return _IntSurf.intsurf_SetPeriod(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntSurf.intsurf_swiginit(self, _IntSurf.new_intsurf())
    __swig_destroy__ = _IntSurf.delete_intsurf

# Register intsurf in _IntSurf:
_IntSurf.intsurf_swigregister(intsurf)

def intsurf_MakeTransition(*args) -> "void":
    r"""
    Computes the transition of the intersection point between the two lines. tgfirst is the tangent vector of the first line. tgsecond is the tangent vector of the second line. normal is the direction used to orientate the cross product tgfirst^tgsecond. tfirst is the transition of the point on the first line. tsecond is the transition of the point on the second line.

    Parameters
    ----------
    TgFirst: gp_Vec
    TgSecond: gp_Vec
    Normal: gp_Dir
    TFirst: IntSurf_Transition
    TSecond: IntSurf_Transition

    Returns
    -------
    None

    """
    return _IntSurf.intsurf_MakeTransition(*args)

def intsurf_SetPeriod(*args) -> "void":
    r"""
    Fills thearrofperiod array by the period values of thefirstsurf and thesecondsurf. [0] = u-period of thefirstsurf, [1] = v-period of thefirstsurf, [2] = u-period of thesecondsurf, [3] = v-period of thesecondsurf. //! if surface is not periodic in correspond direction then its period is considered to be equal to 0.

    Parameters
    ----------
    theFirstSurf: Adaptor3d_HSurface
    theSecondSurf: Adaptor3d_HSurface
    theArrOfPeriod: float

    Returns
    -------
    None

    """
    return _IntSurf.intsurf_SetPeriod(*args)

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

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

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        Index1: int
        Index2: int

        Returns
        -------
        None

        """
        _IntSurf.IntSurf_Couple_swiginit(self, _IntSurf.new_IntSurf_Couple(*args))

    def First(self, *args) -> "Standard_Integer":
        r"""
        Returns the first element.

        Returns
        -------
        int

        """
        return _IntSurf.IntSurf_Couple_First(self, *args)

    def Second(self, *args) -> "Standard_Integer":
        r"""
        Returns the second element.

        Returns
        -------
        int

        """
        return _IntSurf.IntSurf_Couple_Second(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntSurf.delete_IntSurf_Couple

# Register IntSurf_Couple in _IntSurf:
_IntSurf.IntSurf_Couple_swigregister(IntSurf_Couple)

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

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

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        U: float
        V: float
        Direc: gp_Vec
        Direc2d: gp_Vec2d

        Returns
        -------
        None

        """
        _IntSurf.IntSurf_InteriorPoint_swiginit(self, _IntSurf.new_IntSurf_InteriorPoint(*args))

    def Direction(self, *args) -> "gp_Vec const":
        r"""
        Returns the tangent at the intersection in 3d space associated to the interior point.

        Returns
        -------
        gp_Vec

        """
        return _IntSurf.IntSurf_InteriorPoint_Direction(self, *args)

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

        Returns
        -------
        gp_Vec2d

        """
        return _IntSurf.IntSurf_InteriorPoint_Direction2d(self, *args)

    def Parameters(self, *args) -> "void":
        r"""
        Returns the parameters of the interior point on the parametric surface.

        Parameters
        ----------

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

        """
        return _IntSurf.IntSurf_InteriorPoint_Parameters(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt
        U: float
        V: float
        Direc: gp_Vec
        Direc2d: gp_Vec2d

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_InteriorPoint_SetValue(self, *args)

    def UParameter(self, *args) -> "Standard_Real":
        r"""
        Returns the first parameter of the interior point on the parametric surface.

        Returns
        -------
        float

        """
        return _IntSurf.IntSurf_InteriorPoint_UParameter(self, *args)

    def VParameter(self, *args) -> "Standard_Real":
        r"""
        Returns the second parameter of the interior point on the parametric surface.

        Returns
        -------
        float

        """
        return _IntSurf.IntSurf_InteriorPoint_VParameter(self, *args)

    def Value(self, *args) -> "gp_Pnt const":
        r"""
        Returns the 3d coordinates of the interior point.

        Returns
        -------
        gp_Pnt

        """
        return _IntSurf.IntSurf_InteriorPoint_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntSurf.delete_IntSurf_InteriorPoint

# Register IntSurf_InteriorPoint in _IntSurf:
_IntSurf.IntSurf_InteriorPoint_swigregister(IntSurf_InteriorPoint)

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

    @staticmethod
    def Direction2d(*args) -> "gp_Dir2d":
        r"""
        Returns the tangent at the intersectin in the parametric space of the parametrized surface.this tangent is associated to the value2d.

        Parameters
        ----------
        PStart: IntSurf_InteriorPoint

        Returns
        -------
        gp_Dir2d

        """
        return _IntSurf.IntSurf_InteriorPointTool_Direction2d(*args)

    @staticmethod
    def Direction3d(*args) -> "gp_Vec":
        r"""
        Returns the tangent at the intersectin in 3d space associated to <p>.

        Parameters
        ----------
        PStart: IntSurf_InteriorPoint

        Returns
        -------
        gp_Vec

        """
        return _IntSurf.IntSurf_InteriorPointTool_Direction3d(*args)

    @staticmethod
    def Value2d(*args) -> "Standard_Real &, Standard_Real &":
        r"""
        Returns the <u,v> parameters which are associated with <p> it's the parameters which start the marching algorithm.

        Parameters
        ----------
        PStart: IntSurf_InteriorPoint

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

        """
        return _IntSurf.IntSurf_InteriorPointTool_Value2d(*args)

    @staticmethod
    def Value3d(*args) -> "gp_Pnt":
        r"""
        Returns the 3d coordinates of the starting point.

        Parameters
        ----------
        PStart: IntSurf_InteriorPoint

        Returns
        -------
        gp_Pnt

        """
        return _IntSurf.IntSurf_InteriorPointTool_Value3d(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntSurf.IntSurf_InteriorPointTool_swiginit(self, _IntSurf.new_IntSurf_InteriorPointTool())
    __swig_destroy__ = _IntSurf.delete_IntSurf_InteriorPointTool

# Register IntSurf_InteriorPointTool in _IntSurf:
_IntSurf.IntSurf_InteriorPointTool_swigregister(IntSurf_InteriorPointTool)

def IntSurf_InteriorPointTool_Direction2d(*args) -> "gp_Dir2d":
    r"""
    Returns the tangent at the intersectin in the parametric space of the parametrized surface.this tangent is associated to the value2d.

    Parameters
    ----------
    PStart: IntSurf_InteriorPoint

    Returns
    -------
    gp_Dir2d

    """
    return _IntSurf.IntSurf_InteriorPointTool_Direction2d(*args)

def IntSurf_InteriorPointTool_Direction3d(*args) -> "gp_Vec":
    r"""
    Returns the tangent at the intersectin in 3d space associated to <p>.

    Parameters
    ----------
    PStart: IntSurf_InteriorPoint

    Returns
    -------
    gp_Vec

    """
    return _IntSurf.IntSurf_InteriorPointTool_Direction3d(*args)

def IntSurf_InteriorPointTool_Value2d(*args) -> "Standard_Real &, Standard_Real &":
    r"""
    Returns the <u,v> parameters which are associated with <p> it's the parameters which start the marching algorithm.

    Parameters
    ----------
    PStart: IntSurf_InteriorPoint

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

    """
    return _IntSurf.IntSurf_InteriorPointTool_Value2d(*args)

def IntSurf_InteriorPointTool_Value3d(*args) -> "gp_Pnt":
    r"""
    Returns the 3d coordinates of the starting point.

    Parameters
    ----------
    PStart: IntSurf_InteriorPoint

    Returns
    -------
    gp_Pnt

    """
    return _IntSurf.IntSurf_InteriorPointTool_Value3d(*args)

class IntSurf_LineOn2S(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        theAllocator: IntSurf_Allocator,optional
        	default value is 0

        Returns
        -------
        None

        """
        _IntSurf.IntSurf_LineOn2S_swiginit(self, _IntSurf.new_IntSurf_LineOn2S(*args))

    def Add(self, *args) -> "void":
        r"""
        Adds a point in the line.

        Parameters
        ----------
        P: IntSurf_PntOn2S

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_LineOn2S_Add(self, *args)

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

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_LineOn2S_Clear(self, *args)

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

        Parameters
        ----------
        I: int
        P: IntSurf_PntOn2S

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_LineOn2S_InsertBefore(self, *args)

    def IsOutBox(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if thep is out of the box built from 3d-points.

        Parameters
        ----------
        theP: gp_Pnt

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_LineOn2S_IsOutBox(self, *args)

    def IsOutSurf1Box(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if thep is out of the box built from the points on 1st surface.

        Parameters
        ----------
        theP: gp_Pnt2d

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_LineOn2S_IsOutSurf1Box(self, *args)

    def IsOutSurf2Box(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if thep is out of the box built from the points on 2nd surface.

        Parameters
        ----------
        theP: gp_Pnt2d

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_LineOn2S_IsOutSurf2Box(self, *args)

    def NbPoints(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of points in the line.

        Returns
        -------
        int

        """
        return _IntSurf.IntSurf_LineOn2S_NbPoints(self, *args)

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

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

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_LineOn2S_RemovePoint(self, *args)

    def Reverse(self, *args) -> "void":
        r"""
        Reverses the order of points of the line.

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_LineOn2S_Reverse(self, *args)

    def SetUV(self, *args) -> "void":
        r"""
        Sets the parametric coordinates on one of the surfaces of the point of range index in the line.

        Parameters
        ----------
        Index: int
        OnFirst: bool
        U: float
        V: float

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_LineOn2S_SetUV(self, *args)

    def Split(self, *args) -> "opencascade::handle< IntSurf_LineOn2S >":
        r"""
        Keeps in <self> the points 1 to index-1, and returns the items index to the end.

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

        Returns
        -------
        opencascade::handle<IntSurf_LineOn2S>

        """
        return _IntSurf.IntSurf_LineOn2S_Split(self, *args)

    def Value(self, *args) -> "void":
        r"""
        Returns the point of range index in the line.

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

        Returns
        -------
        IntSurf_PntOn2S
        Replaces the point of range index in the line.

        Parameters
        ----------
        Index: int
        P: IntSurf_PntOn2S

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_LineOn2S_Value(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _IntSurf.delete_IntSurf_LineOn2S

# Register IntSurf_LineOn2S in _IntSurf:
_IntSurf.IntSurf_LineOn2S_swigregister(IntSurf_LineOn2S)

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

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

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pnt
        U: float
        V: float

        Returns
        -------
        None

        """
        _IntSurf.IntSurf_PathPoint_swiginit(self, _IntSurf.new_IntSurf_PathPoint(*args))

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

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

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_PathPoint_AddUV(self, *args)

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

        Returns
        -------
        gp_Dir2d

        """
        return _IntSurf.IntSurf_PathPoint_Direction2d(self, *args)

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

        Returns
        -------
        gp_Vec

        """
        return _IntSurf.IntSurf_PathPoint_Direction3d(self, *args)

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

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_PathPoint_IsPassingPnt(self, *args)

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

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_PathPoint_IsTangent(self, *args)

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

        Returns
        -------
        int

        """
        return _IntSurf.IntSurf_PathPoint_Multiplicity(self, *args)

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

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

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

        """
        return _IntSurf.IntSurf_PathPoint_Parameters(self, *args)

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

        Parameters
        ----------
        V: gp_Vec
        D: gp_Dir2d

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_PathPoint_SetDirections(self, *args)

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

        Parameters
        ----------
        Pass: bool

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_PathPoint_SetPassing(self, *args)

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

        Parameters
        ----------
        Tang: bool

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_PathPoint_SetTangency(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt
        U: float
        V: float

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_PathPoint_SetValue(self, *args)

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

        Returns
        -------
        gp_Pnt

        """
        return _IntSurf.IntSurf_PathPoint_Value(self, *args)

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

        Parameters
        ----------

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

        """
        return _IntSurf.IntSurf_PathPoint_Value2d(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntSurf.delete_IntSurf_PathPoint

# Register IntSurf_PathPoint in _IntSurf:
_IntSurf.IntSurf_PathPoint_swigregister(IntSurf_PathPoint)

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

    @staticmethod
    def Direction2d(*args) -> "gp_Dir2d":
        r"""
        Returns the tangent at the intersection in the parametric space of the parametrized surface.this tangent is associated to the value2d la tangente a un sens signifiant (indique le sens de chemin ement) an exception is raised if istangent is true.

        Parameters
        ----------
        PStart: IntSurf_PathPoint

        Returns
        -------
        gp_Dir2d

        """
        return _IntSurf.IntSurf_PathPointTool_Direction2d(*args)

    @staticmethod
    def Direction3d(*args) -> "gp_Vec":
        r"""
        Returns the tangent at the intersection in 3d space associated to <p> an exception is raised if istangent is true.

        Parameters
        ----------
        PStart: IntSurf_PathPoint

        Returns
        -------
        gp_Vec

        """
        return _IntSurf.IntSurf_PathPointTool_Direction3d(*args)

    @staticmethod
    def IsPassingPnt(*args) -> "Standard_Boolean":
        r"""
        Returns true if the point is a point on a non-oriented arc, which means that the intersection line does not stop at such a point but just go through such a point. ispassingpnt is true when isonarc is true.

        Parameters
        ----------
        PStart: IntSurf_PathPoint

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_PathPointTool_IsPassingPnt(*args)

    @staticmethod
    def IsTangent(*args) -> "Standard_Boolean":
        r"""
        Returns true if the surfaces are tangent at this point. istangent can be true when isonarc is true if ispassingpnt is true and istangent is true,this point is a stopped point.

        Parameters
        ----------
        PStart: IntSurf_PathPoint

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_PathPointTool_IsTangent(*args)

    @staticmethod
    def Multiplicity(*args) -> "Standard_Integer":
        r"""
        Returns the multiplicity of the point i-e the number of auxillar parameters associated to the point which the principal parameters are given by value2d.

        Parameters
        ----------
        PStart: IntSurf_PathPoint

        Returns
        -------
        int

        """
        return _IntSurf.IntSurf_PathPointTool_Multiplicity(*args)

    @staticmethod
    def Parameters(*args) -> "Standard_Real &, Standard_Real &":
        r"""
        Parametric coordinates associated to the multiplicity. an exception is raised if mult<=0 or mult>multiplicity.

        Parameters
        ----------
        PStart: IntSurf_PathPoint
        Mult: int

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

        """
        return _IntSurf.IntSurf_PathPointTool_Parameters(*args)

    @staticmethod
    def Value2d(*args) -> "Standard_Real &, Standard_Real &":
        r"""
        Returns the <u, v> parameters which are associated with <p> it's the parameters which start the marching algorithm.

        Parameters
        ----------
        PStart: IntSurf_PathPoint

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

        """
        return _IntSurf.IntSurf_PathPointTool_Value2d(*args)

    @staticmethod
    def Value3d(*args) -> "gp_Pnt":
        r"""
        Returns the 3d coordinates of the starting point.

        Parameters
        ----------
        PStart: IntSurf_PathPoint

        Returns
        -------
        gp_Pnt

        """
        return _IntSurf.IntSurf_PathPointTool_Value3d(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntSurf.IntSurf_PathPointTool_swiginit(self, _IntSurf.new_IntSurf_PathPointTool())
    __swig_destroy__ = _IntSurf.delete_IntSurf_PathPointTool

# Register IntSurf_PathPointTool in _IntSurf:
_IntSurf.IntSurf_PathPointTool_swigregister(IntSurf_PathPointTool)

def IntSurf_PathPointTool_Direction2d(*args) -> "gp_Dir2d":
    r"""
    Returns the tangent at the intersection in the parametric space of the parametrized surface.this tangent is associated to the value2d la tangente a un sens signifiant (indique le sens de chemin ement) an exception is raised if istangent is true.

    Parameters
    ----------
    PStart: IntSurf_PathPoint

    Returns
    -------
    gp_Dir2d

    """
    return _IntSurf.IntSurf_PathPointTool_Direction2d(*args)

def IntSurf_PathPointTool_Direction3d(*args) -> "gp_Vec":
    r"""
    Returns the tangent at the intersection in 3d space associated to <p> an exception is raised if istangent is true.

    Parameters
    ----------
    PStart: IntSurf_PathPoint

    Returns
    -------
    gp_Vec

    """
    return _IntSurf.IntSurf_PathPointTool_Direction3d(*args)

def IntSurf_PathPointTool_IsPassingPnt(*args) -> "Standard_Boolean":
    r"""
    Returns true if the point is a point on a non-oriented arc, which means that the intersection line does not stop at such a point but just go through such a point. ispassingpnt is true when isonarc is true.

    Parameters
    ----------
    PStart: IntSurf_PathPoint

    Returns
    -------
    bool

    """
    return _IntSurf.IntSurf_PathPointTool_IsPassingPnt(*args)

def IntSurf_PathPointTool_IsTangent(*args) -> "Standard_Boolean":
    r"""
    Returns true if the surfaces are tangent at this point. istangent can be true when isonarc is true if ispassingpnt is true and istangent is true,this point is a stopped point.

    Parameters
    ----------
    PStart: IntSurf_PathPoint

    Returns
    -------
    bool

    """
    return _IntSurf.IntSurf_PathPointTool_IsTangent(*args)

def IntSurf_PathPointTool_Multiplicity(*args) -> "Standard_Integer":
    r"""
    Returns the multiplicity of the point i-e the number of auxillar parameters associated to the point which the principal parameters are given by value2d.

    Parameters
    ----------
    PStart: IntSurf_PathPoint

    Returns
    -------
    int

    """
    return _IntSurf.IntSurf_PathPointTool_Multiplicity(*args)

def IntSurf_PathPointTool_Parameters(*args) -> "Standard_Real &, Standard_Real &":
    r"""
    Parametric coordinates associated to the multiplicity. an exception is raised if mult<=0 or mult>multiplicity.

    Parameters
    ----------
    PStart: IntSurf_PathPoint
    Mult: int

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

    """
    return _IntSurf.IntSurf_PathPointTool_Parameters(*args)

def IntSurf_PathPointTool_Value2d(*args) -> "Standard_Real &, Standard_Real &":
    r"""
    Returns the <u, v> parameters which are associated with <p> it's the parameters which start the marching algorithm.

    Parameters
    ----------
    PStart: IntSurf_PathPoint

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

    """
    return _IntSurf.IntSurf_PathPointTool_Value2d(*args)

def IntSurf_PathPointTool_Value3d(*args) -> "gp_Pnt":
    r"""
    Returns the 3d coordinates of the starting point.

    Parameters
    ----------
    PStart: IntSurf_PathPoint

    Returns
    -------
    gp_Pnt

    """
    return _IntSurf.IntSurf_PathPointTool_Value3d(*args)

class IntSurf_PntOn2S(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"""
        Empty constructor.

        Returns
        -------
        None

        """
        _IntSurf.IntSurf_PntOn2S_swiginit(self, _IntSurf.new_IntSurf_PntOn2S(*args))

    def IsSame(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if 2d- and 3d-coordinates of theoterpoint are equal to corresponding coordinates of me (with given tolerance). if thetol2d < 0.0 we will compare 3d-points only.

        Parameters
        ----------
        theOtherPoint: IntSurf_PntOn2S
        theTol3D: float,optional
        	default value is 0.0
        theTol2D: float,optional
        	default value is -1.0

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_PntOn2S_IsSame(self, *args)

    def Parameters(self, *args) -> "void":
        r"""
        Returns the parameters of the point on both surfaces.

        Parameters
        ----------

        Returns
        -------
        U1: float
        V1: float
        U2: float
        V2: float

        """
        return _IntSurf.IntSurf_PntOn2S_Parameters(self, *args)

    def ParametersOnS1(self, *args) -> "void":
        r"""
        Returns the parameters of the point on the first surface.

        Parameters
        ----------

        Returns
        -------
        U1: float
        V1: float

        """
        return _IntSurf.IntSurf_PntOn2S_ParametersOnS1(self, *args)

    def ParametersOnS2(self, *args) -> "void":
        r"""
        Returns the parameters of the point on the second surface.

        Parameters
        ----------

        Returns
        -------
        U2: float
        V2: float

        """
        return _IntSurf.IntSurf_PntOn2S_ParametersOnS2(self, *args)

    def ParametersOnSurface(self, *args) -> "void":
        r"""
        Returns the parameters of the point in the parametric space of one of the surface.

        Parameters
        ----------
        OnFirst: bool

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

        """
        return _IntSurf.IntSurf_PntOn2S_ParametersOnSurface(self, *args)

    def SetValue(self, *args) -> "void":
        r"""
        Sets the value of the point in 3d space.

        Parameters
        ----------
        Pt: gp_Pnt

        Returns
        -------
        None
        Sets the values of the point in 3d space, and in the parametric space of one of the surface.

        Parameters
        ----------
        Pt: gp_Pnt
        OnFirst: bool
        U: float
        V: float

        Returns
        -------
        None
        Sets the values of the point in 3d space, and in the parametric space of each surface.

        Parameters
        ----------
        Pt: gp_Pnt
        U1: float
        V1: float
        U2: float
        V2: float

        Returns
        -------
        None
        Set the values of the point in the parametric space of one of the surface.

        Parameters
        ----------
        OnFirst: bool
        U: float
        V: float

        Returns
        -------
        None
        Set the values of the point in the parametric space of one of the surface.

        Parameters
        ----------
        U1: float
        V1: float
        U2: float
        V2: float

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_PntOn2S_SetValue(self, *args)

    def Value(self, *args) -> "gp_Pnt const":
        r"""
        Returns the point in 3d space.

        Returns
        -------
        gp_Pnt

        """
        return _IntSurf.IntSurf_PntOn2S_Value(self, *args)

    def ValueOnSurface(self, *args) -> "gp_Pnt2d":
        r"""
        Returns the point in 2d space of one of the surfaces.

        Parameters
        ----------
        OnFirst: bool

        Returns
        -------
        gp_Pnt2d

        """
        return _IntSurf.IntSurf_PntOn2S_ValueOnSurface(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntSurf.delete_IntSurf_PntOn2S

# Register IntSurf_PntOn2S in _IntSurf:
_IntSurf.IntSurf_PntOn2S_swigregister(IntSurf_PntOn2S)

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

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

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        P: gp_Pln

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Cylinder

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S: gp_Sphere

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Cone

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        T: gp_Torus

        Returns
        -------
        None

        """
        _IntSurf.IntSurf_Quadric_swiginit(self, _IntSurf.new_IntSurf_Quadric(*args))

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

        Returns
        -------
        gp_Cone

        """
        return _IntSurf.IntSurf_Quadric_Cone(self, *args)

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

        Returns
        -------
        gp_Cylinder

        """
        return _IntSurf.IntSurf_Quadric_Cylinder(self, *args)

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

        Parameters
        ----------
        U: float
        V: float
        P: gp_Pnt
        D1U: gp_Vec
        D1V: gp_Vec

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_Quadric_D1(self, *args)

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

        Parameters
        ----------
        U: float
        V: float
        Nu: int
        Nv: int

        Returns
        -------
        gp_Vec

        """
        return _IntSurf.IntSurf_Quadric_DN(self, *args)

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

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

        Returns
        -------
        float

        """
        return _IntSurf.IntSurf_Quadric_Distance(self, *args)

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

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

        Returns
        -------
        gp_Vec

        """
        return _IntSurf.IntSurf_Quadric_Gradient(self, *args)

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

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

        Returns
        -------
        gp_Vec
        No available documentation.

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

        Returns
        -------
        gp_Vec

        """
        return _IntSurf.IntSurf_Quadric_Normale(self, *args)

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

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

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

        """
        return _IntSurf.IntSurf_Quadric_Parameters(self, *args)

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

        Returns
        -------
        gp_Pln

        """
        return _IntSurf.IntSurf_Quadric_Plane(self, *args)

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

        Parameters
        ----------
        P: gp_Pln

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Cylinder

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        S: gp_Sphere

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        C: gp_Cone

        Returns
        -------
        None
        No available documentation.

        Parameters
        ----------
        T: gp_Torus

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_Quadric_SetValue(self, *args)

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

        Returns
        -------
        gp_Sphere

        """
        return _IntSurf.IntSurf_Quadric_Sphere(self, *args)

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

        Returns
        -------
        gp_Torus

        """
        return _IntSurf.IntSurf_Quadric_Torus(self, *args)

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

        Returns
        -------
        GeomAbs_SurfaceType

        """
        return _IntSurf.IntSurf_Quadric_TypeQuadric(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt
        Grad: gp_Vec

        Returns
        -------
        Dist: float

        """
        return _IntSurf.IntSurf_Quadric_ValAndGrad(self, *args)

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

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

        Returns
        -------
        gp_Pnt

        """
        return _IntSurf.IntSurf_Quadric_Value(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntSurf.delete_IntSurf_Quadric

# Register IntSurf_Quadric in _IntSurf:
_IntSurf.IntSurf_Quadric_swigregister(IntSurf_Quadric)

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

    @staticmethod
    def Gradient(*args) -> "void":
        r"""
        Returns the gradient of the function.

        Parameters
        ----------
        Quad: IntSurf_Quadric
        X: float
        Y: float
        Z: float
        V: gp_Vec

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_QuadricTool_Gradient(*args)

    @staticmethod
    def Tolerance(*args) -> "Standard_Real":
        r"""
        Returns the tolerance of the zero of the implicit function.

        Parameters
        ----------
        Quad: IntSurf_Quadric

        Returns
        -------
        float

        """
        return _IntSurf.IntSurf_QuadricTool_Tolerance(*args)

    @staticmethod
    def Value(*args) -> "Standard_Real":
        r"""
        Returns the value of the function.

        Parameters
        ----------
        Quad: IntSurf_Quadric
        X: float
        Y: float
        Z: float

        Returns
        -------
        float

        """
        return _IntSurf.IntSurf_QuadricTool_Value(*args)

    @staticmethod
    def ValueAndGradient(*args) -> "Standard_Real &":
        r"""
        Returns the value and the gradient.

        Parameters
        ----------
        Quad: IntSurf_Quadric
        X: float
        Y: float
        Z: float
        Grad: gp_Vec

        Returns
        -------
        Val: float

        """
        return _IntSurf.IntSurf_QuadricTool_ValueAndGradient(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _IntSurf.IntSurf_QuadricTool_swiginit(self, _IntSurf.new_IntSurf_QuadricTool())
    __swig_destroy__ = _IntSurf.delete_IntSurf_QuadricTool

# Register IntSurf_QuadricTool in _IntSurf:
_IntSurf.IntSurf_QuadricTool_swigregister(IntSurf_QuadricTool)

def IntSurf_QuadricTool_Gradient(*args) -> "void":
    r"""
    Returns the gradient of the function.

    Parameters
    ----------
    Quad: IntSurf_Quadric
    X: float
    Y: float
    Z: float
    V: gp_Vec

    Returns
    -------
    None

    """
    return _IntSurf.IntSurf_QuadricTool_Gradient(*args)

def IntSurf_QuadricTool_Tolerance(*args) -> "Standard_Real":
    r"""
    Returns the tolerance of the zero of the implicit function.

    Parameters
    ----------
    Quad: IntSurf_Quadric

    Returns
    -------
    float

    """
    return _IntSurf.IntSurf_QuadricTool_Tolerance(*args)

def IntSurf_QuadricTool_Value(*args) -> "Standard_Real":
    r"""
    Returns the value of the function.

    Parameters
    ----------
    Quad: IntSurf_Quadric
    X: float
    Y: float
    Z: float

    Returns
    -------
    float

    """
    return _IntSurf.IntSurf_QuadricTool_Value(*args)

def IntSurf_QuadricTool_ValueAndGradient(*args) -> "Standard_Real &":
    r"""
    Returns the value and the gradient.

    Parameters
    ----------
    Quad: IntSurf_Quadric
    X: float
    Y: float
    Z: float
    Grad: gp_Vec

    Returns
    -------
    Val: float

    """
    return _IntSurf.IntSurf_QuadricTool_ValueAndGradient(*args)

class IntSurf_Transition(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"""
        Empty constructor. creates an undecided transition.

        Returns
        -------
        None
        Create a in or out transition.

        Parameters
        ----------
        Tangent: bool
        Type: IntSurf_TypeTrans

        Returns
        -------
        None
        Create a touch transition.

        Parameters
        ----------
        Tangent: bool
        Situ: IntSurf_Situation
        Oppos: bool

        Returns
        -------
        None

        """
        _IntSurf.IntSurf_Transition_swiginit(self, _IntSurf.new_IntSurf_Transition(*args))

    def IsOpposite(self, *args) -> "Standard_Boolean":
        r"""
        Returns a significant value if transitiontype returns touch. in this case, the function returns true when the 2 curves locally define two different parts of the space. if transitiontype returns in or out or undecided, an exception is raised.

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_Transition_IsOpposite(self, *args)

    def IsTangent(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the point is tangent to the arc given by value. an exception is raised if transitiontype returns undecided.

        Returns
        -------
        bool

        """
        return _IntSurf.IntSurf_Transition_IsTangent(self, *args)

    def SetValue(self, *args) -> "void":
        r"""
        Set the values of an in or out transition.

        Parameters
        ----------
        Tangent: bool
        Type: IntSurf_TypeTrans

        Returns
        -------
        None
        Set the values of a touch transition.

        Parameters
        ----------
        Tangent: bool
        Situ: IntSurf_Situation
        Oppos: bool

        Returns
        -------
        None
        Set the values of an undecided transition.

        Returns
        -------
        None

        """
        return _IntSurf.IntSurf_Transition_SetValue(self, *args)

    def Situation(self, *args) -> "IntSurf_Situation":
        r"""
        Returns a significant value if transitiontype returns touch. in this case, the function returns : inside when the intersection line remains inside the arc, outside when it remains outside the arc, unknown when the calsulus cannot give results. if transitiontype returns in, or out, or undecided, a exception is raised.

        Returns
        -------
        IntSurf_Situation

        """
        return _IntSurf.IntSurf_Transition_Situation(self, *args)

    def TransitionType(self, *args) -> "IntSurf_TypeTrans":
        r"""
        Returns the type of transition (in/out/touch/undecided) for the arc given by value. this the transition of the intersection line compared to the arc of restriction, i-e when the function returns inside for example, it means that the intersection line goes inside the part of plane limited by the arc of restriction.

        Returns
        -------
        IntSurf_TypeTrans

        """
        return _IntSurf.IntSurf_Transition_TransitionType(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _IntSurf.delete_IntSurf_Transition

# Register IntSurf_Transition in _IntSurf:
_IntSurf.IntSurf_Transition_swigregister(IntSurf_Transition)





