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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _Draft:
_Draft.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 _Draft.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.TopoDS
import OCC.Core.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.Geom2d
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.Geom
import OCC.Core.BRepTools
import OCC.Core.Bnd
import OCC.Core.BVH
import OCC.Core.TopTools
import OCC.Core.BRep
import OCC.Core.Poly
import OCC.Core.TShort

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

Draft_NoError = _Draft.Draft_NoError
Draft_FaceRecomputation = _Draft.Draft_FaceRecomputation
Draft_EdgeRecomputation = _Draft.Draft_EdgeRecomputation
Draft_VertexRecomputation = _Draft.Draft_VertexRecomputation


class Draft_ErrorStatus(IntEnum):
	Draft_NoError = 0
	Draft_FaceRecomputation = 1
	Draft_EdgeRecomputation = 2
	Draft_VertexRecomputation = 3
Draft_NoError = Draft_ErrorStatus.Draft_NoError
Draft_FaceRecomputation = Draft_ErrorStatus.Draft_FaceRecomputation
Draft_EdgeRecomputation = Draft_ErrorStatus.Draft_EdgeRecomputation
Draft_VertexRecomputation = Draft_ErrorStatus.Draft_VertexRecomputation


def Handle_Draft_Modification_Create():
    return _Draft.Handle_Draft_Modification_Create()

def Handle_Draft_Modification_DownCast(t):
    return _Draft.Handle_Draft_Modification_DownCast(t)

def Handle_Draft_Modification_IsNull(t):
    return _Draft.Handle_Draft_Modification_IsNull(t)
