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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    def __sub__(self, *args) -> "ptrdiff_t":
        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: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    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) -> "void":
        r"""
        Clears all warnings and errors, and any data cached by the algorithm. user defined options are not cleared.

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

    def RunParallel(self, *args) -> "Standard_Boolean":
        r"""
        Returns the flag of parallel processing.

        Returns
        -------
        bool

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

    def SetFuzzyValue(self, *args) -> "void":
        r"""
        Sets the additional tolerance.

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

        Returns
        -------
        None

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

    def FuzzyValue(self, *args) -> "Standard_Real":
        r"""
        Returns the additional tolerance.

        Returns
        -------
        float

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

    def HasErrors(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if algorithm has failed.

        Returns
        -------
        bool

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

    def HasWarnings(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if algorithm has generated some warning alerts.

        Returns
        -------
        bool

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

    def HasError(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if algorithm has generated error of specified type.

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

        Returns
        -------
        bool

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

    def HasWarning(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if algorithm has generated warning of specified type.

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

        Returns
        -------
        bool

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

    def ClearWarnings(self, *args) -> "void":
        r"""
        Clears the warnings of the algorithm.

        Returns
        -------
        None

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

    def GetReport(self, *args) -> "opencascade::handle< Message_Report > const &":
        r"""
        Returns report collecting all errors and warnings.

        Returns
        -------
        opencascade::handle<Message_Report>

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

    def SetProgressIndicator(self, *args) -> "void":
        r"""
        Set the progress indicator object.

        Parameters
        ----------
        theProgress: Message_ProgressScope

        Returns
        -------
        None

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

    def SetUseOBB(self, *args) -> "void":
        r"""
        Enables/disables the usage of obb.

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

        Returns
        -------
        None

        """
        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"""
        Empty constructor.

        Returns
        -------
        None
        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;.

        Parameters
        ----------
        theS: TopoDS_Shape
        bTestSE: bool,optional
        	default value is Standard_True
        bTestSI: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        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;.

        Parameters
        ----------
        theS1: TopoDS_Shape
        theS2: TopoDS_Shape
        theOp: BOPAlgo_Operation,optional
        	default value is BOPAlgo_UNKNOWN
        bTestSE: bool,optional
        	default value is Standard_True
        bTestSI: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

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

    def IsValid(self, *args) -> "Standard_Boolean":
        r"""
        Shows whether shape(s) valid or not.

        Returns
        -------
        bool

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

    def Perform(self, *args) -> "void":
        r"""
        Performs the check.

        Returns
        -------
        None

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

    def Result(self, *args) -> "BOPAlgo_ListOfCheckResult const &":
        r"""
        Returns faulty shapes.

        Returns
        -------
        BOPAlgo_ListOfCheckResult

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

    def SetData(self, *args) -> "void":
        r"""
        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
        ----------
        theS: TopoDS_Shape
        bTestSE: bool,optional
        	default value is Standard_True
        bTestSI: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        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;.

        Parameters
        ----------
        theS1: TopoDS_Shape
        theS2: TopoDS_Shape
        theOp: BOPAlgo_Operation,optional
        	default value is BOPAlgo_UNKNOWN
        bTestSE: bool,optional
        	default value is Standard_True
        bTestSI: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        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"""
        Empty constructor.

        Returns
        -------
        None
        Constructor with prepared filler object.

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

        Returns
        -------
        None

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

    def Arguments(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Gets the arguments.

        Returns
        -------
        TopTools_ListOfShape

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

    def Builder(self, *args) -> "BOPAlgo_PBuilder const &":
        r"""
        Returns the building tool.

        Returns
        -------
        BOPAlgo_PBuilder

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

    def CheckInverted(self, *args) -> "Standard_Boolean":
        r"""
        Returns the flag defining whether the check for input solids on inverted status should be performed or not.

        Returns
        -------
        bool

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

    def DSFiller(self, *args) -> "BOPAlgo_PPaveFiller const &":
        r"""
        Returns the intersection tool.

        Returns
        -------
        BOPAlgo_PPaveFiller

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

    def Glue(self, *args) -> "BOPAlgo_GlueEnum":
        r"""
        Returns the glue option of the algorithm.

        Returns
        -------
        BOPAlgo_GlueEnum

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

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

        Returns
        -------
        bool

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

    def HasGenerated(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if any of the input shapes has generated shapes during operation.

        Returns
        -------
        bool

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

    def HasHistory(self, *args) -> "Standard_Boolean":
        r"""
        Returns flag of history availability.

        Returns
        -------
        bool

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

    def HasModified(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if any of the input shapes has been modified during operation.

        Returns
        -------
        bool

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

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

        Returns
        -------
        opencascade::handle<BRepTools_History>

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

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

        Returns
        -------
        bool

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

    def SectionEdges(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns a list of section edges. the edges represent the result of intersection between arguments of operation.

        Returns
        -------
        TopTools_ListOfShape

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

    def SetArguments(self, *args) -> "void":
        r"""
        Sets the arguments.

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

        Returns
        -------
        None

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

    def SetCheckInverted(self, *args) -> "void":
        r"""
        Enables/disables the check of the input solids for inverted status.

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

        Returns
        -------
        None

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

    def SetGlue(self, *args) -> "void":
        r"""
        Sets the glue option for the algorithm, which allows increasing performance of the intersection of the input shapes.

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

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

    def SetToFillHistory(self, *args) -> "void":
        r"""
        Allows disabling the history collection.

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

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

        """
        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"""
        Empty constructor.

        Returns
        -------
        None

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

    def AddFaceToRemove(self, *args) -> "void":
        r"""
        Adds the features to remove from the input shape. @param theface [in] the shape to extract the faces for removal.

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

        Returns
        -------
        None

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

    def AddFacesToRemove(self, *args) -> "void":
        r"""
        Adds the faces to remove from the input shape. @param thefaces [in] the list of shapes to extract the faces for removal.

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

        Returns
        -------
        None

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

    def FacesToRemove(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the list of faces which have been requested for removal from the input shape.

        Returns
        -------
        TopTools_ListOfShape

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

    def HasDeleted(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if any of the input shapes has been deleted during operation.

        Returns
        -------
        bool

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

    def HasGenerated(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if any of the input shapes has generated shapes during operation.

        Returns
        -------
        bool

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

    def HasHistory(self, *args) -> "Standard_Boolean":
        r"""
        Returns whether the history was requested or not.

        Returns
        -------
        bool

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

    def HasModified(self, *args) -> "Standard_Boolean":
        r"""
        Returns true if any of the input shapes has been modified during operation.

        Returns
        -------
        bool

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

    def History(self, *args) -> "opencascade::handle< BRepTools_History >":
        r"""
        Returns the history of shapes modifications.

        Returns
        -------
        opencascade::handle<BRepTools_History>

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

    def InputShape(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the input shape.

        Returns
        -------
        TopoDS_Shape

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

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

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

        Returns
        -------
        None

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

    def SetToFillHistory(self, *args) -> "void":
        r"""
        Defines whether to track the modification of the shapes or not.

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

        Returns
        -------
        None

        """
        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"""
        Empty constructor.

        Returns
        -------
        None
        Constructor with precomputed intersections of arguments.

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

        Returns
        -------
        None

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

    def Operation(self, *args) -> "BOPAlgo_Operation":
        r"""
        Returns the type of boolean operation.

        Returns
        -------
        BOPAlgo_Operation

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

    def SetOperation(self, *args) -> "void":
        r"""
        Sets the type of boolean operation.

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

        Returns
        -------
        None

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

    def SetTools(self, *args) -> "void":
        r"""
        Sets the tool arguments.

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

        Returns
        -------
        None

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

    def Shape1(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the first argument involved in this boolean operation. obsolete.

        Returns
        -------
        TopoDS_Shape

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

    def Shape2(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the second argument involved in this boolean operation. obsolete.

        Returns
        -------
        TopoDS_Shape

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

    def Tools(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the tools arguments.

        Returns
        -------
        TopTools_ListOfShape

        """
        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"""
        Empty constructor.

        Returns
        -------
        None
        Constructor with already prepared intersection tool - pavefiller.

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

        Returns
        -------
        None

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

    def SetTools(self, *args) -> "void":
        r"""
        Sets the tool arguments.

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

        Returns
        -------
        None

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

    def Tools(self, *args) -> "TopTools_ListOfShape const &":
        r"""
        Returns the tool arguments.

        Returns
        -------
        TopTools_ListOfShape

        """
        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"""
        Empty constructor.

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

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

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

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

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

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        PF: BOPAlgo_PaveFiller

        Returns
        -------
        None

        """
        _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"""
        Empty constructor.

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

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

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

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

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

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        aDSF: BOPAlgo_PaveFiller
        bFWD: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        _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"""
        Empty constructor.

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

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

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

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

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

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        aDSF: BOPAlgo_PaveFiller

        Returns
        -------
        None

        """
        _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"""
        Empty constructor.

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

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

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

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        PerformNow: bool,optional
        	default value is Standard_True

        Returns
        -------
        None
        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 immediatly obsolete.

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape
        aDSF: BOPAlgo_PaveFiller
        PerformNow: bool,optional
        	default value is Standard_True

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

        Parameters
        ----------
        S1: TopoDS_Shape
        Pl: gp_Pln
        PerformNow: bool,optional
        	default value is Standard_True

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

        Parameters
        ----------
        S1: TopoDS_Shape
        Sf: Geom_Surface
        PerformNow: bool,optional
        	default value is Standard_True

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

        Parameters
        ----------
        Sf: Geom_Surface
        S2: TopoDS_Shape
        PerformNow: bool,optional
        	default value is Standard_True

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

        Parameters
        ----------
        Sf1: Geom_Surface
        Sf2: Geom_Surface
        PerformNow: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

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

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

        Returns
        -------
        None

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

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

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

        Returns
        -------
        bool

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

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

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

        Returns
        -------
        bool

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

    def Init1(self, *args) -> "void":
        r"""
        Initialize the argument <s1> - argument obsolete.

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

        Returns
        -------
        None
        Initialize the argument <pl> - argument obsolete.

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

        Returns
        -------
        None
        Initialize the argument <sf> - argument obsolete.

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

        Returns
        -------
        None

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

    def Init2(self, *args) -> "void":
        r"""
        Initialize the tool <s2> - tool obsolete.

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

        Returns
        -------
        None
        Initialize the tool <pl> - tool obsolete.

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

        Returns
        -------
        None
        Initialize the tool <sf> - tool obsolete.

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

        Returns
        -------
        None

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





