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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




def Handle_ShapeProcess_Context_Create() -> "opencascade::handle< ShapeProcess_Context >":
    return _ShapeProcess.Handle_ShapeProcess_Context_Create()

def Handle_ShapeProcess_Context_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeProcess_Context >":
    return _ShapeProcess.Handle_ShapeProcess_Context_DownCast(t)

def Handle_ShapeProcess_Context_IsNull(t: "opencascade::handle< ShapeProcess_Context > const &") -> "bool":
    return _ShapeProcess.Handle_ShapeProcess_Context_IsNull(t)

def Handle_ShapeProcess_Operator_Create() -> "opencascade::handle< ShapeProcess_Operator >":
    return _ShapeProcess.Handle_ShapeProcess_Operator_Create()

def Handle_ShapeProcess_Operator_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeProcess_Operator >":
    return _ShapeProcess.Handle_ShapeProcess_Operator_DownCast(t)

def Handle_ShapeProcess_Operator_IsNull(t: "opencascade::handle< ShapeProcess_Operator > const &") -> "bool":
    return _ShapeProcess.Handle_ShapeProcess_Operator_IsNull(t)

def Handle_ShapeProcess_ShapeContext_Create() -> "opencascade::handle< ShapeProcess_ShapeContext >":
    return _ShapeProcess.Handle_ShapeProcess_ShapeContext_Create()

def Handle_ShapeProcess_ShapeContext_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeProcess_ShapeContext >":
    return _ShapeProcess.Handle_ShapeProcess_ShapeContext_DownCast(t)

def Handle_ShapeProcess_ShapeContext_IsNull(t: "opencascade::handle< ShapeProcess_ShapeContext > const &") -> "bool":
    return _ShapeProcess.Handle_ShapeProcess_ShapeContext_IsNull(t)

def Handle_ShapeProcess_UOperator_Create() -> "opencascade::handle< ShapeProcess_UOperator >":
    return _ShapeProcess.Handle_ShapeProcess_UOperator_Create()

def Handle_ShapeProcess_UOperator_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeProcess_UOperator >":
    return _ShapeProcess.Handle_ShapeProcess_UOperator_DownCast(t)

def Handle_ShapeProcess_UOperator_IsNull(t: "opencascade::handle< ShapeProcess_UOperator > const &") -> "bool":
    return _ShapeProcess.Handle_ShapeProcess_UOperator_IsNull(t)
