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

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _BOPAlgo.SWIG_PyInstanceMethod_New
_swig_new_static_method = _BOPAlgo.SWIG_PyStaticMethod_New

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__ = _BOPAlgo.delete_SwigPyIterator
    value = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_value)
    incr = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_incr)
    decr = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_decr)
    distance = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_distance)
    equal = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_equal)
    copy = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_copy)
    next = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_next)
    __next__ = _swig_new_instance_method(_BOPAlgo.SwigPyIterator___next__)
    previous = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_previous)
    advance = _swig_new_instance_method(_BOPAlgo.SwigPyIterator_advance)
    __eq__ = _swig_new_instance_method(_BOPAlgo.SwigPyIterator___eq__)
    __ne__ = _swig_new_instance_method(_BOPAlgo.SwigPyIterator___ne__)
    __iadd__ = _swig_new_instance_method(_BOPAlgo.SwigPyIterator___iadd__)
    __isub__ = _swig_new_instance_method(_BOPAlgo.SwigPyIterator___isub__)
    __add__ = _swig_new_instance_method(_BOPAlgo.SwigPyIterator___add__)
    __sub__ = _swig_new_instance_method(_BOPAlgo.SwigPyIterator___sub__)
    def __iter__(self):
        return self

# Register SwigPyIterator in _BOPAlgo:
_BOPAlgo.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


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.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.TopTools
import OCC.Core.TCollection
import OCC.Core.IntTools
import OCC.Core.BRepAdaptor
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.TColStd
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.math
import OCC.Core.GeomAdaptor
import OCC.Core.Geom2dAdaptor
import OCC.Core.Bnd
import OCC.Core.BVH
import OCC.Core.Geom2dHatch
import OCC.Core.IntRes2d
import OCC.Core.HatchGen
import OCC.Core.Geom2dInt
import OCC.Core.IntCurve
import OCC.Core.Extrema
import OCC.Core.Intf
import OCC.Core.GeomAPI
import OCC.Core.Approx
import OCC.Core.AppCont
import OCC.Core.AppParCurves
import OCC.Core.BRepClass3d
import OCC.Core.IntCurveSurface
import OCC.Core.IntSurf
import OCC.Core.IntCurvesFace
import OCC.Core.IntPatch
import OCC.Core.IntAna
import OCC.Core.GeomInt
import OCC.Core.IntImp
import OCC.Core.ApproxInt
import OCC.Core.BOPDS
import OCC.Core.BRepTools
import OCC.Core.BRep
import OCC.Core.Poly
import OCC.Core.TShort
import OCC.Core.BOPTools
BOPAlgo_CheckUnknown = _BOPAlgo.BOPAlgo_CheckUnknown
BOPAlgo_BadType = _BOPAlgo.BOPAlgo_BadType
BOPAlgo_SelfIntersect = _BOPAlgo.BOPAlgo_SelfIntersect
BOPAlgo_TooSmallEdge = _BOPAlgo.BOPAlgo_TooSmallEdge
BOPAlgo_NonRecoverableFace = _BOPAlgo.BOPAlgo_NonRecoverableFace
BOPAlgo_IncompatibilityOfVertex = _BOPAlgo.BOPAlgo_IncompatibilityOfVertex
BOPAlgo_IncompatibilityOfEdge = _BOPAlgo.BOPAlgo_IncompatibilityOfEdge
BOPAlgo_IncompatibilityOfFace = _BOPAlgo.BOPAlgo_IncompatibilityOfFace
BOPAlgo_OperationAborted = _BOPAlgo.BOPAlgo_OperationAborted
BOPAlgo_GeomAbs_C0 = _BOPAlgo.BOPAlgo_GeomAbs_C0
BOPAlgo_InvalidCurveOnSurface = _BOPAlgo.BOPAlgo_InvalidCurveOnSurface
BOPAlgo_NotValid = _BOPAlgo.BOPAlgo_NotValid
BOPAlgo_COMMON = _BOPAlgo.BOPAlgo_COMMON
BOPAlgo_FUSE = _BOPAlgo.BOPAlgo_FUSE
BOPAlgo_CUT = _BOPAlgo.BOPAlgo_CUT
BOPAlgo_CUT21 = _BOPAlgo.BOPAlgo_CUT21
BOPAlgo_SECTION = _BOPAlgo.BOPAlgo_SECTION
BOPAlgo_UNKNOWN = _BOPAlgo.BOPAlgo_UNKNOWN
BOPAlgo_GlueOff = _BOPAlgo.BOPAlgo_GlueOff
BOPAlgo_GlueShift = _BOPAlgo.BOPAlgo_GlueShift
BOPAlgo_GlueFull = _BOPAlgo.BOPAlgo_GlueFull
class BOPAlgo_ListOfCheckResult(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    begin = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_begin)
    end = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_end)
    cbegin = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_cbegin)
    cend = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_cend)

    def __init__(self, *args):
        _BOPAlgo.BOPAlgo_ListOfCheckResult_swiginit(self, _BOPAlgo.new_BOPAlgo_ListOfCheckResult(*args))
    Size = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Size)
    Assign = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Assign)
    Set = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Set)
    Clear = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Clear)
    First = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_First)
    Last = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Last)
    Append = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Append)
    Prepend = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Prepend)
    RemoveFirst = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_RemoveFirst)
    Remove = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Remove)
    InsertBefore = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_InsertBefore)
    InsertAfter = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_InsertAfter)
    Reverse = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ListOfCheckResult_Reverse)
    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_ListOfCheckResult

