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

"""
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__

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


def process_exception(error: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    return _IntCurveSurface.process_exception(error, method_name, class_name)

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

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

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

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


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

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

    def begin(self) -> "NCollection_Sequence< IntCurveSurface_IntersectionPoint >::iterator":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_begin(self)

    def end(self) -> "NCollection_Sequence< IntCurveSurface_IntersectionPoint >::iterator":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_end(self)

    def cbegin(self) -> "NCollection_Sequence< IntCurveSurface_IntersectionPoint >::const_iterator":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_cbegin(self)

    def cend(self) -> "NCollection_Sequence< IntCurveSurface_IntersectionPoint >::const_iterator":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_cend(self)

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

    def Size(self) -> "Standard_Integer":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Size(self)

    def Length(self) -> "Standard_Integer":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_IsEmpty(self)

    def Reverse(self) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Reverse(self)

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

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

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

    def Assign(self, theOther: "IntCurveSurface_SequenceOfPnt") -> "NCollection_Sequence< IntCurveSurface_IntersectionPoint > &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Assign(self, theOther)

    def Set(self, theOther: "IntCurveSurface_SequenceOfPnt") -> "NCollection_Sequence< IntCurveSurface_IntersectionPoint > &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "IntCurveSurface_SequenceOfPnt") -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Split(self, theIndex, theSeq)

    def First(self) -> "IntCurveSurface_IntersectionPoint const &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_First(self)

    def ChangeFirst(self) -> "IntCurveSurface_IntersectionPoint &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeFirst(self)

    def Last(self) -> "IntCurveSurface_IntersectionPoint const &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Last(self)

    def ChangeLast(self) -> "IntCurveSurface_IntersectionPoint &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "IntCurveSurface_IntersectionPoint const &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "IntCurveSurface_IntersectionPoint &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "IntCurveSurface_IntersectionPoint &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "IntCurveSurface_IntersectionPoint") -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfPnt_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_SequenceOfPnt

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


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

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

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

    def begin(self) -> "NCollection_Sequence< IntCurveSurface_IntersectionSegment >::iterator":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_begin(self)

    def end(self) -> "NCollection_Sequence< IntCurveSurface_IntersectionSegment >::iterator":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_end(self)

    def cbegin(self) -> "NCollection_Sequence< IntCurveSurface_IntersectionSegment >::const_iterator":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_cbegin(self)

    def cend(self) -> "NCollection_Sequence< IntCurveSurface_IntersectionSegment >::const_iterator":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_cend(self)

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

    def Size(self) -> "Standard_Integer":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Size(self)

    def Length(self) -> "Standard_Integer":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Length(self)

    def Lower(self) -> "Standard_Integer":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_IsEmpty(self)

    def Reverse(self) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Reverse(self)

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

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

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

    def Assign(self, theOther: "IntCurveSurface_SequenceOfSeg") -> "NCollection_Sequence< IntCurveSurface_IntersectionSegment > &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Assign(self, theOther)

    def Set(self, theOther: "IntCurveSurface_SequenceOfSeg") -> "NCollection_Sequence< IntCurveSurface_IntersectionSegment > &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Set(self, theOther)

    def Remove(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Remove(self, *args)

    def Append(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Append(self, *args)

    def Prepend(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Prepend(self, *args)

    def InsertBefore(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_InsertBefore(self, *args)

    def InsertAfter(self, *args) -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_InsertAfter(self, *args)

    def Split(self, theIndex: "Standard_Integer const", theSeq: "IntCurveSurface_SequenceOfSeg") -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Split(self, theIndex, theSeq)

    def First(self) -> "IntCurveSurface_IntersectionSegment const &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_First(self)

    def ChangeFirst(self) -> "IntCurveSurface_IntersectionSegment &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeFirst(self)

    def Last(self) -> "IntCurveSurface_IntersectionSegment const &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Last(self)

    def ChangeLast(self) -> "IntCurveSurface_IntersectionSegment &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeLast(self)

    def Value(self, theIndex: "Standard_Integer const") -> "IntCurveSurface_IntersectionSegment const &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_Value(self, theIndex)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "IntCurveSurface_IntersectionSegment &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_ChangeValue(self, theIndex)

    def __call__(self, *args) -> "IntCurveSurface_IntersectionSegment &":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg___call__(self, *args)

    def SetValue(self, theIndex: "Standard_Integer const", theItem: "IntCurveSurface_IntersectionSegment") -> "void":
        return _IntCurveSurface.IntCurveSurface_SequenceOfSeg_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_SequenceOfSeg

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


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

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

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def Dump(self, *args) -> "void":
        r"""
        Dump all the fields.

        Returns
        -------
        None

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

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns the <done> field.

        Returns
        -------
        bool

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

    def IsParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if curve is parallel or belongs surface this case is recognized only for some pairs of analytical curves and surfaces (plane - line, ...).

        Returns
        -------
        bool

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

    def NbPoints(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of intersectionpoint if isdone returns true. else notdone is raised.

        Returns
        -------
        int

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

    def NbSegments(self, *args) -> "Standard_Integer":
        r"""
        Returns the number of intersectionsegment if isdone returns true. else notdone is raised.

        Returns
        -------
        int

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

    def Point(self, *args) -> "IntCurveSurface_IntersectionPoint const &":
        r"""
        Returns the intersectionpoint of range <index> raises notdone if the computation has failed or if the computation has not been done raises outofrange if index is not in the range <1..nbpoints>.

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

        Returns
        -------
        IntCurveSurface_IntersectionPoint

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

    def Segment(self, *args) -> "IntCurveSurface_IntersectionSegment const &":
        r"""
        Returns the intersectionsegment of range <index> raises notdone if the computation has failed or if the computation has not been done raises outofrange if index is not in the range <1..nbsegment>.

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

        Returns
        -------
        IntCurveSurface_IntersectionSegment

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

    __repr__ = _dumps_object


# Register IntCurveSurface_Intersection in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_Intersection_swigregister(IntCurveSurface_Intersection)

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

    def __init__(self, *args):
        r"""
        Empty constructor.

        Returns
        -------
        None
        Create an intersectionpoint.

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

        Returns
        -------
        None

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

    def Dump(self, *args) -> "void":
        r"""
        Dump all the fields.

        Returns
        -------
        None

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

    def Pnt(self, *args) -> "gp_Pnt const":
        r"""
        Returns the geometric point.

        Returns
        -------
        gp_Pnt

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

    def SetValues(self, *args) -> "void":
        r"""
        Set the fields of the current intersectionpoint.

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

        Returns
        -------
        None

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

    def Transition(self, *args) -> "IntCurveSurface_TransitionOnCurve":
        r"""
        Returns the transition of the point.

        Returns
        -------
        IntCurveSurface_TransitionOnCurve

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

    def U(self, *args) -> "Standard_Real":
        r"""
        Returns the u parameter on the surface.

        Returns
        -------
        float

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

    def V(self, *args) -> "Standard_Real":
        r"""
        Returns the v parameter on the surface.

        Returns
        -------
        float

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

    def Values(self, *args) -> "void":
        r"""
        Get the fields of the current intersectionpoint.

        Parameters
        ----------
        P: gp_Pnt
        TrCurv: IntCurveSurface_TransitionOnCurve

        Returns
        -------
        USurf: float
        VSurf: float
        UCurv: float

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

    def W(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter on the curve.

        Returns
        -------
        float

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

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_IntersectionPoint

# Register IntCurveSurface_IntersectionPoint in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_IntersectionPoint_swigregister(IntCurveSurface_IntersectionPoint)

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

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

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

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

        Returns
        -------
        None

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

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

        Returns
        -------
        None

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

    def FirstPoint(self, *args) -> "IntCurveSurface_IntersectionPoint const &":
        r"""
        No available documentation.

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

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

        Returns
        -------
        IntCurveSurface_IntersectionPoint

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

    def SecondPoint(self, *args) -> "IntCurveSurface_IntersectionPoint const &":
        r"""
        No available documentation.

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

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

        Returns
        -------
        IntCurveSurface_IntersectionPoint

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

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

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

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_IntersectionSegment

# Register IntCurveSurface_IntersectionSegment in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_IntersectionSegment_swigregister(IntCurveSurface_IntersectionSegment)

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

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

        Parameters
        ----------
        S: Adaptor3d_HSurface
        C: Adaptor3d_HCurve

        Returns
        -------
        None

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

    def AuxillarCurve(self, *args) -> "opencascade::handle< Adaptor3d_HCurve > const &":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Adaptor3d_HCurve>

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

    def AuxillarSurface(self, *args) -> "opencascade::handle< Adaptor3d_HSurface > const &":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Adaptor3d_HSurface>

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

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

        Returns
        -------
        gp_Pnt

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

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

        Returns
        -------
        float

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

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheCSFunctionOfHInter

# Register IntCurveSurface_TheCSFunctionOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheCSFunctionOfHInter_swigregister(IntCurveSurface_TheCSFunctionOfHInter)

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

    def __init__(self, *args):
        r"""
        Compute the solution point with the close point margincoef is the coefficient for extension of uv bounds. ex., ufirst -= margincoef*(ulast-ufirst).

        Parameters
        ----------
        U: float
        V: float
        W: float
        F: IntCurveSurface_TheCSFunctionOfHInter
        TolTangency: float
        MarginCoef: float,optional
        	default value is 0.0

        Returns
        -------
        None
        Initialize the parameters to compute the solution.

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

        Returns
        -------
        None

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

    def Function(self, *args) -> "IntCurveSurface_TheCSFunctionOfHInter &":
        r"""
        Return the math function which is used to compute the intersection.

        Returns
        -------
        IntCurveSurface_TheCSFunctionOfHInter

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

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if the creation completed without failure.

        Returns
        -------
        bool

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

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

        Returns
        -------
        bool

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

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

        Returns
        -------
        float

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

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

        Parameters
        ----------

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

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

    def Perform(self, *args) -> "void":
        r"""
        Compute the solution it's possible to write to optimize: intimp_intcs inter(s1,c1,toltangency) math_functionsetroot rsnld(inter.function()) while ...{ u=... v=... w=... inter.perform(u,v,w,rsnld) } or intimp_intcs inter(toltangency) inter.setsurface(s); math_functionsetroot rsnld(inter.function()) while ...{ c=... inter.setcurve(c); u=... v=... w=... inter.perform(u,v,w,rsnld) }.

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

        Returns
        -------
        None

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

    def Point(self, *args) -> "gp_Pnt const":
        r"""
        Returns the intersection point the exception notdone is raised if isdone is false. the exception domainerror is raised if isempty is true.

        Returns
        -------
        gp_Pnt

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

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheExactHInter

# Register IntCurveSurface_TheExactHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheExactHInter_swigregister(IntCurveSurface_TheExactHInter)

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

    @staticmethod
    def BSpline(*args) -> "opencascade::handle< Geom_BSplineCurve >":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        opencascade::handle<Geom_BSplineCurve>

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_BSpline(*args)

    @staticmethod
    def Bezier(*args) -> "opencascade::handle< Geom_BezierCurve >":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        opencascade::handle<Geom_BezierCurve>

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Bezier(*args)

    @staticmethod
    def Circle(*args) -> "gp_Circ":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        gp_Circ

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Circle(*args)

    @staticmethod
    def Continuity(*args) -> "GeomAbs_Shape":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        GeomAbs_Shape

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Continuity(*args)

    @staticmethod
    def D0(*args) -> "void":
        r"""
        Computes the point of parameter u on the curve.

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

        Returns
        -------
        None

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D0(*args)

    @staticmethod
    def D1(*args) -> "void":
        r"""
        Computes the point of parameter u on the curve with its first derivative. raised if the continuity of the current interval is not c1.

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

        Returns
        -------
        None

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D1(*args)

    @staticmethod
    def D2(*args) -> "void":
        r"""
        Returns the point p of parameter u, the first and second derivatives v1 and v2. raised if the continuity of the current interval is not c2.

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

        Returns
        -------
        None

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D2(*args)

    @staticmethod
    def D3(*args) -> "void":
        r"""
        Returns the point p of parameter u, the first, the second and the third derivative. raised if the continuity of the current interval is not c3.

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

        Returns
        -------
        None

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D3(*args)

    @staticmethod
    def DN(*args) -> "gp_Vec":
        r"""
        The returned vector gives the value of the derivative for the order of derivation n. raised if the continuity of the current interval is not cn. raised if n < 1.

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

        Returns
        -------
        gp_Vec

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_DN(*args)

    @staticmethod
    def Ellipse(*args) -> "gp_Elips":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        gp_Elips

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Ellipse(*args)

    @staticmethod
    def FirstParameter(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        float

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_FirstParameter(*args)

    @staticmethod
    def GetType(*args) -> "GeomAbs_CurveType":
        r"""
        Returns the type of the curve in the current interval : line, circle, ellipse, hyperbola, parabola, beziercurve, bsplinecurve, othercurve.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        GeomAbs_CurveType

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_GetType(*args)

    @staticmethod
    def Hyperbola(*args) -> "gp_Hypr":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        gp_Hypr

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Hyperbola(*args)

    @staticmethod
    def Intervals(*args) -> "void":
        r"""
        Stores in <t> the parameters bounding the intervals of continuity <s>. //! the array must provide enough room to accomodate for the parameters. i.e. t.length() > nbintervals().

        Parameters
        ----------
        C: Adaptor3d_HCurve
        T: TColStd_Array1OfReal
        S: GeomAbs_Shape

        Returns
        -------
        None

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Intervals(*args)

    @staticmethod
    def IsClosed(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        bool

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_IsClosed(*args)

    @staticmethod
    def IsPeriodic(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        bool

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_IsPeriodic(*args)

    @staticmethod
    def LastParameter(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        float

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_LastParameter(*args)

    @staticmethod
    def Line(*args) -> "gp_Lin":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        gp_Lin

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Line(*args)

    @staticmethod
    def NbIntervals(*args) -> "Standard_Integer":
        r"""
        Returns the number of intervals for continuity <s>. may be one if continuity(myclass) >= <s>.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        S: GeomAbs_Shape

        Returns
        -------
        int

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_NbIntervals(*args)

    @staticmethod
    def NbSamples(*args) -> "Standard_Integer":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        U0: float
        U1: float

        Returns
        -------
        int

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_NbSamples(*args)

    @staticmethod
    def Parabola(*args) -> "gp_Parab":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        gp_Parab

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Parabola(*args)

    @staticmethod
    def Period(*args) -> "Standard_Real":
        r"""
        No available documentation.

        Parameters
        ----------
        C: Adaptor3d_HCurve

        Returns
        -------
        float

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Period(*args)

    @staticmethod
    def Resolution(*args) -> "Standard_Real":
        r"""
        Returns the parametric resolution corresponding to the real space resolution <r3d>.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        R3d: float

        Returns
        -------
        float

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Resolution(*args)

    @staticmethod
    def SamplePars(*args) -> "void":
        r"""
        No available documentation.

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

        Returns
        -------
        None

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_SamplePars(*args)

    @staticmethod
    def Value(*args) -> "gp_Pnt":
        r"""
        Computes the point of parameter u on the curve.

        Parameters
        ----------
        C: Adaptor3d_HCurve
        U: float

        Returns
        -------
        gp_Pnt

        """
        return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Value(*args)

    __repr__ = _dumps_object


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

# Register IntCurveSurface_TheHCurveTool in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheHCurveTool_swigregister(IntCurveSurface_TheHCurveTool)

def IntCurveSurface_TheHCurveTool_BSpline(*args) -> "opencascade::handle< Geom_BSplineCurve >":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    opencascade::handle<Geom_BSplineCurve>

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_BSpline(*args)

def IntCurveSurface_TheHCurveTool_Bezier(*args) -> "opencascade::handle< Geom_BezierCurve >":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    opencascade::handle<Geom_BezierCurve>

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Bezier(*args)

def IntCurveSurface_TheHCurveTool_Circle(*args) -> "gp_Circ":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    gp_Circ

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Circle(*args)

def IntCurveSurface_TheHCurveTool_Continuity(*args) -> "GeomAbs_Shape":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    GeomAbs_Shape

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Continuity(*args)

def IntCurveSurface_TheHCurveTool_D0(*args) -> "void":
    r"""
    Computes the point of parameter u on the curve.

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

    Returns
    -------
    None

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D0(*args)

def IntCurveSurface_TheHCurveTool_D1(*args) -> "void":
    r"""
    Computes the point of parameter u on the curve with its first derivative. raised if the continuity of the current interval is not c1.

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

    Returns
    -------
    None

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D1(*args)

def IntCurveSurface_TheHCurveTool_D2(*args) -> "void":
    r"""
    Returns the point p of parameter u, the first and second derivatives v1 and v2. raised if the continuity of the current interval is not c2.

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

    Returns
    -------
    None

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D2(*args)

def IntCurveSurface_TheHCurveTool_D3(*args) -> "void":
    r"""
    Returns the point p of parameter u, the first, the second and the third derivative. raised if the continuity of the current interval is not c3.

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

    Returns
    -------
    None

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_D3(*args)

def IntCurveSurface_TheHCurveTool_DN(*args) -> "gp_Vec":
    r"""
    The returned vector gives the value of the derivative for the order of derivation n. raised if the continuity of the current interval is not cn. raised if n < 1.

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

    Returns
    -------
    gp_Vec

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_DN(*args)

def IntCurveSurface_TheHCurveTool_Ellipse(*args) -> "gp_Elips":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    gp_Elips

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Ellipse(*args)

def IntCurveSurface_TheHCurveTool_FirstParameter(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    float

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_FirstParameter(*args)

def IntCurveSurface_TheHCurveTool_GetType(*args) -> "GeomAbs_CurveType":
    r"""
    Returns the type of the curve in the current interval : line, circle, ellipse, hyperbola, parabola, beziercurve, bsplinecurve, othercurve.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    GeomAbs_CurveType

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_GetType(*args)

def IntCurveSurface_TheHCurveTool_Hyperbola(*args) -> "gp_Hypr":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    gp_Hypr

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Hyperbola(*args)

def IntCurveSurface_TheHCurveTool_Intervals(*args) -> "void":
    r"""
    Stores in <t> the parameters bounding the intervals of continuity <s>. //! the array must provide enough room to accomodate for the parameters. i.e. t.length() > nbintervals().

    Parameters
    ----------
    C: Adaptor3d_HCurve
    T: TColStd_Array1OfReal
    S: GeomAbs_Shape

    Returns
    -------
    None

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Intervals(*args)

def IntCurveSurface_TheHCurveTool_IsClosed(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    bool

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_IsClosed(*args)

def IntCurveSurface_TheHCurveTool_IsPeriodic(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    bool

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_IsPeriodic(*args)

def IntCurveSurface_TheHCurveTool_LastParameter(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    float

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_LastParameter(*args)

def IntCurveSurface_TheHCurveTool_Line(*args) -> "gp_Lin":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    gp_Lin

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Line(*args)

def IntCurveSurface_TheHCurveTool_NbIntervals(*args) -> "Standard_Integer":
    r"""
    Returns the number of intervals for continuity <s>. may be one if continuity(myclass) >= <s>.

    Parameters
    ----------
    C: Adaptor3d_HCurve
    S: GeomAbs_Shape

    Returns
    -------
    int

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_NbIntervals(*args)

def IntCurveSurface_TheHCurveTool_NbSamples(*args) -> "Standard_Integer":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve
    U0: float
    U1: float

    Returns
    -------
    int

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_NbSamples(*args)

def IntCurveSurface_TheHCurveTool_Parabola(*args) -> "gp_Parab":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    gp_Parab

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Parabola(*args)

def IntCurveSurface_TheHCurveTool_Period(*args) -> "Standard_Real":
    r"""
    No available documentation.

    Parameters
    ----------
    C: Adaptor3d_HCurve

    Returns
    -------
    float

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Period(*args)

def IntCurveSurface_TheHCurveTool_Resolution(*args) -> "Standard_Real":
    r"""
    Returns the parametric resolution corresponding to the real space resolution <r3d>.

    Parameters
    ----------
    C: Adaptor3d_HCurve
    R3d: float

    Returns
    -------
    float

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Resolution(*args)

def IntCurveSurface_TheHCurveTool_SamplePars(*args) -> "void":
    r"""
    No available documentation.

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

    Returns
    -------
    None

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_SamplePars(*args)

def IntCurveSurface_TheHCurveTool_Value(*args) -> "gp_Pnt":
    r"""
    Computes the point of parameter u on the curve.

    Parameters
    ----------
    C: Adaptor3d_HCurve
    U: float

    Returns
    -------
    gp_Pnt

    """
    return _IntCurveSurface.IntCurveSurface_TheHCurveTool_Value(*args)

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.

        Returns
        -------
        None
        Constructs and computes an interference between the polygon and the polyhedron.

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

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

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

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

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

        Returns
        -------
        None
        Constructs and computes an interference between the polygon and the polyhedron.

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

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

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

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

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

        Returns
        -------
        None

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

    def Interference(self, *args) -> "void":
        r"""
        Compares the boundings between the segment of <thepolyg> and the facets of <thepolyh>.

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

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

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

        Returns
        -------
        None

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

    def Perform(self, *args) -> "void":
        r"""
        Computes an interference between the polygon and the polyhedron.

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

        Returns
        -------
        None
        Computes an interference between the straight line and the polyhedron.

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

        Returns
        -------
        None
        Computes an interference between the straight lines and the polyhedron.

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

        Returns
        -------
        None
        Computes an interference between the polygon and the polyhedron.

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

        Returns
        -------
        None
        Computes an interference between the straight line and the polyhedron.

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

        Returns
        -------
        None
        Computes an interference between the straight lines and the polyhedron.

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

        Returns
        -------
        None

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

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheInterferenceOfHInter

# Register IntCurveSurface_TheInterferenceOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheInterferenceOfHInter_swigregister(IntCurveSurface_TheInterferenceOfHInter)

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

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

        Parameters
        ----------
        Curve: Adaptor3d_HCurve
        NbPnt: int

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

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

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

        Parameters
        ----------
        Curve: Adaptor3d_HCurve
        Upars: TColStd_Array1OfReal

        Returns
        -------
        None

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

    def ApproxParamOnCurve(self, *args) -> "Standard_Real":
        r"""
        Give an approximation of the parameter on the curve according to the discretization of the curve.

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

        Returns
        -------
        float

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

    def BeginOfSeg(self, *args) -> "gp_Pnt const":
        r"""
        Give the point of range index in the polygon.

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

        Returns
        -------
        gp_Pnt

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

    def Bounding(self, *args) -> "Bnd_Box const &":
        r"""
        Give the bounding box of the polygon.

        Returns
        -------
        Bnd_Box

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

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

        Parameters
        ----------
        clos: bool

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

        Returns
        -------
        bool

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

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

        Returns
        -------
        float

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

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

        Returns
        -------
        None

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

    def EndOfSeg(self, *args) -> "gp_Pnt const":
        r"""
        Give the point of range index in the polygon.

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

        Returns
        -------
        gp_Pnt

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

    def InfParameter(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter (on the curve) of the first point of the polygon.

        Returns
        -------
        float

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

    def NbSegments(self, *args) -> "Standard_Integer":
        r"""
        Give the number of segments in the polyline.

        Returns
        -------
        int

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

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

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

        Returns
        -------
        None

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

    def SupParameter(self, *args) -> "Standard_Real":
        r"""
        Returns the parameter (on the curve) of the last point of the polygon.

        Returns
        -------
        float

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

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_ThePolygonOfHInter

# Register IntCurveSurface_ThePolygonOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_ThePolygonOfHInter_swigregister(IntCurveSurface_ThePolygonOfHInter)

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

    @staticmethod
    def BeginOfSeg(*args) -> "gp_Pnt const":
        r"""
        Give the point of range index in the polygon.

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

        Returns
        -------
        gp_Pnt

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_BeginOfSeg(*args)

    @staticmethod
    def Bounding(*args) -> "Bnd_Box const &":
        r"""
        Give the bounding box of the polygon.

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

        Returns
        -------
        Bnd_Box

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Bounding(*args)

    @staticmethod
    def Closed(*args) -> "Standard_Boolean":
        r"""
        No available documentation.

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

        Returns
        -------
        bool

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Closed(*args)

    @staticmethod
    def DeflectionOverEstimation(*args) -> "Standard_Real":
        r"""
        No available documentation.

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

        Returns
        -------
        float

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_DeflectionOverEstimation(*args)

    @staticmethod
    def Dump(*args) -> "void":
        r"""
        No available documentation.

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

        Returns
        -------
        None

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Dump(*args)

    @staticmethod
    def EndOfSeg(*args) -> "gp_Pnt const":
        r"""
        Give the point of range index in the polygon.

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

        Returns
        -------
        gp_Pnt

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_EndOfSeg(*args)

    @staticmethod
    def NbSegments(*args) -> "Standard_Integer":
        r"""
        No available documentation.

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

        Returns
        -------
        int

        """
        return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_NbSegments(*args)

    __repr__ = _dumps_object


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

# Register IntCurveSurface_ThePolygonToolOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_swigregister(IntCurveSurface_ThePolygonToolOfHInter)

def IntCurveSurface_ThePolygonToolOfHInter_BeginOfSeg(*args) -> "gp_Pnt const":
    r"""
    Give the point of range index in the polygon.

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

    Returns
    -------
    gp_Pnt

    """
    return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_BeginOfSeg(*args)

def IntCurveSurface_ThePolygonToolOfHInter_Bounding(*args) -> "Bnd_Box const &":
    r"""
    Give the bounding box of the polygon.

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

    Returns
    -------
    Bnd_Box

    """
    return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Bounding(*args)

def IntCurveSurface_ThePolygonToolOfHInter_Closed(*args) -> "Standard_Boolean":
    r"""
    No available documentation.

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

    Returns
    -------
    bool

    """
    return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Closed(*args)

def IntCurveSurface_ThePolygonToolOfHInter_DeflectionOverEstimation(*args) -> "Standard_Real":
    r"""
    No available documentation.

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

    Returns
    -------
    float

    """
    return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_DeflectionOverEstimation(*args)

def IntCurveSurface_ThePolygonToolOfHInter_Dump(*args) -> "void":
    r"""
    No available documentation.

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

    Returns
    -------
    None

    """
    return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_Dump(*args)

def IntCurveSurface_ThePolygonToolOfHInter_EndOfSeg(*args) -> "gp_Pnt const":
    r"""
    Give the point of range index in the polygon.

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

    Returns
    -------
    gp_Pnt

    """
    return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_EndOfSeg(*args)

def IntCurveSurface_ThePolygonToolOfHInter_NbSegments(*args) -> "Standard_Integer":
    r"""
    No available documentation.

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

    Returns
    -------
    int

    """
    return _IntCurveSurface.IntCurveSurface_ThePolygonToolOfHInter_NbSegments(*args)

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

    @staticmethod
    def Bounding(*args) -> "Bnd_Box const &":
        r"""
        Give the bounding box of the polyhedrontool.

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

        Returns
        -------
        Bnd_Box

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Bounding(*args)

    @staticmethod
    def ComponentsBounding(*args) -> "opencascade::handle< Bnd_HArray1OfBox > const &":
        r"""
        Give the array of boxes. the box <n> corresponding to the triangle <n>.

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

        Returns
        -------
        opencascade::handle<Bnd_HArray1OfBox>

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_ComponentsBounding(*args)

    @staticmethod
    def DeflectionOverEstimation(*args) -> "Standard_Real":
        r"""
        Give the tolerance of the polygon.

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

        Returns
        -------
        float

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_DeflectionOverEstimation(*args)

    @staticmethod
    def Dump(*args) -> "void":
        r"""
        No available documentation.

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

        Returns
        -------
        None

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Dump(*args)

    @staticmethod
    def GetBorderDeflection(*args) -> "Standard_Real":
        r"""
        This method returns a border deflection of the polyhedron.

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

        Returns
        -------
        float

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_GetBorderDeflection(*args)

    @staticmethod
    def IsOnBound(*args) -> "Standard_Boolean":
        r"""
        This method returns true if the edge based on points with indices index1 and index2 represents a boundary edge. it is necessary to take into account the boundary deflection for this edge.

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

        Returns
        -------
        bool

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_IsOnBound(*args)

    @staticmethod
    def NbTriangles(*args) -> "Standard_Integer":
        r"""
        Give the number of triangles in this polyedral surface.

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

        Returns
        -------
        int

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_NbTriangles(*args)

    @staticmethod
    def Point(*args) -> "gp_Pnt const":
        r"""
        Give the point of index i in the polyedral surface.

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

        Returns
        -------
        gp_Pnt

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Point(*args)

    @staticmethod
    def TriConnex(*args) -> "Standard_Integer &, Standard_Integer &":
        r"""
        Give the addresse tricon of the triangle connexe to the triangle of address triang by the edge pivot pedge and the third point of this connexe triangle. when we are on a free edge tricon==0 but the function return the value of the triangle in the other side of pivot on the free edge. used to turn around a vertex.

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

        Returns
        -------
        TriCon: int
        OtherP: int

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_TriConnex(*args)

    @staticmethod
    def Triangle(*args) -> "Standard_Integer &, Standard_Integer &, Standard_Integer &":
        r"""
        Give the indices of the 3 points of the triangle of address index in the polyhedrontool.

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

        Returns
        -------
        P1: int
        P2: int
        P3: int

        """
        return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Triangle(*args)

    __repr__ = _dumps_object


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

# Register IntCurveSurface_ThePolyhedronToolOfHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_swigregister(IntCurveSurface_ThePolyhedronToolOfHInter)

def IntCurveSurface_ThePolyhedronToolOfHInter_Bounding(*args) -> "Bnd_Box const &":
    r"""
    Give the bounding box of the polyhedrontool.

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

    Returns
    -------
    Bnd_Box

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Bounding(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_ComponentsBounding(*args) -> "opencascade::handle< Bnd_HArray1OfBox > const &":
    r"""
    Give the array of boxes. the box <n> corresponding to the triangle <n>.

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

    Returns
    -------
    opencascade::handle<Bnd_HArray1OfBox>

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_ComponentsBounding(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_DeflectionOverEstimation(*args) -> "Standard_Real":
    r"""
    Give the tolerance of the polygon.

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

    Returns
    -------
    float

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_DeflectionOverEstimation(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_Dump(*args) -> "void":
    r"""
    No available documentation.

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

    Returns
    -------
    None

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Dump(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_GetBorderDeflection(*args) -> "Standard_Real":
    r"""
    This method returns a border deflection of the polyhedron.

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

    Returns
    -------
    float

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_GetBorderDeflection(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_IsOnBound(*args) -> "Standard_Boolean":
    r"""
    This method returns true if the edge based on points with indices index1 and index2 represents a boundary edge. it is necessary to take into account the boundary deflection for this edge.

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

    Returns
    -------
    bool

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_IsOnBound(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_NbTriangles(*args) -> "Standard_Integer":
    r"""
    Give the number of triangles in this polyedral surface.

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

    Returns
    -------
    int

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_NbTriangles(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_Point(*args) -> "gp_Pnt const":
    r"""
    Give the point of index i in the polyedral surface.

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

    Returns
    -------
    gp_Pnt

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Point(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_TriConnex(*args) -> "Standard_Integer &, Standard_Integer &":
    r"""
    Give the addresse tricon of the triangle connexe to the triangle of address triang by the edge pivot pedge and the third point of this connexe triangle. when we are on a free edge tricon==0 but the function return the value of the triangle in the other side of pivot on the free edge. used to turn around a vertex.

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

    Returns
    -------
    TriCon: int
    OtherP: int

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_TriConnex(*args)

def IntCurveSurface_ThePolyhedronToolOfHInter_Triangle(*args) -> "Standard_Integer &, Standard_Integer &, Standard_Integer &":
    r"""
    Give the indices of the 3 points of the triangle of address index in the polyhedrontool.

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

    Returns
    -------
    P1: int
    P2: int
    P3: int

    """
    return _IntCurveSurface.IntCurveSurface_ThePolyhedronToolOfHInter_Triangle(*args)

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.

        Parameters
        ----------
        S: Adaptor3d_HSurface
        C: Adaptor3d_HCurve

        Returns
        -------
        None

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

    def Intervals(self, *args) -> "void":
        r"""
        U1 and u2 are the parameters of a segment on the curve.

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

        Returns
        -------
        U1: float
        U2: float

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

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

        Returns
        -------
        bool

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

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

        Returns
        -------
        int

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

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

        Returns
        -------
        int

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

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

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

        Returns
        -------
        float

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

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_TheQuadCurvExactHInter

# Register IntCurveSurface_TheQuadCurvExactHInter in _IntCurveSurface:
_IntCurveSurface.IntCurveSurface_TheQuadCurvExactHInter_swigregister(IntCurveSurface_TheQuadCurvExactHInter)

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

    def __init__(self, *args):
        r"""
        Create the function.

        Parameters
        ----------
        Q: IntSurf_Quadric
        C: Adaptor3d_HCurve

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

        Returns
        -------
        None

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

    def Perform(self, *args) -> "void":
        r"""
        Compute the intersection between the curve and the surface.

        Parameters
        ----------
        Curve: Adaptor3d_HCurve
        Surface: Adaptor3d_HSurface

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

        Parameters
        ----------
        Curve: Adaptor3d_HCurve
        Polygon: IntCurveSurface_ThePolygonOfHInter
        Surface: Adaptor3d_HSurface

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

        Parameters
        ----------
        Curve: Adaptor3d_HCurve
        ThePolygon: IntCurveSurface_ThePolygonOfHInter
        Surface: Adaptor3d_HSurface
        Polyhedron: IntCurveSurface_ThePolyhedronOfHInter

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

        Parameters
        ----------
        Curve: Adaptor3d_HCurve
        ThePolygon: IntCurveSurface_ThePolygonOfHInter
        Surface: Adaptor3d_HSurface
        Polyhedron: IntCurveSurface_ThePolyhedronOfHInter
        BndBSB: Bnd_BoundSortBox

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

        Parameters
        ----------
        Curve: Adaptor3d_HCurve
        Surface: Adaptor3d_HSurface
        Polyhedron: IntCurveSurface_ThePolyhedronOfHInter

        Returns
        -------
        None

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

    __repr__ = _dumps_object

    __swig_destroy__ = _IntCurveSurface.delete_IntCurveSurface_HInter

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


@classnotwrapped
class IntCurveSurface_ThePolyhedronOfHInter:
	pass






