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

"""
Draft module, see official documentation at
https://www.opencascade.com/doc/occt-7.4.0/refman/html/package_draft.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 _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 == "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__ = _Draft.delete_SwigPyIterator

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    def __sub__(self, *args) -> "ptrdiff_t":
        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: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    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() -> "opencascade::handle< Draft_Modification >":
    return _Draft.Handle_Draft_Modification_Create()

def Handle_Draft_Modification_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< Draft_Modification >":
    return _Draft.Handle_Draft_Modification_DownCast(t)

def Handle_Draft_Modification_IsNull(t: "opencascade::handle< Draft_Modification > const &") -> "bool":
    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) -> "NCollection_IndexedDataMap< TopoDS_Edge,Draft_EdgeInfo,TopTools_ShapeMapHasher >::iterator":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_begin(self)

    def end(self) -> "NCollection_IndexedDataMap< TopoDS_Edge,Draft_EdgeInfo,TopTools_ShapeMapHasher >::iterator":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_end(self)

    def cbegin(self) -> "NCollection_IndexedDataMap< TopoDS_Edge,Draft_EdgeInfo,TopTools_ShapeMapHasher >::const_iterator":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_cbegin(self)

    def cend(self) -> "NCollection_IndexedDataMap< TopoDS_Edge,Draft_EdgeInfo,TopTools_ShapeMapHasher >::const_iterator":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_cend(self)

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

    def Exchange(self, theOther: "Draft_IndexedDataMapOfEdgeEdgeInfo") -> "void":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Exchange(self, theOther)

    def Assign(self, theOther: "Draft_IndexedDataMapOfEdgeEdgeInfo") -> "NCollection_IndexedDataMap< TopoDS_Edge,Draft_EdgeInfo,TopTools_ShapeMapHasher > &":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Assign(self, theOther)

    def Set(self, theOther: "Draft_IndexedDataMapOfEdgeEdgeInfo") -> "NCollection_IndexedDataMap< TopoDS_Edge,Draft_EdgeInfo,TopTools_ShapeMapHasher > &":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Set(self, theOther)

    def ReSize(self, N: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_ReSize(self, N)

    def Add(self, theKey1: "TopoDS_Edge", theItem: "Draft_EdgeInfo") -> "Standard_Integer":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Add(self, theKey1, theItem)

    def Contains(self, theKey1: "TopoDS_Edge") -> "Standard_Boolean":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Contains(self, theKey1)

    def Substitute(self, theIndex: "Standard_Integer const", theKey1: "TopoDS_Edge", theItem: "Draft_EdgeInfo") -> "void":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Substitute(self, theIndex, theKey1, theItem)

    def Swap(self, theIndex1: "Standard_Integer const", theIndex2: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Swap(self, theIndex1, theIndex2)

    def RemoveLast(self) -> "void":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_RemoveLast(self)

    def RemoveFromIndex(self, theIndex: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_RemoveFromIndex(self, theIndex)

    def RemoveKey(self, theKey1: "TopoDS_Edge") -> "void":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_RemoveKey(self, theKey1)

    def FindKey(self, theIndex: "Standard_Integer const") -> "TopoDS_Edge const &":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_FindKey(self, theIndex)

    def FindFromIndex(self, theIndex: "Standard_Integer const") -> "Draft_EdgeInfo const &":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_FindFromIndex(self, theIndex)

    def ChangeFromIndex(self, theIndex: "Standard_Integer const") -> "Draft_EdgeInfo &":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_ChangeFromIndex(self, theIndex)

    def __call__(self, *args) -> "Draft_EdgeInfo &":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo___call__(self, *args)

    def FindIndex(self, theKey1: "TopoDS_Edge") -> "Standard_Integer":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_FindIndex(self, theKey1)

    def ChangeFromKey(self, theKey1: "TopoDS_Edge") -> "Draft_EdgeInfo &":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_ChangeFromKey(self, theKey1)

    def Seek(self, theKey1: "TopoDS_Edge") -> "Draft_EdgeInfo const *":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_Seek(self, theKey1)

    def ChangeSeek(self, theKey1: "TopoDS_Edge") -> "Draft_EdgeInfo *":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_ChangeSeek(self, theKey1)

    def FindFromKey(self, *args) -> "Standard_Boolean":
        return _Draft.Draft_IndexedDataMapOfEdgeEdgeInfo_FindFromKey(self, *args)

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

    def Size(self) -> "Standard_Integer":
        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) -> "NCollection_IndexedDataMap< TopoDS_Face,Draft_FaceInfo,TopTools_ShapeMapHasher >::iterator":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_begin(self)

    def end(self) -> "NCollection_IndexedDataMap< TopoDS_Face,Draft_FaceInfo,TopTools_ShapeMapHasher >::iterator":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_end(self)

    def cbegin(self) -> "NCollection_IndexedDataMap< TopoDS_Face,Draft_FaceInfo,TopTools_ShapeMapHasher >::const_iterator":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_cbegin(self)

    def cend(self) -> "NCollection_IndexedDataMap< TopoDS_Face,Draft_FaceInfo,TopTools_ShapeMapHasher >::const_iterator":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_cend(self)

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

    def Exchange(self, theOther: "Draft_IndexedDataMapOfFaceFaceInfo") -> "void":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Exchange(self, theOther)

    def Assign(self, theOther: "Draft_IndexedDataMapOfFaceFaceInfo") -> "NCollection_IndexedDataMap< TopoDS_Face,Draft_FaceInfo,TopTools_ShapeMapHasher > &":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Assign(self, theOther)

    def Set(self, theOther: "Draft_IndexedDataMapOfFaceFaceInfo") -> "NCollection_IndexedDataMap< TopoDS_Face,Draft_FaceInfo,TopTools_ShapeMapHasher > &":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Set(self, theOther)

    def ReSize(self, N: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_ReSize(self, N)

    def Add(self, theKey1: "TopoDS_Face", theItem: "Draft_FaceInfo") -> "Standard_Integer":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Add(self, theKey1, theItem)

    def Contains(self, theKey1: "TopoDS_Face") -> "Standard_Boolean":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Contains(self, theKey1)

    def Substitute(self, theIndex: "Standard_Integer const", theKey1: "TopoDS_Face", theItem: "Draft_FaceInfo") -> "void":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Substitute(self, theIndex, theKey1, theItem)

    def Swap(self, theIndex1: "Standard_Integer const", theIndex2: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Swap(self, theIndex1, theIndex2)

    def RemoveLast(self) -> "void":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_RemoveLast(self)

    def RemoveFromIndex(self, theIndex: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_RemoveFromIndex(self, theIndex)

    def RemoveKey(self, theKey1: "TopoDS_Face") -> "void":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_RemoveKey(self, theKey1)

    def FindKey(self, theIndex: "Standard_Integer const") -> "TopoDS_Face const &":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_FindKey(self, theIndex)

    def FindFromIndex(self, theIndex: "Standard_Integer const") -> "Draft_FaceInfo const &":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_FindFromIndex(self, theIndex)

    def ChangeFromIndex(self, theIndex: "Standard_Integer const") -> "Draft_FaceInfo &":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_ChangeFromIndex(self, theIndex)

    def __call__(self, *args) -> "Draft_FaceInfo &":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo___call__(self, *args)

    def FindIndex(self, theKey1: "TopoDS_Face") -> "Standard_Integer":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_FindIndex(self, theKey1)

    def ChangeFromKey(self, theKey1: "TopoDS_Face") -> "Draft_FaceInfo &":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_ChangeFromKey(self, theKey1)

    def Seek(self, theKey1: "TopoDS_Face") -> "Draft_FaceInfo const *":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_Seek(self, theKey1)

    def ChangeSeek(self, theKey1: "TopoDS_Face") -> "Draft_FaceInfo *":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_ChangeSeek(self, theKey1)

    def FindFromKey(self, *args) -> "Standard_Boolean":
        return _Draft.Draft_IndexedDataMapOfFaceFaceInfo_FindFromKey(self, *args)

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

    def Size(self) -> "Standard_Integer":
        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) -> "NCollection_IndexedDataMap< TopoDS_Vertex,Draft_VertexInfo,TopTools_ShapeMapHasher >::iterator":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_begin(self)

    def end(self) -> "NCollection_IndexedDataMap< TopoDS_Vertex,Draft_VertexInfo,TopTools_ShapeMapHasher >::iterator":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_end(self)

    def cbegin(self) -> "NCollection_IndexedDataMap< TopoDS_Vertex,Draft_VertexInfo,TopTools_ShapeMapHasher >::const_iterator":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_cbegin(self)

    def cend(self) -> "NCollection_IndexedDataMap< TopoDS_Vertex,Draft_VertexInfo,TopTools_ShapeMapHasher >::const_iterator":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_cend(self)

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

    def Exchange(self, theOther: "Draft_IndexedDataMapOfVertexVertexInfo") -> "void":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Exchange(self, theOther)

    def Assign(self, theOther: "Draft_IndexedDataMapOfVertexVertexInfo") -> "NCollection_IndexedDataMap< TopoDS_Vertex,Draft_VertexInfo,TopTools_ShapeMapHasher > &":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Assign(self, theOther)

    def Set(self, theOther: "Draft_IndexedDataMapOfVertexVertexInfo") -> "NCollection_IndexedDataMap< TopoDS_Vertex,Draft_VertexInfo,TopTools_ShapeMapHasher > &":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Set(self, theOther)

    def ReSize(self, N: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_ReSize(self, N)

    def Add(self, theKey1: "TopoDS_Vertex", theItem: "Draft_VertexInfo") -> "Standard_Integer":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Add(self, theKey1, theItem)

    def Contains(self, theKey1: "TopoDS_Vertex") -> "Standard_Boolean":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Contains(self, theKey1)

    def Substitute(self, theIndex: "Standard_Integer const", theKey1: "TopoDS_Vertex", theItem: "Draft_VertexInfo") -> "void":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Substitute(self, theIndex, theKey1, theItem)

    def Swap(self, theIndex1: "Standard_Integer const", theIndex2: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Swap(self, theIndex1, theIndex2)

    def RemoveLast(self) -> "void":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_RemoveLast(self)

    def RemoveFromIndex(self, theIndex: "Standard_Integer const") -> "void":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_RemoveFromIndex(self, theIndex)

    def RemoveKey(self, theKey1: "TopoDS_Vertex") -> "void":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_RemoveKey(self, theKey1)

    def FindKey(self, theIndex: "Standard_Integer const") -> "TopoDS_Vertex const &":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_FindKey(self, theIndex)

    def FindFromIndex(self, theIndex: "Standard_Integer const") -> "Draft_VertexInfo const &":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_FindFromIndex(self, theIndex)

    def ChangeFromIndex(self, theIndex: "Standard_Integer const") -> "Draft_VertexInfo &":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_ChangeFromIndex(self, theIndex)

    def __call__(self, *args) -> "Draft_VertexInfo &":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo___call__(self, *args)

    def FindIndex(self, theKey1: "TopoDS_Vertex") -> "Standard_Integer":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_FindIndex(self, theKey1)

    def ChangeFromKey(self, theKey1: "TopoDS_Vertex") -> "Draft_VertexInfo &":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_ChangeFromKey(self, theKey1)

    def Seek(self, theKey1: "TopoDS_Vertex") -> "Draft_VertexInfo const *":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_Seek(self, theKey1)

    def ChangeSeek(self, theKey1: "TopoDS_Vertex") -> "Draft_VertexInfo *":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_ChangeSeek(self, theKey1)

    def FindFromKey(self, *args) -> "Standard_Boolean":
        return _Draft.Draft_IndexedDataMapOfVertexVertexInfo_FindFromKey(self, *args)

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

    def Size(self) -> "Standard_Integer":
        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) -> "Standard_Real":
        r"""
        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.

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

        Returns
        -------
        float

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