# Register BOPAlgo_ListOfCheckResult in _BOPAlgo:
_BOPAlgo.BOPAlgo_ListOfCheckResult_swigregister(BOPAlgo_ListOfCheckResult)

class BOPAlgo_CheckResult(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddFaultyShape1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_AddFaultyShape1)
    AddFaultyShape2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_AddFaultyShape2)

    def __init__(self, *args):
        r"""
        * empty constructor
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_CheckResult_swiginit(self, _BOPAlgo.new_BOPAlgo_CheckResult(*args))
    GetCheckStatus = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetCheckStatus)
    GetFaultyShapes1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetFaultyShapes1)
    GetFaultyShapes2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetFaultyShapes2)
    GetMaxDistance1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetMaxDistance1)
    GetMaxDistance2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetMaxDistance2)
    GetMaxParameter1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetMaxParameter1)
    GetMaxParameter2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetMaxParameter2)
    GetShape1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetShape1)
    GetShape2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_GetShape2)
    SetCheckStatus = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_SetCheckStatus)
    SetMaxDistance1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_SetMaxDistance1)
    SetMaxDistance2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_SetMaxDistance2)
    SetMaxParameter1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_SetMaxParameter1)
    SetMaxParameter2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_SetMaxParameter2)
    SetShape1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_SetShape1)
    SetShape2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckResult_SetShape2)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_CheckResult

# Register BOPAlgo_CheckResult in _BOPAlgo:
_BOPAlgo.BOPAlgo_CheckResult_swigregister(BOPAlgo_CheckResult)

class BOPAlgo_Options(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddError = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_AddError)
    AddWarning = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_AddWarning)
    Allocator = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_Allocator)

    def __init__(self, *args):
        r"""
        * Empty constructor
        	:rtype: None* Constructor with allocator
        	:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_Options_swiginit(self, _BOPAlgo.new_BOPAlgo_Options(*args))
    Clear = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_Clear)
    ClearWarnings = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_ClearWarnings)
    DumpErrorsToString = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_DumpErrorsToString)
    DumpWarningsToString = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_DumpWarningsToString)
    FuzzyValue = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_FuzzyValue)
    GetParallelMode = _swig_new_static_method(_BOPAlgo.BOPAlgo_Options_GetParallelMode)
    GetReport = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_GetReport)
    HasError = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_HasError)
    HasErrors = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_HasErrors)
    HasWarning = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_HasWarning)
    HasWarnings = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_HasWarnings)
    RunParallel = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_RunParallel)
    SetFuzzyValue = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_SetFuzzyValue)
    SetParallelMode = _swig_new_static_method(_BOPAlgo.BOPAlgo_Options_SetParallelMode)
    SetProgressIndicator = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_SetProgressIndicator)
    SetRunParallel = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_SetRunParallel)
    SetUseOBB = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_SetUseOBB)
    UseOBB = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Options_UseOBB)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_Options

