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

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

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


def process_exception(error, method_name, class_name):
    return _BRepAlgoAPI.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.BOPAlgo
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.TopTools
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.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
import OCC.Core.BRepBuilderAPI

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

class BRepAlgoAPI_Algo(OCC.Core.BRepBuilderAPI.BRepBuilderAPI_MakeShape):
    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 Clear(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Clears all warnings and errors, and any data cached by the algorithm. user defined options are not cleared.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_Clear(self, *args)

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

        Parameters
        ----------
        theFlag: bool

        Return
        -------
        None

        Description
        -----------
        Set the flag of parallel processing if <theflag> is true the parallel processing is switched on if <theflag> is false the parallel processing is switched off.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_SetRunParallel(self, *args)

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

        Description
        -----------
        Returns the flag of parallel processing.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_RunParallel(self, *args)

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

        Parameters
        ----------
        theFuzz: float

        Return
        -------
        None

        Description
        -----------
        Sets the additional tolerance.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_SetFuzzyValue(self, *args)

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

        Description
        -----------
        Returns the additional tolerance.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_FuzzyValue(self, *args)

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

        Description
        -----------
        Returns true if algorithm has failed.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_HasErrors(self, *args)

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

        Description
        -----------
        Returns true if algorithm has generated some warning alerts.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_HasWarnings(self, *args)

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

        Parameters
        ----------
        theType: Standard_Type

        Return
        -------
        bool

        Description
        -----------
        Returns true if algorithm has generated error of specified type.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_HasError(self, *args)

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

        Parameters
        ----------
        theType: Standard_Type

        Return
        -------
        bool

        Description
        -----------
        Returns true if algorithm has generated warning of specified type.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_HasWarning(self, *args)

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

        Description
        -----------
        Clears the warnings of the algorithm.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_ClearWarnings(self, *args)

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

        Description
        -----------
        Returns report collecting all errors and warnings.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_GetReport(self, *args)

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

        Parameters
        ----------
        theUseOBB: bool

        Return
        -------
        None

        Description
        -----------
        Enables/disables the usage of obb.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Algo_SetUseOBB(self, *args)

# Register BRepAlgoAPI_Algo in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_Algo_swigregister(BRepAlgoAPI_Algo)


class BRepAlgoAPI_Check(OCC.Core.BOPAlgo.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"""
        Return
        -------
        None

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        theS: TopoDS_Shape
        bTestSE: bool (optional, default to Standard_True)
        bTestSI: bool (optional, default to Standard_True)
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Constructor for checking single shape. //! @param thes [in] - the shape to check; @param btestse [in] - flag which specifies whether to check the shape  on small edges or not; by default it is set to true; @param btestsi [in] - flag which specifies whether to check the shape  on self-interference or not; by default it is set to true; @param therange [in] - parameter to use progress indicator.

        Parameters
        ----------
        theS1: TopoDS_Shape
        theS2: TopoDS_Shape
        theOp: BOPAlgo_Operation (optional, default to BOPAlgo_UNKNOWN)
        bTestSE: bool (optional, default to Standard_True)
        bTestSI: bool (optional, default to Standard_True)
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Constructor for checking the couple of shapes. additionally to the validity checks of each given shape, the types of the given shapes will be checked on validity for boolean operation of given type. //! @param thes1 [in] - the first shape to check; @param thes2 [in] - the second shape to check; @param theop [in] - the type of boolean operation for which the validity of given shapes should be checked. @param btestse [in] - flag which specifies whether to check the shape  on small edges or not; by default it is set to true; @param btestsi [in] - flag which specifies whether to check the shape  on self-interference or not; by default it is set to true; @param therange [in] - parameter to use progress indicator.

        """
        _BRepAlgoAPI.BRepAlgoAPI_Check_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_Check(*args))

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

        Description
        -----------
        Shows whether shape(s) valid or not.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Check_IsValid(self, *args)

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

        Parameters
        ----------
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Performs the check.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Check_Perform(self, *args)

    def Result(self, *args):
        r"""
        Return
        -------
        BOPAlgo_ListOfCheckResult

        Description
        -----------
        Returns faulty shapes.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Check_Result(self, *args)

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

        Parameters
        ----------
        theS: TopoDS_Shape
        bTestSE: bool (optional, default to Standard_True)
        bTestSI: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Initializes the algorithm with single shape. //! @param thes [in] - the shape to check; @param btestse [in] - flag which specifies whether to check the shape  on small edges or not; by default it is set to true; @param btestsi [in] - flag which specifies whether to check the shape  on self-interference or not; by default it is set to true;.

        Parameters
        ----------
        theS1: TopoDS_Shape
        theS2: TopoDS_Shape
        theOp: BOPAlgo_Operation (optional, default to BOPAlgo_UNKNOWN)
        bTestSE: bool (optional, default to Standard_True)
        bTestSI: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Initializes the algorithm with couple of shapes. additionally to the validity checks of each given shape, the types of the given shapes will be checked on validity for boolean operation of given type. //! @param thes1 [in] - the first shape to check; @param thes2 [in] - the second shape to check; @param theop [in] - the type of boolean operation for which the validity of given shapes should be checked. @param btestse [in] - flag which specifies whether to check the shape  on small edges or not; by default it is set to true; @param btestsi [in] - flag which specifies whether to check the shape  on self-interference or not; by default it is set to true;.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Check_SetData(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_Check

# Register BRepAlgoAPI_Check in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_Check_swigregister(BRepAlgoAPI_Check)
class BRepAlgoAPI_BuilderAlgo(BRepAlgoAPI_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"""
        Return
        -------
        None

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        thePF: BOPAlgo_PaveFiller

        Return
        -------
        None

        Description
        -----------
        Constructor with prepared filler object.

        """
        _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_BuilderAlgo(*args))

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

        Description
        -----------
        Gets the arguments.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_Arguments(self, *args)

    def Builder(self, *args):
        r"""
        Return
        -------
        BOPAlgo_PBuilder

        Description
        -----------
        Returns the building tool.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_Builder(self, *args)

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

        Description
        -----------
        Returns the flag defining whether the check for input solids on inverted status should be performed or not.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_CheckInverted(self, *args)

    def DSFiller(self, *args):
        r"""
        Return
        -------
        BOPAlgo_PPaveFiller

        Description
        -----------
        Returns the intersection tool.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_DSFiller(self, *args)

    def Glue(self, *args):
        r"""
        Return
        -------
        BOPAlgo_GlueEnum

        Description
        -----------
        Returns the glue option of the algorithm.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_Glue(self, *args)

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

        Description
        -----------
        Returns true if any of the input shapes has been deleted during operation. normally, general fuse operation should not have deleted elements, but all derived operation can have.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_HasDeleted(self, *args)

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

        Description
        -----------
        Returns true if any of the input shapes has generated shapes during operation.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_HasGenerated(self, *args)

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

        Description
        -----------
        Returns flag of history availability.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_HasHistory(self, *args)

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

        Description
        -----------
        Returns true if any of the input shapes has been modified during operation.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_HasModified(self, *args)

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

        Description
        -----------
        History tool.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_History(self, *args)

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

        Description
        -----------
        Returns the flag that defines the mode of treatment. in non-destructive mode the argument shapes are not modified. instead a copy of a sub-shape is created in the result if it is needed to be updated.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_NonDestructive(self, *args)

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

        Description
        -----------
        Returns a list of section edges. the edges represent the result of intersection between arguments of operation.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_SectionEdges(self, *args)

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

        Parameters
        ----------
        theLS: TopTools_ListOfShape

        Return
        -------
        None

        Description
        -----------
        Sets the arguments.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_SetArguments(self, *args)

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

        Parameters
        ----------
        theCheck: bool

        Return
        -------
        None

        Description
        -----------
        Enables/disables the check of the input solids for inverted status.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_SetCheckInverted(self, *args)

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

        Parameters
        ----------
        theGlue: BOPAlgo_GlueEnum

        Return
        -------
        None

        Description
        -----------
        Sets the glue option for the algorithm, which allows increasing performance of the intersection of the input shapes.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_SetGlue(self, *args)

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

        Parameters
        ----------
        theFlag: bool

        Return
        -------
        None

        Description
        -----------
        Sets the flag that defines the mode of treatment. in non-destructive mode the argument shapes are not modified. instead a copy of a sub-shape is created in the result if it is needed to be updated.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_SetNonDestructive(self, *args)

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

        Parameters
        ----------
        theHistFlag: bool

        Return
        -------
        None

        Description
        -----------
        Allows disabling the history collection.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_SetToFillHistory(self, *args)

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

        Parameters
        ----------
        theUnifyEdges: bool (optional, default to Standard_True)
        theUnifyFaces: bool (optional, default to Standard_True)
        theAngularTol: float (optional, default to Precision::Angular())

        Return
        -------
        None

        Description
        -----------
        Simplification of the result shape is performed by the means of *shapeupgrade_unifysamedomain* algorithm. the result of the operation will be overwritten with the simplified result. //! the simplification is performed without creation of the internal shapes, i.e. shapes connections will never be broken. //! simplification is performed on the whole result shape. thus, if the input shapes contained connected tangent edges or faces unmodified during the operation they will also be unified. //! after simplification, the history of result simplification is merged into the main history of operation. so, it is taken into account when asking for modified, generated and deleted shapes. //! some options of the main operation are passed into the unifier: - fuzzy tolerance of the operation is given to the unifier as the linear tolerance. - non destructive mode here controls the safe input mode in unifier. //! @param theunifyedges controls the edges unification. true by default. @param theunifyfaces controls the faces unification. true by default. @param theangulartol angular criteria for tangency of edges and faces.  precision::angular() by default.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_SimplifyResult(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_BuilderAlgo

# Register BRepAlgoAPI_BuilderAlgo in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_BuilderAlgo_swigregister(BRepAlgoAPI_BuilderAlgo)
class BRepAlgoAPI_Defeaturing(BRepAlgoAPI_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"""
        Return
        -------
        None

        Description
        -----------
        Empty constructor.

        """
        _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_Defeaturing(*args))

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

        Parameters
        ----------
        theFace: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Adds the features to remove from the input shape. @param theface [in] the shape to extract the faces for removal.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_AddFaceToRemove(self, *args)

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

        Parameters
        ----------
        theFaces: TopTools_ListOfShape

        Return
        -------
        None

        Description
        -----------
        Adds the faces to remove from the input shape. @param thefaces [in] the list of shapes to extract the faces for removal.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_AddFacesToRemove(self, *args)

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

        Description
        -----------
        Returns the list of faces which have been requested for removal from the input shape.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_FacesToRemove(self, *args)

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

        Description
        -----------
        Returns true if any of the input shapes has been deleted during operation.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_HasDeleted(self, *args)

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

        Description
        -----------
        Returns true if any of the input shapes has generated shapes during operation.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_HasGenerated(self, *args)

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

        Description
        -----------
        Returns whether the history was requested or not.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_HasHistory(self, *args)

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

        Description
        -----------
        Returns true if any of the input shapes has been modified during operation.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_HasModified(self, *args)

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

        Description
        -----------
        Returns the history of shapes modifications.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_History(self, *args)

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

        Description
        -----------
        Returns the input shape.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_InputShape(self, *args)

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

        Parameters
        ----------
        theShape: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Sets the shape for processing. @param theshape [in] the shape to remove the features from.  it should either be the solid, compsolid or compound of solids.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_SetShape(self, *args)

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

        Parameters
        ----------
        theFlag: bool

        Return
        -------
        None

        Description
        -----------
        Defines whether to track the modification of the shapes or not.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Defeaturing_SetToFillHistory(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_Defeaturing

# Register BRepAlgoAPI_Defeaturing in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_Defeaturing_swigregister(BRepAlgoAPI_Defeaturing)
class BRepAlgoAPI_BooleanOperation(BRepAlgoAPI_BuilderAlgo):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        thePF: BOPAlgo_PaveFiller

        Return
        -------
        None

        Description
        -----------
        Constructor with precomputed intersections of arguments.

        """
        _BRepAlgoAPI.BRepAlgoAPI_BooleanOperation_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_BooleanOperation(*args))

    def Operation(self, *args):
        r"""
        Return
        -------
        BOPAlgo_Operation

        Description
        -----------
        Returns the type of boolean operation.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BooleanOperation_Operation(self, *args)

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

        Parameters
        ----------
        theBOP: BOPAlgo_Operation

        Return
        -------
        None

        Description
        -----------
        Sets the type of boolean operation.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BooleanOperation_SetOperation(self, *args)

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

        Parameters
        ----------
        theLS: TopTools_ListOfShape

        Return
        -------
        None

        Description
        -----------
        Sets the tool arguments.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BooleanOperation_SetTools(self, *args)

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

        Description
        -----------
        Returns the first argument involved in this boolean operation. obsolete.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BooleanOperation_Shape1(self, *args)

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

        Description
        -----------
        Returns the second argument involved in this boolean operation. obsolete.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BooleanOperation_Shape2(self, *args)

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

        Description
        -----------
        Returns the tools arguments.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_BooleanOperation_Tools(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_BooleanOperation

# Register BRepAlgoAPI_BooleanOperation in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_BooleanOperation_swigregister(BRepAlgoAPI_BooleanOperation)
class BRepAlgoAPI_Splitter(BRepAlgoAPI_BuilderAlgo):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        thePF: BOPAlgo_PaveFiller

        Return
        -------
        None

        Description
        -----------
        Constructor with already prepared intersection tool - pavefiller.

        """
        _BRepAlgoAPI.BRepAlgoAPI_Splitter_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_Splitter(*args))

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

        Parameters
        ----------
        theLS: TopTools_ListOfShape

        Return
        -------
        None

        Description
        -----------
        Sets the tool arguments.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Splitter_SetTools(self, *args)

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

        Description
        -----------
        Returns the tool arguments.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Splitter_Tools(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_Splitter

# Register BRepAlgoAPI_Splitter in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_Splitter_swigregister(BRepAlgoAPI_Splitter)
class BRepAlgoAPI_Common(BRepAlgoAPI_BooleanOperation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        PF: BOPAlgo_PaveFiller

        Return
        -------
        None

        Description
        -----------
        Empty constructor <pf> - pavefiller object that is carried out.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> -argument <s2> -tool <anoperation> - the type of the operation obsolete.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        PF: BOPAlgo_PaveFiller
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> -argument <s2> -tool <anoperation> - the type of the operation <pf> - pavefiller object that is carried out obsolete.

        """
        _BRepAlgoAPI.BRepAlgoAPI_Common_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_Common(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_Common

# Register BRepAlgoAPI_Common in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_Common_swigregister(BRepAlgoAPI_Common)
class BRepAlgoAPI_Cut(BRepAlgoAPI_BooleanOperation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        PF: BOPAlgo_PaveFiller

        Return
        -------
        None

        Description
        -----------
        Empty constructor <pf> - pavefiller object that is carried out.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> -argument <s2> -tool <anoperation> - the type of the operation obsolete.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        aDSF: BOPAlgo_PaveFiller
        bFWD: bool (optional, default to Standard_True)
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> -argument <s2> -tool <anoperation> - the type of the operation <pf> - pavefiller object that is carried out obsolete.

        """
        _BRepAlgoAPI.BRepAlgoAPI_Cut_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_Cut(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_Cut

# Register BRepAlgoAPI_Cut in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_Cut_swigregister(BRepAlgoAPI_Cut)
class BRepAlgoAPI_Fuse(BRepAlgoAPI_BooleanOperation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        PF: BOPAlgo_PaveFiller

        Return
        -------
        None

        Description
        -----------
        Empty constructor <pf> - pavefiller object that is carried out.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> -argument <s2> -tool <anoperation> - the type of the operation obsolete.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        aDSF: BOPAlgo_PaveFiller
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> -argument <s2> -tool <anoperation> - the type of the operation <pf> - pavefiller object that is carried out obsolete.

        """
        _BRepAlgoAPI.BRepAlgoAPI_Fuse_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_Fuse(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_Fuse

# Register BRepAlgoAPI_Fuse in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_Fuse_swigregister(BRepAlgoAPI_Fuse)
class BRepAlgoAPI_Section(BRepAlgoAPI_BooleanOperation):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Description
        -----------
        Empty constructor.

        Parameters
        ----------
        PF: BOPAlgo_PaveFiller

        Return
        -------
        None

        Description
        -----------
        Empty constructor <pf> - pavefiller object that is carried out.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        PerformNow: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> -argument <s2> -tool <performnow> - the flag: if <performnow>=true - the algorithm is performed immediately obsolete.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        aDSF: BOPAlgo_PaveFiller
        PerformNow: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> -argument <s2> -tool <pf> - pavefiller object that is carried out <performnow> - the flag: if <performnow>=true - the algorithm is performed immediately obsolete.

        Parameters
        ----------
        S1: TopoDS_Shape
        Pl: gp_Pln
        PerformNow: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> - argument <pl> - tool <performnow> - the flag: if <performnow>=true - the algorithm is performed immediately obsolete.

        Parameters
        ----------
        S1: TopoDS_Shape
        Sf: Geom_Surface
        PerformNow: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <s1> - argument <sf> - tool <performnow> - the flag: if <performnow>=true - the algorithm is performed immediately obsolete.

        Parameters
        ----------
        Sf: Geom_Surface
        S2: TopoDS_Shape
        PerformNow: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <sf> - argument <s2> - tool <performnow> - the flag: if <performnow>=true - the algorithm is performed immediately obsolete.

        Parameters
        ----------
        Sf1: Geom_Surface
        Sf2: Geom_Surface
        PerformNow: bool (optional, default to Standard_True)

        Return
        -------
        None

        Description
        -----------
        Constructor with two shapes <sf1> - argument <sf2> - tool <performnow> - the flag: if <performnow>=true - the algorithm is performed immediately obsolete.

        """
        _BRepAlgoAPI.BRepAlgoAPI_Section_swiginit(self, _BRepAlgoAPI.new_BRepAlgoAPI_Section(*args))

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

        Parameters
        ----------
        B: bool

        Return
        -------
        None

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

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Section_Approximation(self, *args)

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

        Parameters
        ----------
        B: bool

        Return
        -------
        None

        Description
        -----------
        Indicates whether the p-curve should be (or not) performed on the argument. by default, no parametric 2d curve (pcurve) is defined for the edges of the result. if computepcurve1 equals true, further computations performed to attach an p-curve in the parametric space of the argument to the constructed edges. obsolete.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Section_ComputePCurveOn1(self, *args)

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

        Parameters
        ----------
        B: bool

        Return
        -------
        None

        Description
        -----------
        Indicates whether the p-curve should be (or not) performed on the tool. by default, no parametric 2d curve (pcurve) is defined for the edges of the result. if computepcurve1 equals true, further computations performed to attach an p-curve in the parametric space of the tool to the constructed edges. obsolete.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Section_ComputePCurveOn2(self, *args)

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

        Parameters
        ----------
        E: TopoDS_Shape
        F: TopoDS_Shape

        Return
        -------
        bool

        Description
        -----------
        Get the face of the first part giving section edge <e>. returns true on the 3 following conditions: 1/ <e> is an edge returned by the shape() metwod. 2/ first part of section performed is a shape. 3/ <e> is built on a intersection curve (i.e <e> is not the result of common edges) when false, f remains untouched. obsolete.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Section_HasAncestorFaceOn1(self, *args)

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

        Parameters
        ----------
        E: TopoDS_Shape
        F: TopoDS_Shape

        Return
        -------
        bool

        Description
        -----------
        Identifies the ancestor faces of the intersection edge e resulting from the last computation performed in this framework, that is, the faces of the two original shapes on which the edge e lies: - hasancestorfaceon1 gives the ancestor face in the first shape, and - hasancestorfaceon2 gives the ancestor face in the second shape. these functions return true if an ancestor face f is found, or false if not. an ancestor face is identifiable for the edge e if the following conditions are satisfied: - the first part on which this algorithm performed its last computation is a shape, that is, it was not given as a surface or a plane at the time of construction of this algorithm or at a later time by the init1 function, - e is one of the elementary edges built by the last computation of this section algorithm. to use these functions properly, you have to test the returned boolean value before using the ancestor face: f is significant only if the returned boolean value equals true. obsolete.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Section_HasAncestorFaceOn2(self, *args)

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

        Parameters
        ----------
        S1: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Initialize the argument <s1> - argument obsolete.

        Parameters
        ----------
        Pl: gp_Pln

        Return
        -------
        None

        Description
        -----------
        Initialize the argument <pl> - argument obsolete.

        Parameters
        ----------
        Sf: Geom_Surface

        Return
        -------
        None

        Description
        -----------
        Initialize the argument <sf> - argument obsolete.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Section_Init1(self, *args)

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

        Parameters
        ----------
        S2: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Initialize the tool <s2> - tool obsolete.

        Parameters
        ----------
        Pl: gp_Pln

        Return
        -------
        None

        Description
        -----------
        Initialize the tool <pl> - tool obsolete.

        Parameters
        ----------
        Sf: Geom_Surface

        Return
        -------
        None

        Description
        -----------
        Initialize the tool <sf> - tool obsolete.

        """
        return _BRepAlgoAPI.BRepAlgoAPI_Section_Init2(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BRepAlgoAPI.delete_BRepAlgoAPI_Section

# Register BRepAlgoAPI_Section in _BRepAlgoAPI:
_BRepAlgoAPI.BRepAlgoAPI_Section_swigregister(BRepAlgoAPI_Section)