def draft_Angle(*args) -> "Standard_Real":
    r"""
    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.

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

    Returns
    -------
    float

    """
    return _Draft.draft_Angle(*args)

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"""
        No available documentation.

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

        Parameters
        ----------
        HasNewGeometry: bool

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

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

        Returns
        -------
        opencascade::handle<Geom2d_Curve>

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

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

        Returns
        -------
        opencascade::handle<Geom_Curve>

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

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

        Returns
        -------
        opencascade::handle<Geom2d_Curve>

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

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

        Returns
        -------
        TopoDS_Face

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

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

        Returns
        -------
        opencascade::handle<Geom2d_Curve>

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

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

        Returns
        -------
        opencascade::handle<Geom_Curve>

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

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

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

        Returns
        -------
        bool

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

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

        Returns
        -------
        bool

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

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

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

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

        Returns
        -------
        TopoDS_Face

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

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

        Returns
        -------
        TopoDS_Face

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

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

        Returns
        -------
        opencascade::handle<Geom2d_Curve>

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

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

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

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

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

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

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

        Returns
        -------
        float

        """
        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"""
        No available documentation.

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

        Parameters
        ----------
        S: Geom_Surface
        HasNewGeometry: bool

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

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

        Returns
        -------
        opencascade::handle<Geom_Curve>

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

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

        Returns
        -------
        opencascade::handle<Geom_Surface>

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

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

        Returns
        -------
        opencascade::handle<Geom_Curve>

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

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

        Returns
        -------
        TopoDS_Face

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

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

        Returns
        -------
        opencascade::handle<Geom_Surface>

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

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

        Returns
        -------
        bool

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

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

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

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

        Returns
        -------
        TopoDS_Face

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

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

        Returns
        -------
        TopoDS_Face

        """
        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"""
        No available documentation.

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

        Returns
        -------
        None

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

    def Add(self, *args) -> "Standard_Boolean":
        r"""
        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.

        Parameters
        ----------
        F: TopoDS_Face
        Direction: gp_Dir
        Angle: float
        NeutralPlane: gp_Pln
        Flag: bool,optional
        	default value is Standard_True

        Returns
        -------
        bool

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

    def Clear(self, *args) -> "void":
        r"""
        Resets on the same shape.

        Returns
        -------
        None

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

    def ConnectedFaces(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns all the faces which have been added together with the face <f>.

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

        Returns
        -------
        TopTools_ListOfShape

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

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

        Returns
        -------
        Draft_ErrorStatus

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

    def Init(self, *args) -> "void":
        r"""
        Changes the basis shape and resets.

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

        Returns
        -------
        None

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

    def IsDone(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if perform has been succesfully called. otherwise more information can be obtained using the methods error() and problematicshape().

        Returns
        -------
        bool

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

    def ModifiedFaces(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns all the faces on which a modification has been given.

        Returns
        -------
        TopTools_ListOfShape

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

    def Perform(self, *args) -> "void":
        r"""
        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.

        Returns
        -------
        None

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

    def ProblematicShape(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the shape (face, edge or vertex) on which an error occured.

        Returns
        -------
        TopoDS_Shape

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

    def Remove(self, *args) -> "void":
        r"""
        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.

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

        Returns
        -------
        None

        """
        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"""
        No available documentation.

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

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

        Returns
        -------
        gp_Pnt

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

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

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

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

        Returns
        -------
        TopoDS_Edge

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

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

        Returns
        -------
        gp_Pnt

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

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

        Returns
        -------
        None

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

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

        Returns
        -------
        bool

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

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

        Returns
        -------
        None

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

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

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

        Returns
        -------
        float

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