# Register BOPAlgo_Options in _BOPAlgo:
_BOPAlgo.BOPAlgo_Options_swigregister(BOPAlgo_Options)
BOPAlgo_Options_GetParallelMode = _BOPAlgo.BOPAlgo_Options_GetParallelMode
BOPAlgo_Options_SetParallelMode = _BOPAlgo.BOPAlgo_Options_SetParallelMode

class BOPAlgo_SectionAttribute(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Approximation = _swig_new_instance_method(_BOPAlgo.BOPAlgo_SectionAttribute_Approximation)

    def __init__(self, *args):
        r"""
        * Default constructor
        	:rtype: None* Constructor
        	:param theAproximation:
        	:type theAproximation: bool
        	:param thePCurveOnS1:
        	:type thePCurveOnS1: bool
        	:param thePCurveOnS2:
        	:type thePCurveOnS2: bool
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_SectionAttribute_swiginit(self, _BOPAlgo.new_BOPAlgo_SectionAttribute(*args))
    PCurveOnS1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_SectionAttribute_PCurveOnS1)
    PCurveOnS2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_SectionAttribute_PCurveOnS2)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_SectionAttribute

# Register BOPAlgo_SectionAttribute in _BOPAlgo:
_BOPAlgo.BOPAlgo_SectionAttribute_swigregister(BOPAlgo_SectionAttribute)

class BOPAlgo_Tools(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ClassifyFaces = _swig_new_static_method(_BOPAlgo.BOPAlgo_Tools_ClassifyFaces)
    ComputeToleranceOfCB = _swig_new_static_method(_BOPAlgo.BOPAlgo_Tools_ComputeToleranceOfCB)
    EdgesToWires = _swig_new_static_method(_BOPAlgo.BOPAlgo_Tools_EdgesToWires)
    FillInternals = _swig_new_static_method(_BOPAlgo.BOPAlgo_Tools_FillInternals)
    IntersectVertices = _swig_new_static_method(_BOPAlgo.BOPAlgo_Tools_IntersectVertices)
    PerformCommonBlocks = _swig_new_static_method(_BOPAlgo.BOPAlgo_Tools_PerformCommonBlocks)
    TreatCompound = _swig_new_static_method(_BOPAlgo.BOPAlgo_Tools_TreatCompound)
    WiresToFaces = _swig_new_static_method(_BOPAlgo.BOPAlgo_Tools_WiresToFaces)

    __repr__ = _dumps_object


    def __init__(self):
        _BOPAlgo.BOPAlgo_Tools_swiginit(self, _BOPAlgo.new_BOPAlgo_Tools())
    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_Tools

# Register BOPAlgo_Tools in _BOPAlgo:
_BOPAlgo.BOPAlgo_Tools_swigregister(BOPAlgo_Tools)
BOPAlgo_Tools_ClassifyFaces = _BOPAlgo.BOPAlgo_Tools_ClassifyFaces
BOPAlgo_Tools_ComputeToleranceOfCB = _BOPAlgo.BOPAlgo_Tools_ComputeToleranceOfCB
BOPAlgo_Tools_EdgesToWires = _BOPAlgo.BOPAlgo_Tools_EdgesToWires
BOPAlgo_Tools_FillInternals = _BOPAlgo.BOPAlgo_Tools_FillInternals
BOPAlgo_Tools_IntersectVertices = _BOPAlgo.BOPAlgo_Tools_IntersectVertices
BOPAlgo_Tools_PerformCommonBlocks = _BOPAlgo.BOPAlgo_Tools_PerformCommonBlocks
BOPAlgo_Tools_TreatCompound = _BOPAlgo.BOPAlgo_Tools_TreatCompound
BOPAlgo_Tools_WiresToFaces = _BOPAlgo.BOPAlgo_Tools_WiresToFaces

class BOPAlgo_WireEdgeSet(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddShape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireEdgeSet_AddShape)
    AddStartElement = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireEdgeSet_AddStartElement)

    def __init__(self, *args):
        r"""
        :rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_WireEdgeSet_swiginit(self, _BOPAlgo.new_BOPAlgo_WireEdgeSet(*args))
    Clear = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireEdgeSet_Clear)
    Face = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireEdgeSet_Face)
    SetFace = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireEdgeSet_SetFace)
    Shapes = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireEdgeSet_Shapes)
    StartElements = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireEdgeSet_StartElements)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_WireEdgeSet

