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

"""
Geom2dHatch module, see official documentation at
https://www.opencascade.com/doc/occt-7.7.0/refman/html/package_geom2dhatch.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _Geom2dHatch
else:
    import _Geom2dHatch

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


def process_exception(error, method_name, class_name):
    return _Geom2dHatch.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.Geom2dAdaptor
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.IntRes2d
import OCC.Core.TopAbs
import OCC.Core.HatchGen
import OCC.Core.Geom2dInt
import OCC.Core.math
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.IntCurve
import OCC.Core.Extrema
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.GeomAdaptor
import OCC.Core.Intf
import OCC.Core.Bnd
import OCC.Core.BVH

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



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

    def begin(self):
        return _Geom2dHatch.Geom2dHatch_Hatchings_begin(self)

    def end(self):
        return _Geom2dHatch.Geom2dHatch_Hatchings_end(self)

    def cbegin(self):
        return _Geom2dHatch.Geom2dHatch_Hatchings_cbegin(self)

    def cend(self):
        return _Geom2dHatch.Geom2dHatch_Hatchings_cend(self)

    def __init__(self, *args):
        _Geom2dHatch.Geom2dHatch_Hatchings_swiginit(self, _Geom2dHatch.new_Geom2dHatch_Hatchings(*args))

    def Exchange(self, theOther):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Exchange(self, theOther)

    def Assign(self, theOther):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Assign(self, theOther)

    def Set(self, theOther):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Set(self, theOther)

    def ReSize(self, N):
        return _Geom2dHatch.Geom2dHatch_Hatchings_ReSize(self, N)

    def Bind(self, theKey, theItem):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Bind(self, theKey, theItem)

    def Bound(self, theKey, theItem):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Bound(self, theKey, theItem)

    def IsBound(self, theKey):
        return _Geom2dHatch.Geom2dHatch_Hatchings_IsBound(self, theKey)

    def UnBind(self, theKey):
        return _Geom2dHatch.Geom2dHatch_Hatchings_UnBind(self, theKey)

    def Seek(self, theKey):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Seek(self, theKey)

    def Find(self, *args):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Find(self, *args)

    def ChangeSeek(self, theKey):
        return _Geom2dHatch.Geom2dHatch_Hatchings_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey):
        return _Geom2dHatch.Geom2dHatch_Hatchings_ChangeFind(self, theKey)

    def __call__(self, *args):
        return _Geom2dHatch.Geom2dHatch_Hatchings___call__(self, *args)

    def Clear(self, *args):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Clear(self, *args)
    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_Hatchings

    def Size(self):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Size(self)

    def Keys(self):
        return _Geom2dHatch.Geom2dHatch_Hatchings_Keys(self)

# Register Geom2dHatch_Hatchings in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_Hatchings_swigregister(Geom2dHatch_Hatchings)
class Geom2dHatch_MapOfElements(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_begin(self)

    def end(self):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_end(self)

    def cbegin(self):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_cbegin(self)

    def cend(self):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_cend(self)

    def __init__(self, *args):
        _Geom2dHatch.Geom2dHatch_MapOfElements_swiginit(self, _Geom2dHatch.new_Geom2dHatch_MapOfElements(*args))

    def Exchange(self, theOther):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Exchange(self, theOther)

    def Assign(self, theOther):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Assign(self, theOther)

    def Set(self, theOther):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Set(self, theOther)

    def ReSize(self, N):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_ReSize(self, N)

    def Bind(self, theKey, theItem):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Bind(self, theKey, theItem)

    def Bound(self, theKey, theItem):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Bound(self, theKey, theItem)

    def IsBound(self, theKey):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_IsBound(self, theKey)

    def UnBind(self, theKey):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_UnBind(self, theKey)

    def Seek(self, theKey):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Seek(self, theKey)

    def Find(self, *args):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Find(self, *args)

    def ChangeSeek(self, theKey):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_ChangeFind(self, theKey)

    def __call__(self, *args):
        return _Geom2dHatch.Geom2dHatch_MapOfElements___call__(self, *args)

    def Clear(self, *args):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Clear(self, *args)
    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_MapOfElements

    def Size(self):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Size(self)

    def Keys(self):
        return _Geom2dHatch.Geom2dHatch_MapOfElements_Keys(self)

# Register Geom2dHatch_MapOfElements in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_MapOfElements_swigregister(Geom2dHatch_MapOfElements)
class Geom2dHatch_Classifier(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Empty constructor, undefined algorithm.

        Parameters
        ----------
        F: Geom2dHatch_Elements
        P: gp_Pnt2d
        Tol: float

        Return
        -------
        None

        Description
        -----------
        Creates an algorithm to classify the point p with tolerance <t> on the face described by <f>.

        """
        _Geom2dHatch.Geom2dHatch_Classifier_swiginit(self, _Geom2dHatch.new_Geom2dHatch_Classifier(*args))

    def Edge(self, *args):
        r"""
        Return
        -------
        Geom2dAdaptor_Curve

        Description
        -----------
        Returns the edge used to determine the classification. when the state is on this is the edge containing the point.

        """
        return _Geom2dHatch.Geom2dHatch_Classifier_Edge(self, *args)

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

        Description
        -----------
        Returns the parameter on edge() used to determine the classification.

        """
        return _Geom2dHatch.Geom2dHatch_Classifier_EdgeParameter(self, *args)

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

        Description
        -----------
        Returns true if the face contains no wire. the state is in.

        """
        return _Geom2dHatch.Geom2dHatch_Classifier_NoWires(self, *args)

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

        Parameters
        ----------
        F: Geom2dHatch_Elements
        P: gp_Pnt2d
        Tol: float

        Return
        -------
        None

        Description
        -----------
        Classify the point p with tolerance <t> on the face described by <f>.

        """
        return _Geom2dHatch.Geom2dHatch_Classifier_Perform(self, *args)

    def Position(self, *args):
        r"""
        Return
        -------
        IntRes2d_Position

        Description
        -----------
        Returns the position of the point on the edge returned by edge.

        """
        return _Geom2dHatch.Geom2dHatch_Classifier_Position(self, *args)

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

        Description
        -----------
        Returns true when the state was computed by a rejection. the state is out.

        """
        return _Geom2dHatch.Geom2dHatch_Classifier_Rejected(self, *args)

    def State(self, *args):
        r"""
        Return
        -------
        TopAbs_State

        Description
        -----------
        Returns the result of the classification.

        """
        return _Geom2dHatch.Geom2dHatch_Classifier_State(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_Classifier

# Register Geom2dHatch_Classifier in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_Classifier_swigregister(Geom2dHatch_Classifier)
class Geom2dHatch_Element(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

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

        Parameters
        ----------
        Curve: Geom2dAdaptor_Curve
        Orientation: TopAbs_Orientation (optional, default to TopAbs_FORWARD)

        Return
        -------
        None

        Description
        -----------
        Creates an element.

        """
        _Geom2dHatch.Geom2dHatch_Element_swiginit(self, _Geom2dHatch.new_Geom2dHatch_Element(*args))

    def ChangeCurve(self, *args):
        r"""
        Return
        -------
        Geom2dAdaptor_Curve

        Description
        -----------
        Returns the curve associated to the element.

        """
        return _Geom2dHatch.Geom2dHatch_Element_ChangeCurve(self, *args)

    def Curve(self, *args):
        r"""
        Return
        -------
        Geom2dAdaptor_Curve

        Description
        -----------
        Returns the curve associated to the element.

        """
        return _Geom2dHatch.Geom2dHatch_Element_Curve(self, *args)

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

        Parameters
        ----------
        Orientation: TopAbs_Orientation

        Return
        -------
        None

        Description
        -----------
        Sets the orientation of the element.
        Return
        -------
        TopAbs_Orientation

        Description
        -----------
        Returns the orientation of the element.

        """
        return _Geom2dHatch.Geom2dHatch_Element_Orientation(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_Element

# Register Geom2dHatch_Element in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_Element_swigregister(Geom2dHatch_Element)
class Geom2dHatch_Elements(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

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

        Parameters
        ----------
        Other: Geom2dHatch_Elements

        Return
        -------
        None

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

        """
        _Geom2dHatch.Geom2dHatch_Elements_swiginit(self, _Geom2dHatch.new_Geom2dHatch_Elements(*args))

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

        Parameters
        ----------
        K: int
        I: Geom2dHatch_Element

        Return
        -------
        bool

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_Bind(self, *args)

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

        Parameters
        ----------
        K: int

        Return
        -------
        Geom2dHatch_Element

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_ChangeFind(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt2d

        Return
        -------
        bool

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_CheckPoint(self, *args)

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

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_Clear(self, *args)

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

        Parameters
        ----------
        E: Geom2dAdaptor_Curve

        Return
        -------
        Or: TopAbs_Orientation

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_CurrentEdge(self, *args)

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

        Parameters
        ----------
        K: int

        Return
        -------
        Geom2dHatch_Element

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_Find(self, *args)

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

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_InitEdges(self, *args)

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

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_InitWires(self, *args)

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

        Parameters
        ----------
        K: int

        Return
        -------
        bool

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_IsBound(self, *args)

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

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_MoreEdges(self, *args)

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

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_MoreWires(self, *args)

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

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_NextEdge(self, *args)

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

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_NextWire(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt2d
        L: gp_Lin2d

        Return
        -------
        Par: float

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_OtherSegment(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt2d

        Return
        -------
        bool

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_Reject(self, *args)

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

        Parameters
        ----------
        L: gp_Lin2d
        Par: float

        Return
        -------
        bool

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_RejectEdge(self, *args)

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

        Parameters
        ----------
        L: gp_Lin2d
        Par: float

        Return
        -------
        bool

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_RejectWire(self, *args)

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

        Parameters
        ----------
        P: gp_Pnt2d
        L: gp_Lin2d

        Return
        -------
        Par: float

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_Segment(self, *args)

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

        Parameters
        ----------
        K: int

        Return
        -------
        bool

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

        """
        return _Geom2dHatch.Geom2dHatch_Elements_UnBind(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_Elements

# Register Geom2dHatch_Elements in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_Elements_swigregister(Geom2dHatch_Elements)
class Geom2dHatch_FClass2dOfClassifier(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Creates an undefined classifier.

        """
        _Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_swiginit(self, _Geom2dHatch.new_Geom2dHatch_FClass2dOfClassifier(*args))

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

        Description
        -----------
        Returns 0 if the last compared edge had no relevant intersection. else returns the index of this intersection in the last intersection algorithm.

        """
        return _Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_ClosestIntersection(self, *args)

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

        Parameters
        ----------
        E: Geom2dAdaptor_Curve
        Or: TopAbs_Orientation

        Return
        -------
        None

        Description
        -----------
        Updates the classification process with the edge <e> from the boundary.

        """
        return _Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_Compare(self, *args)

    def Intersector(self, *args):
        r"""
        Return
        -------
        Geom2dHatch_Intersector

        Description
        -----------
        Returns the intersecting algorithm.

        """
        return _Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_Intersector(self, *args)

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

        Description
        -----------
        Returns the standard_true if the closest intersection point represents head or end of the edge. returns standard_false otherwise.

        """
        return _Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_IsHeadOrEnd(self, *args)

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

        Description
        -----------
        Returns the current value of the parameter.

        """
        return _Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_Parameter(self, *args)

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

        Parameters
        ----------
        L: gp_Lin2d
        P: float
        Tol: float

        Return
        -------
        None

        Description
        -----------
        Starts a classification process. the point to classify is the origin of the line <l>. <p> is the original length of the segment on <l> used to compute intersections. <tol> is the tolerance attached to the line segment in intersections.

        """
        return _Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_Reset(self, *args)

    def State(self, *args):
        r"""
        Return
        -------
        TopAbs_State

        Description
        -----------
        Returns the current state of the point.

        """
        return _Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_State(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_FClass2dOfClassifier

# Register Geom2dHatch_FClass2dOfClassifier in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_FClass2dOfClassifier_swigregister(Geom2dHatch_FClass2dOfClassifier)
class Geom2dHatch_Hatcher(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        Intersector: Geom2dHatch_Intersector
        Confusion2d: float
        Confusion3d: float
        KeepPnt: bool (optional, default to Standard_False)
        KeepSeg: bool (optional, default to Standard_False)

        Return
        -------
        None

        Description
        -----------
        Returns an empty hatcher.

        """
        _Geom2dHatch.Geom2dHatch_Hatcher_swiginit(self, _Geom2dHatch.new_Geom2dHatch_Hatcher(*args))

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

        Parameters
        ----------
        Curve: Geom2dAdaptor_Curve
        Orientation: TopAbs_Orientation (optional, default to TopAbs_FORWARD)

        Return
        -------
        int

        Description
        -----------
        Adds an element to the hatcher and returns its index.

        Parameters
        ----------
        Curve: Geom2d_Curve
        Orientation: TopAbs_Orientation (optional, default to TopAbs_FORWARD)

        Return
        -------
        int

        Description
        -----------
        Adds an element to the hatcher and returns its index.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_AddElement(self, *args)

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

        Parameters
        ----------
        Curve: Geom2dAdaptor_Curve

        Return
        -------
        int

        Description
        -----------
        Adds a hatching to the hatcher and returns its index.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_AddHatching(self, *args)

    def ChangeIntersector(self, *args):
        r"""
        Return
        -------
        Geom2dHatch_Intersector

        Description
        -----------
        Returns the associated intersector.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_ChangeIntersector(self, *args)

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

        Description
        -----------
        Removes all the hatchings and all the elements.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Clear(self, *args)

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

        Description
        -----------
        Removes all the elements from the hatcher.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_ClrElements(self, *args)

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

        Description
        -----------
        Removes all the hatchings from the hatcher.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_ClrHatchings(self, *args)

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

        Description
        -----------
        Computes the domains of all the hatchings.

        Parameters
        ----------
        IndH: int

        Return
        -------
        None

        Description
        -----------
        Computes the domains of the indh-th hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_ComputeDomains(self, *args)

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

        Parameters
        ----------
        Confusion: float

        Return
        -------
        None

        Description
        -----------
        Sets the confusion tolerance.
        Return
        -------
        float

        Description
        -----------
        Returns the 2d confusion tolerance, i.e. the value under which two points are considered identical in the parametric space of the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Confusion2d(self, *args)

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

        Parameters
        ----------
        Confusion: float

        Return
        -------
        None

        Description
        -----------
        Sets the confusion tolerance.
        Return
        -------
        float

        Description
        -----------
        Returns the 3d confusion tolerance, i.e. the value under which two points are considered identical in the 3d space of the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Confusion3d(self, *args)

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

        Parameters
        ----------
        IndH: int
        IDom: int

        Return
        -------
        HatchGen_Domain

        Description
        -----------
        Returns the idom-th domain of the indh-th hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Domain(self, *args)

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

        Description
        -----------
        Dump the hatcher.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Dump(self, *args)

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

        Parameters
        ----------
        IndE: int

        Return
        -------
        Geom2dAdaptor_Curve

        Description
        -----------
        Returns the curve associated to the inde-th element.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_ElementCurve(self, *args)

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

        Parameters
        ----------
        IndH: int

        Return
        -------
        Geom2dAdaptor_Curve

        Description
        -----------
        Returns the curve associated to the indh-th hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_HatchingCurve(self, *args)

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

        Parameters
        ----------
        Intersector: Geom2dHatch_Intersector

        Return
        -------
        None

        Description
        -----------
        Sets the associated intersector.
        Return
        -------
        Geom2dHatch_Intersector

        Description
        -----------
        Returns the associated intersector.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Intersector(self, *args)

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

        Parameters
        ----------
        Keep: bool

        Return
        -------
        None

        Description
        -----------
        Sets the above flag.
        Return
        -------
        bool

        Description
        -----------
        Returns the flag about the points consideration.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_KeepPoints(self, *args)

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

        Parameters
        ----------
        Keep: bool

        Return
        -------
        None

        Description
        -----------
        Sets the above flag.
        Return
        -------
        bool

        Description
        -----------
        Returns the flag about the segments consideration.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_KeepSegments(self, *args)

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

        Parameters
        ----------
        IndH: int

        Return
        -------
        int

        Description
        -----------
        Returns the number of domains of the indh-th hatching. only one 'infinite' domain means that the hatching is fully included in the contour defined by the elements.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_NbDomains(self, *args)

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

        Parameters
        ----------
        IndH: int

        Return
        -------
        int

        Description
        -----------
        Returns the number of intersection points of the indh-th hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_NbPoints(self, *args)

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

        Parameters
        ----------
        IndH: int
        IndP: int

        Return
        -------
        HatchGen_PointOnHatching

        Description
        -----------
        Returns the indp-th intersection point of the indh-th hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Point(self, *args)

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

        Parameters
        ----------
        IndE: int

        Return
        -------
        None

        Description
        -----------
        Removes the inde-th element from the hatcher.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_RemElement(self, *args)

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

        Parameters
        ----------
        IndH: int

        Return
        -------
        None

        Description
        -----------
        Removes the indh-th hatching from the hatcher.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_RemHatching(self, *args)

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

        Parameters
        ----------
        IndH: int

        Return
        -------
        HatchGen_ErrorStatus

        Description
        -----------
        Returns the status about the indh-th hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Status(self, *args)

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

        Description
        -----------
        Trims all the hatchings of the hatcher by all the elements of the hatcher.

        Parameters
        ----------
        Curve: Geom2dAdaptor_Curve

        Return
        -------
        int

        Description
        -----------
        Adds a hatching to the hatcher and trims it by the elements already given and returns its index.

        Parameters
        ----------
        IndH: int

        Return
        -------
        None

        Description
        -----------
        Trims the indh-th hatching by the elements already given.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_Trim(self, *args)

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

        Parameters
        ----------
        IndH: int

        Return
        -------
        bool

        Description
        -----------
        Returns the fact that the intersections were computed for the indh-th hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_TrimDone(self, *args)

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

        Parameters
        ----------
        IndH: int

        Return
        -------
        bool

        Description
        -----------
        Returns the fact that the intersections failed for the indh-th hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatcher_TrimFailed(self, *args)

    __repr__ = _dumps_object

    @methodnotwrapped
    def IsDone(self):
    	pass

    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_Hatcher

# Register Geom2dHatch_Hatcher in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_Hatcher_swigregister(Geom2dHatch_Hatcher)
class Geom2dHatch_Hatching(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

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

        Parameters
        ----------
        Curve: Geom2dAdaptor_Curve

        Return
        -------
        None

        Description
        -----------
        Creates a hatching.

        """
        _Geom2dHatch.Geom2dHatch_Hatching_swiginit(self, _Geom2dHatch.new_Geom2dHatch_Hatching(*args))

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

        Parameters
        ----------
        Domain: HatchGen_Domain

        Return
        -------
        None

        Description
        -----------
        Adds a domain to the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_AddDomain(self, *args)

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

        Parameters
        ----------
        Point: HatchGen_PointOnHatching
        Confusion: float

        Return
        -------
        None

        Description
        -----------
        Adds an intersection point to the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_AddPoint(self, *args)

    def ChangeCurve(self, *args):
        r"""
        Return
        -------
        Geom2dAdaptor_Curve

        Description
        -----------
        Returns the curve associated to the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_ChangeCurve(self, *args)

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

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

        Return
        -------
        HatchGen_PointOnHatching

        Description
        -----------
        Returns the index-th intersection point of the hatching. the exception outofrange is raised if index < 1 or index > nbpoints.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_ChangePoint(self, *args)

    def ClassificationPoint(self, *args):
        r"""
        Return
        -------
        gp_Pnt2d

        Description
        -----------
        Returns a point on the curve. this point will be used for the classification.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_ClassificationPoint(self, *args)

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

        Description
        -----------
        Removes all the domains of the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_ClrDomains(self, *args)

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

        Description
        -----------
        Removes all the intersection points of the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_ClrPoints(self, *args)

    def Curve(self, *args):
        r"""
        Return
        -------
        Geom2dAdaptor_Curve

        Description
        -----------
        Returns the curve associated to the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_Curve(self, *args)

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

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

        Return
        -------
        HatchGen_Domain

        Description
        -----------
        Returns the index-th domain of the hatching. the exception outofrange is raised if index < 1 or index > nbdomains.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_Domain(self, *args)

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

        Parameters
        ----------
        Flag: bool

        Return
        -------
        None

        Description
        -----------
        Sets the flag about the domains computation to the given value.
        Return
        -------
        bool

        Description
        -----------
        Returns the flag about the domains computation.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_IsDone(self, *args)

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

        Description
        -----------
        Returns the number of domains of the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_NbDomains(self, *args)

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

        Description
        -----------
        Returns the number of intersection points of the hatching.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_NbPoints(self, *args)

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

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

        Return
        -------
        HatchGen_PointOnHatching

        Description
        -----------
        Returns the index-th intersection point of the hatching. the exception outofrange is raised if index < 1 or index > nbpoints.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_Point(self, *args)

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

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

        Return
        -------
        None

        Description
        -----------
        Removes the index-th domain of the hatching. the exception outofrange is raised if index < 1 or index > nbdomains.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_RemDomain(self, *args)

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

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

        Return
        -------
        None

        Description
        -----------
        Removes the index-th intersection point of the hatching. the exception outofrange is raised if index < 1 or index > nbpoints.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_RemPoint(self, *args)

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

        Parameters
        ----------
        theStatus: HatchGen_ErrorStatus

        Return
        -------
        None

        Description
        -----------
        Sets the error status.
        Return
        -------
        HatchGen_ErrorStatus

        Description
        -----------
        Returns the error status.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_Status(self, *args)

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

        Parameters
        ----------
        Flag: bool

        Return
        -------
        None

        Description
        -----------
        Sets the flag about the trimming computations to the given value.
        Return
        -------
        bool

        Description
        -----------
        Returns the flag about the trimming computations.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_TrimDone(self, *args)

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

        Parameters
        ----------
        Flag: bool

        Return
        -------
        None

        Description
        -----------
        Sets the flag about the trimming failure to the given value.
        Return
        -------
        bool

        Description
        -----------
        Returns the flag about the trimming failure.

        """
        return _Geom2dHatch.Geom2dHatch_Hatching_TrimFailed(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_Hatching

# Register Geom2dHatch_Hatching in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_Hatching_swigregister(Geom2dHatch_Hatching)
class Geom2dHatch_Intersector(OCC.Core.Geom2dInt.Geom2dInt_GInter):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        Confusion: float
        Tangency: float

        Return
        -------
        None

        Description
        -----------
        Creates an intersector.
        Return
        -------
        None

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

        """
        _Geom2dHatch.Geom2dHatch_Intersector_swiginit(self, _Geom2dHatch.new_Geom2dHatch_Intersector(*args))

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

        Description
        -----------
        Returns the confusion tolerance of the intersector.

        """
        return _Geom2dHatch.Geom2dHatch_Intersector_ConfusionTolerance(self, *args)

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

        Parameters
        ----------
        C1: Geom2dAdaptor_Curve
        C2: Geom2dAdaptor_Curve

        Return
        -------
        None

        Description
        -----------
        Intersects the curves c1 and c2. the results are retrieved by the usual methods described in intres2d_intersection. creates an intersector.

        """
        return _Geom2dHatch.Geom2dHatch_Intersector_Intersect(self, *args)

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

        Parameters
        ----------
        E: Geom2dAdaptor_Curve
        U: float
        T: gp_Dir2d
        N: gp_Dir2d

        Return
        -------
        C: float

        Description
        -----------
        Returns in <t>, <n> and <c> the tangent, normal and curvature of the edge <e> at parameter value <u>.

        """
        return _Geom2dHatch.Geom2dHatch_Intersector_LocalGeometry(self, *args)

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

        Parameters
        ----------
        L: gp_Lin2d
        P: float
        Tol: float
        E: Geom2dAdaptor_Curve

        Return
        -------
        None

        Description
        -----------
        Performs the intersection between the 2d line segment (<l>, <p>) and the curve <e>. the line segment is the part of the 2d line <l> of parameter range [0, <p>] (p is positive and can be reallast()). tol is the tolerance on the segment. the order is relevant, the first argument is the segment, the second the edge.

        """
        return _Geom2dHatch.Geom2dHatch_Intersector_Perform(self, *args)

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

        Parameters
        ----------
        Confusion: float

        Return
        -------
        None

        Description
        -----------
        Sets the confusion tolerance of the intersector.

        """
        return _Geom2dHatch.Geom2dHatch_Intersector_SetConfusionTolerance(self, *args)

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

        Parameters
        ----------
        Tangency: float

        Return
        -------
        None

        Description
        -----------
        Sets the tangency tolerance of the intersector.

        """
        return _Geom2dHatch.Geom2dHatch_Intersector_SetTangencyTolerance(self, *args)

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

        Description
        -----------
        Returns the tangency tolerance of the intersector.

        """
        return _Geom2dHatch.Geom2dHatch_Intersector_TangencyTolerance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Geom2dHatch.delete_Geom2dHatch_Intersector

# Register Geom2dHatch_Intersector in _Geom2dHatch:
_Geom2dHatch.Geom2dHatch_Intersector_swigregister(Geom2dHatch_Intersector)