class Draft_IndexedDataMapOfEdgeEdgeInfo(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 _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_begin(self)

    def end(self):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_end(self)

    def cbegin(self):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_cbegin(self)

    def cend(self):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_cend(self)

    def __init__(self, *args):
        _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_swiginit(self, _Draft.new_Draft_IndexedDataMapOfEdgeEdgeInfo(*args))

    def Exchange(self, theOther):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Exchange(self, theOther)

    def Assign(self, theOther):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Assign(self, theOther)

    def Set(self, theOther):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Set(self, theOther)

    def ReSize(self, N):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_ReSize(self, N)

    def Add(self, theKey1, theItem):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Add(self, theKey1, theItem)

    def Contains(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Contains(self, theKey1)

    def Substitute(self, theIndex, theKey1, theItem):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Substitute(self, theIndex, theKey1, theItem)

    def Swap(self, theIndex1, theIndex2):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Swap(self, theIndex1, theIndex2)

    def RemoveLast(self):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_RemoveLast(self)

    def RemoveFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_RemoveFromIndex(self, theIndex)

    def RemoveKey(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_RemoveKey(self, theKey1)

    def FindKey(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_FindKey(self, theIndex)

    def FindFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_FindFromIndex(self, theIndex)

    def ChangeFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_ChangeFromIndex(self, theIndex)

    def __call__(self, *args):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo___call__(self, *args)

    def FindIndex(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_FindIndex(self, theKey1)

    def ChangeFromKey(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_ChangeFromKey(self, theKey1)

    def Seek(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Seek(self, theKey1)

    def ChangeSeek(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_ChangeSeek(self, theKey1)

    def FindFromKey(self, *args):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_FindFromKey(self, *args)

    def Clear(self, *args):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Clear(self, *args)
    __swig_destroy__ = _Draft.delete_Draft_IndexedDataMapOfEdgeEdgeInfo

    def Size(self):
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Size(self)

# Register Draft_IndexedDataMapOfEdgeEdgeInfo in _Draft:
_Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_swigregister(Draft_IndexedDataMapOfEdgeEdgeInfo)
class Draft_IndexedDataMapOfFaceFaceInfo(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 _Draft.Draft_IndexedDataMapOfFaceFaceInfo_begin(self)

    def end(self):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_end(self)

    def cbegin(self):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_cbegin(self)

    def cend(self):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_cend(self)

    def __init__(self, *args):
        _Draft.Draft_IndexedDataMapOfFaceFaceInfo_swiginit(self, _Draft.new_Draft_IndexedDataMapOfFaceFaceInfo(*args))

    def Exchange(self, theOther):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Exchange(self, theOther)

    def Assign(self, theOther):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Assign(self, theOther)

    def Set(self, theOther):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Set(self, theOther)

    def ReSize(self, N):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_ReSize(self, N)

    def Add(self, theKey1, theItem):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Add(self, theKey1, theItem)

    def Contains(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Contains(self, theKey1)

    def Substitute(self, theIndex, theKey1, theItem):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Substitute(self, theIndex, theKey1, theItem)

    def Swap(self, theIndex1, theIndex2):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Swap(self, theIndex1, theIndex2)

    def RemoveLast(self):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_RemoveLast(self)

    def RemoveFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_RemoveFromIndex(self, theIndex)

    def RemoveKey(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_RemoveKey(self, theKey1)

    def FindKey(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_FindKey(self, theIndex)

    def FindFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_FindFromIndex(self, theIndex)

    def ChangeFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_ChangeFromIndex(self, theIndex)

    def __call__(self, *args):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo___call__(self, *args)

    def FindIndex(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_FindIndex(self, theKey1)

    def ChangeFromKey(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_ChangeFromKey(self, theKey1)

    def Seek(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Seek(self, theKey1)

    def ChangeSeek(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_ChangeSeek(self, theKey1)

    def FindFromKey(self, *args):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_FindFromKey(self, *args)

    def Clear(self, *args):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Clear(self, *args)
    __swig_destroy__ = _Draft.delete_Draft_IndexedDataMapOfFaceFaceInfo

    def Size(self):
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Size(self)

# Register Draft_IndexedDataMapOfFaceFaceInfo in _Draft:
_Draft.Draft_IndexedDataMapOfFaceFaceInfo_swigregister(Draft_IndexedDataMapOfFaceFaceInfo)
class Draft_IndexedDataMapOfVertexVertexInfo(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 _Draft.Draft_IndexedDataMapOfVertexVertexInfo_begin(self)

    def end(self):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_end(self)

    def cbegin(self):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_cbegin(self)

    def cend(self):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_cend(self)

    def __init__(self, *args):
        _Draft.Draft_IndexedDataMapOfVertexVertexInfo_swiginit(self, _Draft.new_Draft_IndexedDataMapOfVertexVertexInfo(*args))

    def Exchange(self, theOther):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Exchange(self, theOther)

    def Assign(self, theOther):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Assign(self, theOther)

    def Set(self, theOther):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Set(self, theOther)

    def ReSize(self, N):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_ReSize(self, N)

    def Add(self, theKey1, theItem):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Add(self, theKey1, theItem)

    def Contains(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Contains(self, theKey1)

    def Substitute(self, theIndex, theKey1, theItem):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Substitute(self, theIndex, theKey1, theItem)

    def Swap(self, theIndex1, theIndex2):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Swap(self, theIndex1, theIndex2)

    def RemoveLast(self):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_RemoveLast(self)

    def RemoveFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_RemoveFromIndex(self, theIndex)

    def RemoveKey(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_RemoveKey(self, theKey1)

    def FindKey(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_FindKey(self, theIndex)

    def FindFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_FindFromIndex(self, theIndex)

    def ChangeFromIndex(self, theIndex):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_ChangeFromIndex(self, theIndex)

    def __call__(self, *args):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo___call__(self, *args)

    def FindIndex(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_FindIndex(self, theKey1)

    def ChangeFromKey(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_ChangeFromKey(self, theKey1)

    def Seek(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Seek(self, theKey1)

    def ChangeSeek(self, theKey1):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_ChangeSeek(self, theKey1)

    def FindFromKey(self, *args):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_FindFromKey(self, *args)

    def Clear(self, *args):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Clear(self, *args)
    __swig_destroy__ = _Draft.delete_Draft_IndexedDataMapOfVertexVertexInfo

    def Size(self):
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Size(self)

# Register Draft_IndexedDataMapOfVertexVertexInfo in _Draft:
_Draft.Draft_IndexedDataMapOfVertexVertexInfo_swigregister(Draft_IndexedDataMapOfVertexVertexInfo)
class draft(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        F: TopoDS_Face
        Direction: gp_Dir

        Return
        -------
        float

        Description
        -----------
        Returns the draft angle of the face <f> using the direction <direction>. the method is valid for: - plane faces, - cylindrical or conical faces, when the direction of the axis of the surface is colinear with the direction. otherwise, the exception domainerror is raised.

        """
        return _Draft.draft_Angle(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _Draft.draft_swiginit(self, _Draft.new_draft())
    __swig_destroy__ = _Draft.delete_draft

# Register draft in _Draft:
_Draft.draft_swigregister(draft)
class Draft_EdgeInfo(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
        ----------
        HasNewGeometry: bool

        Return
        -------
        None

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

        """
        _Draft.Draft_EdgeInfo_swiginit(self, _Draft.new_Draft_EdgeInfo(*args))

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

        Parameters
        ----------
        F: TopoDS_Face

        Return
        -------
        None

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

        """
        return _Draft.Draft_EdgeInfo_Add(self, *args)

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

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

        """
        return _Draft.Draft_EdgeInfo_ChangeFirstPC(self, *args)

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

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

        """
        return _Draft.Draft_EdgeInfo_ChangeGeometry(self, *args)

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

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

        """
        return _Draft.Draft_EdgeInfo_ChangeSecondPC(self, *args)

    def FirstFace(self, *args):
        r"""
        Return
        -------
        TopoDS_Face

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

        """
        return _Draft.Draft_EdgeInfo_FirstFace(self, *args)

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

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

        """
        return _Draft.Draft_EdgeInfo_FirstPC(self, *args)

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

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

        """
        return _Draft.Draft_EdgeInfo_Geometry(self, *args)

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

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

        Return
        -------
        bool

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

        """
        return _Draft.Draft_EdgeInfo_IsTangent(self, *args)

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

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

        """
        return _Draft.Draft_EdgeInfo_NewGeometry(self, *args)

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

        Parameters
        ----------
        F: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        No available documentation.
        Return
        -------
        TopoDS_Face

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

        """
        return _Draft.Draft_EdgeInfo_RootFace(self, *args)

    def SecondFace(self, *args):
        r"""
        Return
        -------
        TopoDS_Face

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

        """
        return _Draft.Draft_EdgeInfo_SecondFace(self, *args)

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

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

        """
        return _Draft.Draft_EdgeInfo_SecondPC(self, *args)

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

        Parameters
        ----------
        NewGeom: bool

        Return
        -------
        None

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

        """
        return _Draft.Draft_EdgeInfo_SetNewGeometry(self, *args)

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

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

        Return
        -------
        None

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

        """
        return _Draft.Draft_EdgeInfo_Tangent(self, *args)

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

        Parameters
        ----------
        tol: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.
        Return
        -------
        float

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

        """
        return _Draft.Draft_EdgeInfo_Tolerance(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Draft.delete_Draft_EdgeInfo

# Register Draft_EdgeInfo in _Draft:
_Draft.Draft_EdgeInfo_swigregister(Draft_EdgeInfo)
class Draft_FaceInfo(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
        ----------
        S: Geom_Surface
        HasNewGeometry: bool

        Return
        -------
        None

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

        """
        _Draft.Draft_FaceInfo_swiginit(self, _Draft.new_Draft_FaceInfo(*args))

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

        Parameters
        ----------
        F: TopoDS_Face

        Return
        -------
        None

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

        """
        return _Draft.Draft_FaceInfo_Add(self, *args)

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

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

        """
        return _Draft.Draft_FaceInfo_ChangeCurve(self, *args)

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

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

        """
        return _Draft.Draft_FaceInfo_ChangeGeometry(self, *args)

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

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

        """
        return _Draft.Draft_FaceInfo_Curve(self, *args)

    def FirstFace(self, *args):
        r"""
        Return
        -------
        TopoDS_Face

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

        """
        return _Draft.Draft_FaceInfo_FirstFace(self, *args)

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

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

        """
        return _Draft.Draft_FaceInfo_Geometry(self, *args)

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

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

        """
        return _Draft.Draft_FaceInfo_NewGeometry(self, *args)

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

        Parameters
        ----------
        F: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        No available documentation.
        Return
        -------
        TopoDS_Face

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

        """
        return _Draft.Draft_FaceInfo_RootFace(self, *args)

    def SecondFace(self, *args):
        r"""
        Return
        -------
        TopoDS_Face

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

        """
        return _Draft.Draft_FaceInfo_SecondFace(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Draft.delete_Draft_FaceInfo

# Register Draft_FaceInfo in _Draft:
_Draft.Draft_FaceInfo_swigregister(Draft_FaceInfo)
class Draft_Modification(OCC.Core.BRepTools.BRepTools_Modification):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        S: TopoDS_Shape

        Return
        -------
        None

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

        """
        _Draft.Draft_Modification_swiginit(self, _Draft.new_Draft_Modification(*args))

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

        Parameters
        ----------
        F: TopoDS_Face
        Direction: gp_Dir
        Angle: float
        NeutralPlane: gp_Pln
        Flag: bool (optional, default to Standard_True)

        Return
        -------
        bool

        Description
        -----------
        Adds the face f and propagates the draft modification to its neighbour faces if they are tangent. if an error occurs, will return false and problematicshape will return the 'bad' face.

        """
        return _Draft.Draft_Modification_Add(self, *args)

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

        Description
        -----------
        Resets on the same shape.

        """
        return _Draft.Draft_Modification_Clear(self, *args)

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

        Parameters
        ----------
        F: TopoDS_Face

        Return
        -------
        TopTools_ListOfShape

        Description
        -----------
        Returns all the faces which have been added together with the face <f>.

        """
        return _Draft.Draft_Modification_ConnectedFaces(self, *args)

    def Error(self, *args):
        r"""
        Return
        -------
        Draft_ErrorStatus

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

        """
        return _Draft.Draft_Modification_Error(self, *args)

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

        Parameters
        ----------
        S: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Changes the basis shape and resets.

        """
        return _Draft.Draft_Modification_Init(self, *args)

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

        Description
        -----------
        Returns true if perform has been successfully called. otherwise more information can be obtained using the methods error() and problematicshape().

        """
        return _Draft.Draft_Modification_IsDone(self, *args)

    def ModifiedFaces(self, *args):
        r"""
        Return
        -------
        TopTools_ListOfShape

        Description
        -----------
        Returns all the faces on which a modification has been given.

        """
        return _Draft.Draft_Modification_ModifiedFaces(self, *args)

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

        Description
        -----------
        Performs the draft angle modification and sets the value returned by the method isdone. if an error occurs, isdone will return standard_false, and an error status will be given by the method error, and the shape on which the problem appeared will be given by problematicshape.

        """
        return _Draft.Draft_Modification_Perform(self, *args)

    def ProblematicShape(self, *args):
        r"""
        Return
        -------
        TopoDS_Shape

        Description
        -----------
        Returns the shape (face, edge or vertex) on which an error occurred.

        """
        return _Draft.Draft_Modification_ProblematicShape(self, *args)

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

        Parameters
        ----------
        F: TopoDS_Face

        Return
        -------
        None

        Description
        -----------
        Removes the face f and the neighbour faces if they are tangent. it will be necessary to call this method if the method add returns standard_false, to unset problematicface.

        """
        return _Draft.Draft_Modification_Remove(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _Draft.delete_Draft_Modification

# Register Draft_Modification in _Draft:
_Draft.Draft_Modification_swigregister(Draft_Modification)
class Draft_VertexInfo(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.

        """
        _Draft.Draft_VertexInfo_swiginit(self, _Draft.new_Draft_VertexInfo(*args))

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

        Parameters
        ----------
        E: TopoDS_Edge

        Return
        -------
        None

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

        """
        return _Draft.Draft_VertexInfo_Add(self, *args)

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

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

        """
        return _Draft.Draft_VertexInfo_ChangeGeometry(self, *args)

    def GetChangeParameter(self, E):
        r"""GetChangeParameter(Draft_VertexInfo self, TopoDS_Edge E) -> Standard_Real"""
        return _Draft.Draft_VertexInfo_GetChangeParameter(self, E)

    def SetChangeParameter(self, E, value):
        r"""SetChangeParameter(Draft_VertexInfo self, TopoDS_Edge E, Standard_Real value)"""
        return _Draft.Draft_VertexInfo_SetChangeParameter(self, E, value)

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

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

        """
        return _Draft.Draft_VertexInfo_Edge(self, *args)

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

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

        """
        return _Draft.Draft_VertexInfo_Geometry(self, *args)

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

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

        """
        return _Draft.Draft_VertexInfo_InitEdgeIterator(self, *args)

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

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

        """
        return _Draft.Draft_VertexInfo_MoreEdge(self, *args)

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

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

        """
        return _Draft.Draft_VertexInfo_NextEdge(self, *args)

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

        Parameters
        ----------
        E: TopoDS_Edge

        Return
        -------
        float

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

        """
        return _Draft.Draft_VertexInfo_Parameter(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _Draft.delete_Draft_VertexInfo

# Register Draft_VertexInfo in _Draft:
_Draft.Draft_VertexInfo_swigregister(Draft_VertexInfo)



@deprecated
def draft_Angle(*args):
	return draft.Angle(*args)