class shapeprocess(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def FindOperator(*args) -> "Standard_Boolean":
        r"""
        Finds operator by its name.

        Parameters
        ----------
        name: char *
        op: ShapeProcess_Operator

        Returns
        -------
        bool

        """
        return _ShapeProcess.shapeprocess_FindOperator(*args)

    @staticmethod
    def Perform(*args) -> "Standard_Boolean":
        r"""
        Performs a specified sequence of operators on context resource file and other data should be already loaded to context (including description of sequence seq).

        Parameters
        ----------
        context: ShapeProcess_Context
        seq: char *
        theProgress: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        bool

        """
        return _ShapeProcess.shapeprocess_Perform(*args)

    @staticmethod
    def RegisterOperator(*args) -> "Standard_Boolean":
        r"""
        Registers operator to make it visible for performer.

        Parameters
        ----------
        name: char *
        op: ShapeProcess_Operator

        Returns
        -------
        bool

        """
        return _ShapeProcess.shapeprocess_RegisterOperator(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _ShapeProcess.shapeprocess_swiginit(self, _ShapeProcess.new_shapeprocess())
    __swig_destroy__ = _ShapeProcess.delete_shapeprocess

# Register shapeprocess in _ShapeProcess:
_ShapeProcess.shapeprocess_swigregister(shapeprocess)

def shapeprocess_FindOperator(*args) -> "Standard_Boolean":
    r"""
    Finds operator by its name.

    Parameters
    ----------
    name: char *
    op: ShapeProcess_Operator

    Returns
    -------
    bool

    """
    return _ShapeProcess.shapeprocess_FindOperator(*args)

def shapeprocess_Perform(*args) -> "Standard_Boolean":
    r"""
    Performs a specified sequence of operators on context resource file and other data should be already loaded to context (including description of sequence seq).

    Parameters
    ----------
    context: ShapeProcess_Context
    seq: char *
    theProgress: Message_ProgressRange,optional
    	default value is Message_ProgressRange()

    Returns
    -------
    bool

    """
    return _ShapeProcess.shapeprocess_Perform(*args)

def shapeprocess_RegisterOperator(*args) -> "Standard_Boolean":
    r"""
    Registers operator to make it visible for performer.

    Parameters
    ----------
    name: char *
    op: ShapeProcess_Operator

    Returns
    -------
    bool

    """
    return _ShapeProcess.shapeprocess_RegisterOperator(*args)

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

    def __init__(self, *args):
        r"""
        Creates an empty tool.

        Returns
        -------
        None
        Creates a new tool and initialises by name of resource file and (if specified) starting scope calls method init().

        Parameters
        ----------
        file: char *
        scope: char *,optional
        	default value is 

        Returns
        -------
        None

        """
        _ShapeProcess.ShapeProcess_Context_swiginit(self, _ShapeProcess.new_ShapeProcess_Context(*args))

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

        Parameters
        ----------
        param: char *
        def: bool

        Returns
        -------
        bool

        """
        return _ShapeProcess.ShapeProcess_Context_BooleanVal(self, *args)

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

        Parameters
        ----------
        param: char *

        Returns
        -------
        val: bool

        """
        return _ShapeProcess.ShapeProcess_Context_GetBoolean(self, *args)

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

        Parameters
        ----------
        param: char *

        Returns
        -------
        val: int

        """
        return _ShapeProcess.ShapeProcess_Context_GetInteger(self, *args)

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

        Parameters
        ----------
        param: char *

        Returns
        -------
        val: float

        """
        return _ShapeProcess.ShapeProcess_Context_GetReal(self, *args)

    def GetString(self, *args) -> "Standard_Boolean":
        r"""
        Get value of parameter as being of specific type returns false if parameter is not defined or has a wrong type.

        Parameters
        ----------
        param: char *
        val: TCollection_AsciiString

        Returns
        -------
        bool

        """
        return _ShapeProcess.ShapeProcess_Context_GetString(self, *args)

    def Init(self, *args) -> "Standard_Boolean":
        r"""
        Initialises a tool by loading resource file and (if specified) sets starting scope returns false if resource file not found.

        Parameters
        ----------
        file: char *
        scope: char *,optional
        	default value is 

        Returns
        -------
        bool

        """
        return _ShapeProcess.ShapeProcess_Context_Init(self, *args)

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

        Parameters
        ----------
        param: char *
        def: int

        Returns
        -------
        int

        """
        return _ShapeProcess.ShapeProcess_Context_IntegerVal(self, *args)

    def IsParamSet(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if parameter is defined in the resource file.

        Parameters
        ----------
        param: char *

        Returns
        -------
        bool

        """
        return _ShapeProcess.ShapeProcess_Context_IsParamSet(self, *args)

    def LoadResourceManager(self, *args) -> "opencascade::handle< Resource_Manager >":
        r"""
        Loading resource_manager object if this object not equal internal static resource_manager object or internal static resource_manager object is null.

        Parameters
        ----------
        file: char *

        Returns
        -------
        opencascade::handle<Resource_Manager>

        """
        return _ShapeProcess.ShapeProcess_Context_LoadResourceManager(self, *args)

    def Messenger(self, *args) -> "opencascade::handle< Message_Messenger >":
        r"""
        Returns messenger used for outputting messages.

        Returns
        -------
        opencascade::handle<Message_Messenger>

        """
        return _ShapeProcess.ShapeProcess_Context_Messenger(self, *args)

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

        Parameters
        ----------
        param: char *
        def: float

        Returns
        -------
        float

        """
        return _ShapeProcess.ShapeProcess_Context_RealVal(self, *args)

    def ResourceManager(self, *args) -> "opencascade::handle< Resource_Manager > const &":
        r"""
        Returns internal resource_manager object.

        Returns
        -------
        opencascade::handle<Resource_Manager>

        """
        return _ShapeProcess.ShapeProcess_Context_ResourceManager(self, *args)

    def SetMessenger(self, *args) -> "void":
        r"""
        Sets messenger used for outputting messages.

        Parameters
        ----------
        messenger: Message_Messenger

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_Context_SetMessenger(self, *args)

    def SetScope(self, *args) -> "void":
        r"""
        Set a new (sub)scope.

        Parameters
        ----------
        scope: char *

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_Context_SetScope(self, *args)

    def SetTraceLevel(self, *args) -> "void":
        r"""
        Sets trace level used for outputting messages - 0: no trace at all - 1: errors - 2: errors and warnings - 3: all messages default is 1 : errors traced.

        Parameters
        ----------
        tracelev: int

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_Context_SetTraceLevel(self, *args)

    def StringVal(self, *args) -> "char const *":
        r"""
        Get value of parameter as being of specific type if parameter is not defined or does not have expected type, returns default value as specified.

        Parameters
        ----------
        param: char *
        def: char *

        Returns
        -------
        char *

        """
        return _ShapeProcess.ShapeProcess_Context_StringVal(self, *args)

    def TraceLevel(self, *args) -> "Standard_Integer":
        r"""
        Returns trace level used for outputting messages.

        Returns
        -------
        int

        """
        return _ShapeProcess.ShapeProcess_Context_TraceLevel(self, *args)

    def UnSetScope(self, *args) -> "void":
        r"""
        Go out of current scope.

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_Context_UnSetScope(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeProcess.delete_ShapeProcess_Context

# Register ShapeProcess_Context in _ShapeProcess:
_ShapeProcess.ShapeProcess_Context_swigregister(ShapeProcess_Context)

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

    @staticmethod
    def ApplyModifier(*args) -> "TopoDS_Shape":
        r"""
        Applies breptools_modification to a shape, taking into account sharing of components of compounds. if themutableinput vat is set to true then imput shape s can be modified during the modification process.

        Parameters
        ----------
        S: TopoDS_Shape
        context: ShapeProcess_ShapeContext
        M: BRepTools_Modification
        map: TopTools_DataMapOfShapeShape
        msg: ShapeExtend_MsgRegistrator,optional
        	default value is 0
        theMutableInput: bool,optional
        	default value is Standard_False

        Returns
        -------
        TopoDS_Shape

        """
        return _ShapeProcess.ShapeProcess_OperLibrary_ApplyModifier(*args)

    @staticmethod
    def Init(*args) -> "void":
        r"""
        Registers all the operators.

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_OperLibrary_Init(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _ShapeProcess.ShapeProcess_OperLibrary_swiginit(self, _ShapeProcess.new_ShapeProcess_OperLibrary())
    __swig_destroy__ = _ShapeProcess.delete_ShapeProcess_OperLibrary

# Register ShapeProcess_OperLibrary in _ShapeProcess:
_ShapeProcess.ShapeProcess_OperLibrary_swigregister(ShapeProcess_OperLibrary)

def ShapeProcess_OperLibrary_ApplyModifier(*args) -> "TopoDS_Shape":
    r"""
    Applies breptools_modification to a shape, taking into account sharing of components of compounds. if themutableinput vat is set to true then imput shape s can be modified during the modification process.

    Parameters
    ----------
    S: TopoDS_Shape
    context: ShapeProcess_ShapeContext
    M: BRepTools_Modification
    map: TopTools_DataMapOfShapeShape
    msg: ShapeExtend_MsgRegistrator,optional
    	default value is 0
    theMutableInput: bool,optional
    	default value is Standard_False

    Returns
    -------
    TopoDS_Shape

    """
    return _ShapeProcess.ShapeProcess_OperLibrary_ApplyModifier(*args)

def ShapeProcess_OperLibrary_Init(*args) -> "void":
    r"""
    Registers all the operators.

    Returns
    -------
    None

    """
    return _ShapeProcess.ShapeProcess_OperLibrary_Init(*args)

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

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

    def Perform(self, *args) -> "Standard_Boolean":
        r"""
        Performs operation and eventually records changes in the context.

        Parameters
        ----------
        context: ShapeProcess_Context
        theProgress: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        bool

        """
        return _ShapeProcess.ShapeProcess_Operator_Perform(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeProcess.delete_ShapeProcess_Operator

# Register ShapeProcess_Operator in _ShapeProcess:
_ShapeProcess.ShapeProcess_Operator_swigregister(ShapeProcess_Operator)

class ShapeProcess_ShapeContext(ShapeProcess_Context):
    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
        ----------
        file: char *
        seq: char *,optional
        	default value is 

        Returns
        -------
        None
        Initializes a tool by resource file and shape to be processed.

        Parameters
        ----------
        S: TopoDS_Shape
        file: char *
        seq: char *,optional
        	default value is 

        Returns
        -------
        None

        """
        _ShapeProcess.ShapeProcess_ShapeContext_swiginit(self, _ShapeProcess.new_ShapeProcess_ShapeContext(*args))

    def AddMessage(self, *args) -> "void":
        r"""
        Record a message for shape s shape s should be one of subshapes of original shape (or whole one), but not one of intermediate shapes records only if message() is not null.

        Parameters
        ----------
        S: TopoDS_Shape
        msg: Message_Msg
        gravity: Message_Gravity,optional
        	default value is Message_Warning

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_AddMessage(self, *args)

    def ContinuityVal(self, *args) -> "GeomAbs_Shape":
        r"""
        Get value of parameter as being of the type geomabs_shape if parameter is not defined or does not have expected type, returns default value as specified.

        Parameters
        ----------
        param: char *
        def: GeomAbs_Shape

        Returns
        -------
        GeomAbs_Shape

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_ContinuityVal(self, *args)

    def GetContinuity(self, *args) -> "Standard_Boolean":
        r"""
        Get value of parameter as being of the type geomabs_shape returns false if parameter is not defined or has a wrong type.

        Parameters
        ----------
        param: char *
        val: GeomAbs_Shape

        Returns
        -------
        bool

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_GetContinuity(self, *args)

    def GetDetalisation(self, *args) -> "TopAbs_ShapeEnum":
        r"""
        Set and get value for detalisation level only shapes of types from topods_compound and until specified detalisation level will be recorded in maps to cancel mapping, use topabs_shape to force full mapping, use topabs_vertex the default level is topabs_face.

        Returns
        -------
        TopAbs_ShapeEnum

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_GetDetalisation(self, *args)

    def Init(self, *args) -> "void":
        r"""
        Initializes tool by a new shape and clears all results.

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

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_Init(self, *args)

    def IsNonManifold(self, *args) -> "Standard_Boolean":
        r"""
        Get nonmanifold flag.

        Returns
        -------
        bool

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_IsNonManifold(self, *args)

    def Map(self, *args) -> "TopTools_DataMapOfShapeShape const &":
        r"""
        Returns map of replacements shape -> shape this map is not recursive.

        Returns
        -------
        TopTools_DataMapOfShapeShape

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_Map(self, *args)

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

        Returns
        -------
        opencascade::handle<ShapeExtend_MsgRegistrator>

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_Messages(self, *args)

    def PrintStatistics(self, *args) -> "void":
        r"""
        Prints statistics on shape processing onto the current messenger.

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_PrintStatistics(self, *args)

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

        Parameters
        ----------
        repl: TopTools_DataMapOfShapeShape
        msg: ShapeExtend_MsgRegistrator,optional
        	default value is 0

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

        Parameters
        ----------
        repl: ShapeBuild_ReShape
        msg: ShapeExtend_MsgRegistrator

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

        Parameters
        ----------
        repl: ShapeBuild_ReShape

        Returns
        -------
        None
        Records modifications and resets result accordingly note: modification of resulting shape should be explicitly defined in the maps along with modifications of subshapes //! in the last function, sh is the shape on which modifier was run. it can be different from the whole shape, but in that case result as a whole should be reset later either by call to setresult(), or by another call to recordmodification() which contains mapping of current result to a new one explicitly.

        Parameters
        ----------
        sh: TopoDS_Shape
        repl: BRepTools_Modifier
        msg: ShapeExtend_MsgRegistrator,optional
        	default value is 0

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_RecordModification(self, *args)

    def Result(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns current result.

        Returns
        -------
        TopoDS_Shape

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_Result(self, *args)

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

        Parameters
        ----------
        level: TopAbs_ShapeEnum

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_SetDetalisation(self, *args)

    def SetNonManifold(self, *args) -> "void":
        r"""
        Set nonmanifold flag.

        Parameters
        ----------
        theNonManifold: bool

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_SetNonManifold(self, *args)

    def SetResult(self, *args) -> "void":
        r"""
        Sets a new result shape note: this method should be used very carefully to keep consistency of modifications it is recommended to use recordmodification() methods with explicit definition of mapping from current result to a new one.

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

        Returns
        -------
        None

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_SetResult(self, *args)

    def Shape(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns shape being processed.

        Returns
        -------
        TopoDS_Shape

        """
        return _ShapeProcess.ShapeProcess_ShapeContext_Shape(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeProcess.delete_ShapeProcess_ShapeContext

# Register ShapeProcess_ShapeContext in _ShapeProcess:
_ShapeProcess.ShapeProcess_ShapeContext_swigregister(ShapeProcess_ShapeContext)

class ShapeProcess_UOperator(ShapeProcess_Operator):
    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"""
        Creates operator with implementation defined as operfunc (static function).

        Parameters
        ----------
        func: ShapeProcess_OperFunc

        Returns
        -------
        None

        """
        _ShapeProcess.ShapeProcess_UOperator_swiginit(self, _ShapeProcess.new_ShapeProcess_UOperator(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeProcess.delete_ShapeProcess_UOperator

# Register ShapeProcess_UOperator in _ShapeProcess:
_ShapeProcess.ShapeProcess_UOperator_swigregister(ShapeProcess_UOperator)