# Register BOPAlgo_WireEdgeSet in _BOPAlgo:
_BOPAlgo.BOPAlgo_WireEdgeSet_swigregister(BOPAlgo_WireEdgeSet)

class BOPAlgo_Algo(BOPAlgo_Options):
    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
    Perform = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Algo_Perform)

    __repr__ = _dumps_object


# Register BOPAlgo_Algo in _BOPAlgo:
_BOPAlgo.BOPAlgo_Algo_swigregister(BOPAlgo_Algo)

class BOPAlgo_MakeConnected(BOPAlgo_Options):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddArgument = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_AddArgument)
    Arguments = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_Arguments)

    def __init__(self, *args):
        r"""
        * @name Constructor Empty constructor
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_MakeConnected_swiginit(self, _BOPAlgo.new_BOPAlgo_MakeConnected(*args))
    Clear = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_Clear)
    ClearRepetitions = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_ClearRepetitions)
    GetModified = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_GetModified)
    GetOrigins = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_GetOrigins)
    History = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_History)
    MakePeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_MakePeriodic)
    MaterialsOnNegativeSide = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_MaterialsOnNegativeSide)
    MaterialsOnPositiveSide = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_MaterialsOnPositiveSide)
    Perform = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_Perform)
    PeriodicShape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_PeriodicShape)
    PeriodicityTool = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_PeriodicityTool)
    RepeatShape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_RepeatShape)
    SetArguments = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_SetArguments)
    Shape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakeConnected_Shape)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_MakeConnected

# Register BOPAlgo_MakeConnected in _BOPAlgo:
_BOPAlgo.BOPAlgo_MakeConnected_swigregister(BOPAlgo_MakeConnected)

class BOPAlgo_MakePeriodic(BOPAlgo_Options):
    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"""
        * @name Constructor Empty constructor
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_MakePeriodic_swiginit(self, _BOPAlgo.new_BOPAlgo_MakePeriodic(*args))
    Clear = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_Clear)
    ClearRepetitions = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_ClearRepetitions)
    GetTwins = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_GetTwins)
    History = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_History)
    IsInputTrimmed = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_IsInputTrimmed)
    IsInputXTrimmed = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_IsInputXTrimmed)
    IsInputYTrimmed = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_IsInputYTrimmed)
    IsInputZTrimmed = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_IsInputZTrimmed)
    IsPeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_IsPeriodic)
    IsXPeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_IsXPeriodic)
    IsYPeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_IsYPeriodic)
    IsZPeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_IsZPeriodic)
    MakePeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_MakePeriodic)
    MakeXPeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_MakeXPeriodic)
    MakeYPeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_MakeYPeriodic)
    MakeZPeriodic = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_MakeZPeriodic)
    Perform = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_Perform)
    Period = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_Period)
    PeriodFirst = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_PeriodFirst)
    PeriodicityParameters = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_PeriodicityParameters)
    RepeatShape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_RepeatShape)
    RepeatedShape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_RepeatedShape)
    SetPeriodicityParameters = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_SetPeriodicityParameters)
    SetShape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_SetShape)
    SetTrimmed = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_SetTrimmed)
    SetXTrimmed = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_SetXTrimmed)
    SetYTrimmed = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_SetYTrimmed)
    SetZTrimmed = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_SetZTrimmed)
    Shape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_Shape)
    ToDirectionID = _swig_new_static_method(_BOPAlgo.BOPAlgo_MakePeriodic_ToDirectionID)
    XPeriod = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_XPeriod)
    XPeriodFirst = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_XPeriodFirst)
    XRepeat = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_XRepeat)
    YPeriod = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_YPeriod)
    YPeriodFirst = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_YPeriodFirst)
    YRepeat = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_YRepeat)
    ZPeriod = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_ZPeriod)
    ZPeriodFirst = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_ZPeriodFirst)
    ZRepeat = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakePeriodic_ZRepeat)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_MakePeriodic

# Register BOPAlgo_MakePeriodic in _BOPAlgo:
_BOPAlgo.BOPAlgo_MakePeriodic_swigregister(BOPAlgo_MakePeriodic)
BOPAlgo_MakePeriodic_ToDirectionID = _BOPAlgo.BOPAlgo_MakePeriodic_ToDirectionID

class BOPAlgo_ArgumentAnalyzer(BOPAlgo_Algo):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    GetArgumentTypeMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetArgumentTypeMode)
    SetArgumentTypeMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetArgumentTypeMode)

    def __init__(self, *args):
        r"""
        * empty constructor
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_ArgumentAnalyzer_swiginit(self, _BOPAlgo.new_BOPAlgo_ArgumentAnalyzer(*args))
    GetContinuityMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetContinuityMode)
    SetContinuityMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetContinuityMode)
    GetCurveOnSurfaceMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetCurveOnSurfaceMode)
    SetCurveOnSurfaceMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetCurveOnSurfaceMode)
    GetCheckResult = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetCheckResult)
    GetShape1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetShape1)
    GetShape2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetShape2)
    HasFaulty = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_HasFaulty)
    GetMergeEdgeMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetMergeEdgeMode)
    SetMergeEdgeMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetMergeEdgeMode)
    GetMergeVertexMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetMergeVertexMode)
    SetMergeVertexMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetMergeVertexMode)
    OperationType = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_OperationType)
    GetRebuildFaceMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetRebuildFaceMode)
    SetRebuildFaceMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetRebuildFaceMode)
    GetSelfInterMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetSelfInterMode)
    SetSelfInterMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetSelfInterMode)
    SetShape1 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetShape1)
    SetShape2 = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetShape2)
    GetSmallEdgeMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetSmallEdgeMode)
    SetSmallEdgeMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetSmallEdgeMode)
    GetStopOnFirstFaulty = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetStopOnFirstFaulty)
    SetStopOnFirstFaulty = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetStopOnFirstFaulty)
    GetTangentMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_GetTangentMode)
    SetTangentMode = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ArgumentAnalyzer_SetTangentMode)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_ArgumentAnalyzer

# Register BOPAlgo_ArgumentAnalyzer in _BOPAlgo:
_BOPAlgo.BOPAlgo_ArgumentAnalyzer_swigregister(BOPAlgo_ArgumentAnalyzer)

class BOPAlgo_BuilderArea(BOPAlgo_Algo):
    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
    Areas = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderArea_Areas)
    IsAvoidInternalShapes = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderArea_IsAvoidInternalShapes)
    Loops = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderArea_Loops)
    SetAvoidInternalShapes = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderArea_SetAvoidInternalShapes)
    SetContext = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderArea_SetContext)
    SetShapes = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderArea_SetShapes)
    Shapes = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderArea_Shapes)

    __repr__ = _dumps_object


# Register BOPAlgo_BuilderArea in _BOPAlgo:
_BOPAlgo.BOPAlgo_BuilderArea_swigregister(BOPAlgo_BuilderArea)

class BOPAlgo_BuilderShape(BOPAlgo_Algo):
    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
    Generated = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_Generated)
    HasDeleted = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_HasDeleted)
    HasGenerated = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_HasGenerated)
    HasHistory = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_HasHistory)
    HasModified = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_HasModified)
    History = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_History)
    IsDeleted = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_IsDeleted)
    Modified = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_Modified)
    SetToFillHistory = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_SetToFillHistory)
    Shape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderShape_Shape)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_BuilderShape

# Register BOPAlgo_BuilderShape in _BOPAlgo:
_BOPAlgo.BOPAlgo_BuilderShape_swigregister(BOPAlgo_BuilderShape)

class BOPAlgo_PaveFiller(BOPAlgo_Algo):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddArgument = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_AddArgument)
    Arguments = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_Arguments)

    def __init__(self, *args):
        r"""
        :rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_PaveFiller_swiginit(self, _BOPAlgo.new_BOPAlgo_PaveFiller(*args))
    Context = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_Context)
    DS = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_DS)
    Glue = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_Glue)
    IsAvoidBuildPCurve = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_IsAvoidBuildPCurve)
    NonDestructive = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_NonDestructive)
    PDS = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_PDS)
    SetArguments = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_SetArguments)
    SetAvoidBuildPCurve = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_SetAvoidBuildPCurve)
    SetGlue = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_SetGlue)
    SetNonDestructive = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_SetNonDestructive)
    SetSectionAttribute = _swig_new_instance_method(_BOPAlgo.BOPAlgo_PaveFiller_SetSectionAttribute)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_PaveFiller

# Register BOPAlgo_PaveFiller in _BOPAlgo:
_BOPAlgo.BOPAlgo_PaveFiller_swigregister(BOPAlgo_PaveFiller)

class BOPAlgo_ShellSplitter(BOPAlgo_Algo):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddStartElement = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ShellSplitter_AddStartElement)

    def __init__(self, *args):
        r"""
        * empty constructor
        	:rtype: None* constructor
        	:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_ShellSplitter_swiginit(self, _BOPAlgo.new_BOPAlgo_ShellSplitter(*args))
    Shells = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ShellSplitter_Shells)
    SplitBlock = _swig_new_static_method(_BOPAlgo.BOPAlgo_ShellSplitter_SplitBlock)
    StartElements = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ShellSplitter_StartElements)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_ShellSplitter

# Register BOPAlgo_ShellSplitter in _BOPAlgo:
_BOPAlgo.BOPAlgo_ShellSplitter_swigregister(BOPAlgo_ShellSplitter)
BOPAlgo_ShellSplitter_SplitBlock = _BOPAlgo.BOPAlgo_ShellSplitter_SplitBlock

class BOPAlgo_WireSplitter(BOPAlgo_Algo):
    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"""
        :rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_WireSplitter_swiginit(self, _BOPAlgo.new_BOPAlgo_WireSplitter(*args))
    Context = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireSplitter_Context)
    MakeWire = _swig_new_static_method(_BOPAlgo.BOPAlgo_WireSplitter_MakeWire)
    SetContext = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireSplitter_SetContext)
    SetWES = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireSplitter_SetWES)
    SplitBlock = _swig_new_static_method(_BOPAlgo.BOPAlgo_WireSplitter_SplitBlock)
    WES = _swig_new_instance_method(_BOPAlgo.BOPAlgo_WireSplitter_WES)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_WireSplitter

# Register BOPAlgo_WireSplitter in _BOPAlgo:
_BOPAlgo.BOPAlgo_WireSplitter_swigregister(BOPAlgo_WireSplitter)
BOPAlgo_WireSplitter_MakeWire = _BOPAlgo.BOPAlgo_WireSplitter_MakeWire
BOPAlgo_WireSplitter_SplitBlock = _BOPAlgo.BOPAlgo_WireSplitter_SplitBlock

class BOPAlgo_Builder(BOPAlgo_BuilderShape):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddArgument = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_AddArgument)
    Arguments = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_Arguments)

    def __init__(self, *args):
        r"""
        * Empty constructor.
        	:rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_Builder_swiginit(self, _BOPAlgo.new_BOPAlgo_Builder(*args))
    BuildBOP = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_BuildBOP)
    CheckInverted = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_CheckInverted)
    Clear = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_Clear)
    Context = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_Context)
    Glue = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_Glue)
    Images = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_Images)
    NonDestructive = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_NonDestructive)
    Origins = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_Origins)
    PDS = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_PDS)
    PPaveFiller = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_PPaveFiller)
    PerformWithFiller = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_PerformWithFiller)
    SetArguments = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_SetArguments)
    SetCheckInverted = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_SetCheckInverted)
    SetGlue = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_SetGlue)
    SetNonDestructive = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_SetNonDestructive)
    ShapesSD = _swig_new_instance_method(_BOPAlgo.BOPAlgo_Builder_ShapesSD)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_Builder

# Register BOPAlgo_Builder in _BOPAlgo:
_BOPAlgo.BOPAlgo_Builder_swigregister(BOPAlgo_Builder)

class BOPAlgo_BuilderFace(BOPAlgo_BuilderArea):
    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"""
        :rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_BuilderFace_swiginit(self, _BOPAlgo.new_BOPAlgo_BuilderFace(*args))
    Face = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderFace_Face)
    Orientation = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderFace_Orientation)
    SetFace = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderFace_SetFace)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_BuilderFace

# Register BOPAlgo_BuilderFace in _BOPAlgo:
_BOPAlgo.BOPAlgo_BuilderFace_swigregister(BOPAlgo_BuilderFace)

class BOPAlgo_BuilderSolid(BOPAlgo_BuilderArea):
    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"""
        * @name Constructors Empty constructor
        	:rtype: None* Constructor with allocator
        	:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_BuilderSolid_swiginit(self, _BOPAlgo.new_BOPAlgo_BuilderSolid(*args))
    GetBoxesMap = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BuilderSolid_GetBoxesMap)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_BuilderSolid

# Register BOPAlgo_BuilderSolid in _BOPAlgo:
_BOPAlgo.BOPAlgo_BuilderSolid_swigregister(BOPAlgo_BuilderSolid)

class BOPAlgo_CheckerSI(BOPAlgo_PaveFiller):
    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""":rtype: None"""
        _BOPAlgo.BOPAlgo_CheckerSI_swiginit(self, _BOPAlgo.new_BOPAlgo_CheckerSI(*args))
    SetLevelOfCheck = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CheckerSI_SetLevelOfCheck)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_CheckerSI

# Register BOPAlgo_CheckerSI in _BOPAlgo:
_BOPAlgo.BOPAlgo_CheckerSI_swigregister(BOPAlgo_CheckerSI)

class BOPAlgo_RemoveFeatures(BOPAlgo_BuilderShape):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddFaceToRemove = _swig_new_instance_method(_BOPAlgo.BOPAlgo_RemoveFeatures_AddFaceToRemove)
    AddFacesToRemove = _swig_new_instance_method(_BOPAlgo.BOPAlgo_RemoveFeatures_AddFacesToRemove)

    def __init__(self, *args):
        r"""
        * @name Constructors Empty constructor
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_RemoveFeatures_swiginit(self, _BOPAlgo.new_BOPAlgo_RemoveFeatures(*args))
    Clear = _swig_new_instance_method(_BOPAlgo.BOPAlgo_RemoveFeatures_Clear)
    FacesToRemove = _swig_new_instance_method(_BOPAlgo.BOPAlgo_RemoveFeatures_FacesToRemove)
    InputShape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_RemoveFeatures_InputShape)
    SetShape = _swig_new_instance_method(_BOPAlgo.BOPAlgo_RemoveFeatures_SetShape)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_RemoveFeatures

# Register BOPAlgo_RemoveFeatures in _BOPAlgo:
_BOPAlgo.BOPAlgo_RemoveFeatures_swigregister(BOPAlgo_RemoveFeatures)

class BOPAlgo_CellsBuilder(BOPAlgo_Builder):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddAllToResult = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CellsBuilder_AddAllToResult)
    AddToResult = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CellsBuilder_AddToResult)

    def __init__(self, *args):
        r"""
        :rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_CellsBuilder_swiginit(self, _BOPAlgo.new_BOPAlgo_CellsBuilder(*args))
    GetAllParts = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CellsBuilder_GetAllParts)
    MakeContainers = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CellsBuilder_MakeContainers)
    RemoveAllFromResult = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CellsBuilder_RemoveAllFromResult)
    RemoveFromResult = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CellsBuilder_RemoveFromResult)
    RemoveInternalBoundaries = _swig_new_instance_method(_BOPAlgo.BOPAlgo_CellsBuilder_RemoveInternalBoundaries)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_CellsBuilder

# Register BOPAlgo_CellsBuilder in _BOPAlgo:
_BOPAlgo.BOPAlgo_CellsBuilder_swigregister(BOPAlgo_CellsBuilder)

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

    def __init__(self, *args):
        r"""
        * Empty contructor.
        	:rtype: None* Empty contructor.
        	:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_MakerVolume_swiginit(self, _BOPAlgo.new_BOPAlgo_MakerVolume(*args))
    Box = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakerVolume_Box)
    Faces = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakerVolume_Faces)
    IsAvoidInternalShapes = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakerVolume_IsAvoidInternalShapes)
    IsIntersect = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakerVolume_IsIntersect)
    SetAvoidInternalShapes = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakerVolume_SetAvoidInternalShapes)
    SetIntersect = _swig_new_instance_method(_BOPAlgo.BOPAlgo_MakerVolume_SetIntersect)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_MakerVolume

# Register BOPAlgo_MakerVolume in _BOPAlgo:
_BOPAlgo.BOPAlgo_MakerVolume_swigregister(BOPAlgo_MakerVolume)

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

    def __init__(self, *args):
        r"""
        * Empty constructor
        	:rtype: None* Constructor with allocator
        	:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_Section_swiginit(self, _BOPAlgo.new_BOPAlgo_Section(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_Section

# Register BOPAlgo_Section in _BOPAlgo:
_BOPAlgo.BOPAlgo_Section_swigregister(BOPAlgo_Section)

class BOPAlgo_ToolsProvider(BOPAlgo_Builder):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AddTool = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ToolsProvider_AddTool)

    def __init__(self, *args):
        r"""
        * Empty constructor
        	:rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_ToolsProvider_swiginit(self, _BOPAlgo.new_BOPAlgo_ToolsProvider(*args))
    SetTools = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ToolsProvider_SetTools)
    Tools = _swig_new_instance_method(_BOPAlgo.BOPAlgo_ToolsProvider_Tools)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_ToolsProvider

# Register BOPAlgo_ToolsProvider in _BOPAlgo:
_BOPAlgo.BOPAlgo_ToolsProvider_swigregister(BOPAlgo_ToolsProvider)

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

    def __init__(self, *args):
        r"""
        * Empty constructor
        	:rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_BOP_swiginit(self, _BOPAlgo.new_BOPAlgo_BOP(*args))
    Operation = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BOP_Operation)
    SetOperation = _swig_new_instance_method(_BOPAlgo.BOPAlgo_BOP_SetOperation)

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_BOP

# Register BOPAlgo_BOP in _BOPAlgo:
_BOPAlgo.BOPAlgo_BOP_swigregister(BOPAlgo_BOP)

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

    def __init__(self, *args):
        r"""
        * Empty constructor
        	:rtype: None:param theAllocator:
        	:type theAllocator: NCollection_BaseAllocator
        	:rtype: None
        """
        _BOPAlgo.BOPAlgo_Splitter_swiginit(self, _BOPAlgo.new_BOPAlgo_Splitter(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _BOPAlgo.delete_BOPAlgo_Splitter

# Register BOPAlgo_Splitter in _BOPAlgo:
_BOPAlgo.BOPAlgo_Splitter_swigregister(BOPAlgo_Splitter)



