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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _STEPControl:
_STEPControl.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 _STEPControl.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.Transfer
import OCC.Core.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.Interface
import OCC.Core.MoniTool
import OCC.Core.TopoDS
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.StepRepr
import OCC.Core.StepData
import OCC.Core.Resource
import OCC.Core.StepBasic
import OCC.Core.StepGeom
import OCC.Core.StepShape
import OCC.Core.TopTools
import OCC.Core.XSControl
import OCC.Core.IFSelect
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.Geom2d

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

STEPControl_AsIs = _STEPControl.STEPControl_AsIs
STEPControl_ManifoldSolidBrep = _STEPControl.STEPControl_ManifoldSolidBrep
STEPControl_BrepWithVoids = _STEPControl.STEPControl_BrepWithVoids
STEPControl_FacetedBrep = _STEPControl.STEPControl_FacetedBrep
STEPControl_FacetedBrepAndBrepWithVoids = _STEPControl.STEPControl_FacetedBrepAndBrepWithVoids
STEPControl_ShellBasedSurfaceModel = _STEPControl.STEPControl_ShellBasedSurfaceModel
STEPControl_GeometricCurveSet = _STEPControl.STEPControl_GeometricCurveSet
STEPControl_Hybrid = _STEPControl.STEPControl_Hybrid


class STEPControl_StepModelType(IntEnum):
	STEPControl_AsIs = 0
	STEPControl_ManifoldSolidBrep = 1
	STEPControl_BrepWithVoids = 2
	STEPControl_FacetedBrep = 3
	STEPControl_FacetedBrepAndBrepWithVoids = 4
	STEPControl_ShellBasedSurfaceModel = 5
	STEPControl_GeometricCurveSet = 6
	STEPControl_Hybrid = 7
STEPControl_AsIs = STEPControl_StepModelType.STEPControl_AsIs
STEPControl_ManifoldSolidBrep = STEPControl_StepModelType.STEPControl_ManifoldSolidBrep
STEPControl_BrepWithVoids = STEPControl_StepModelType.STEPControl_BrepWithVoids
STEPControl_FacetedBrep = STEPControl_StepModelType.STEPControl_FacetedBrep
STEPControl_FacetedBrepAndBrepWithVoids = STEPControl_StepModelType.STEPControl_FacetedBrepAndBrepWithVoids
STEPControl_ShellBasedSurfaceModel = STEPControl_StepModelType.STEPControl_ShellBasedSurfaceModel
STEPControl_GeometricCurveSet = STEPControl_StepModelType.STEPControl_GeometricCurveSet
STEPControl_Hybrid = STEPControl_StepModelType.STEPControl_Hybrid


def Handle_STEPControl_ActorRead_Create() -> "opencascade::handle< STEPControl_ActorRead >":
    return _STEPControl.Handle_STEPControl_ActorRead_Create()

def Handle_STEPControl_ActorRead_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< STEPControl_ActorRead >":
    return _STEPControl.Handle_STEPControl_ActorRead_DownCast(t)

def Handle_STEPControl_ActorRead_IsNull(t: "opencascade::handle< STEPControl_ActorRead > const &") -> "bool":
    return _STEPControl.Handle_STEPControl_ActorRead_IsNull(t)

def Handle_STEPControl_ActorWrite_Create() -> "opencascade::handle< STEPControl_ActorWrite >":
    return _STEPControl.Handle_STEPControl_ActorWrite_Create()

def Handle_STEPControl_ActorWrite_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< STEPControl_ActorWrite >":
    return _STEPControl.Handle_STEPControl_ActorWrite_DownCast(t)

def Handle_STEPControl_ActorWrite_IsNull(t: "opencascade::handle< STEPControl_ActorWrite > const &") -> "bool":
    return _STEPControl.Handle_STEPControl_ActorWrite_IsNull(t)

def Handle_STEPControl_Controller_Create() -> "opencascade::handle< STEPControl_Controller >":
    return _STEPControl.Handle_STEPControl_Controller_Create()

def Handle_STEPControl_Controller_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< STEPControl_Controller >":
    return _STEPControl.Handle_STEPControl_Controller_DownCast(t)

def Handle_STEPControl_Controller_IsNull(t: "opencascade::handle< STEPControl_Controller > const &") -> "bool":
    return _STEPControl.Handle_STEPControl_Controller_IsNull(t)
class STEPControl_ActorRead(OCC.Core.Transfer.Transfer_ActorOfTransientProcess):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        _STEPControl.STEPControl_ActorRead_swiginit(self, _STEPControl.new_STEPControl_ActorRead(*args))

    def ComputeSRRWT(self, *args) -> "Standard_Boolean":
        r"""
        Computes transformation defined by given representation_relationship_with_transformation.

        Parameters
        ----------
        SRR: StepRepr_RepresentationRelationship
        TP: Transfer_TransientProcess
        Trsf: gp_Trsf

        Returns
        -------
        bool

        """
        return _STEPControl.STEPControl_ActorRead_ComputeSRRWT(self, *args)

    def ComputeTransformation(self, *args) -> "Standard_Boolean":
        r"""
        Computes transformation defined by two axis placements (in mapped_item or item_defined_transformation) taking into account their representation contexts (i.e. units, which may be different) returns true if transformation is computed and is not an identity.

        Parameters
        ----------
        Origin: StepGeom_Axis2Placement3d
        Target: StepGeom_Axis2Placement3d
        OrigContext: StepRepr_Representation
        TargContext: StepRepr_Representation
        TP: Transfer_TransientProcess
        Trsf: gp_Trsf

        Returns
        -------
        bool

        """
        return _STEPControl.STEPControl_ActorRead_ComputeTransformation(self, *args)

    def PrepareUnits(self, *args) -> "void":
        r"""
        Set units and tolerances context by given shaperepresentation.

        Parameters
        ----------
        rep: StepRepr_Representation
        TP: Transfer_TransientProcess

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_ActorRead_PrepareUnits(self, *args)

    def ResetUnits(self, *args) -> "void":
        r"""
        Reset units and tolerances context to default (mm, radians, read.precision.val, etc.).

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_ActorRead_ResetUnits(self, *args)

    def TransferShape(self, *args) -> "opencascade::handle< Transfer_Binder >":
        r"""
        Theusetrsf - special flag for using axis2placement from shaperepresentation for transform root shape.

        Parameters
        ----------
        start: Standard_Transient
        TP: Transfer_TransientProcess
        isManifold: bool,optional
        	default value is Standard_True
        theUseTrsf: bool,optional
        	default value is Standard_False
        theProgress: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        opencascade::handle<Transfer_Binder>

        """
        return _STEPControl.STEPControl_ActorRead_TransferShape(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _STEPControl.delete_STEPControl_ActorRead

# Register STEPControl_ActorRead in _STEPControl:
_STEPControl.STEPControl_ActorRead_swigregister(STEPControl_ActorRead)

class STEPControl_ActorWrite(OCC.Core.Transfer.Transfer_ActorOfFinderProcess):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        No available documentation.

        Returns
        -------
        None

        """
        _STEPControl.STEPControl_ActorWrite_swiginit(self, _STEPControl.new_STEPControl_ActorWrite(*args))

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

        Returns
        -------
        int

        """
        return _STEPControl.STEPControl_ActorWrite_GroupMode(self, *args)

    def IsAssembly(self, *args) -> "Standard_Boolean":
        r"""
        Customizable method to check whether shape s should be written as assembly or not default implementation uses flag groupmode and analyses the shape itself note: this method can modify shape.

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

        Returns
        -------
        bool

        """
        return _STEPControl.STEPControl_ActorWrite_IsAssembly(self, *args)

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

        Returns
        -------
        STEPControl_StepModelType

        """
        return _STEPControl.STEPControl_ActorWrite_Mode(self, *args)

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

        Parameters
        ----------
        mode: int

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_ActorWrite_SetGroupMode(self, *args)

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

        Parameters
        ----------
        M: STEPControl_StepModelType

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_ActorWrite_SetMode(self, *args)

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

        Parameters
        ----------
        Tol: float

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_ActorWrite_SetTolerance(self, *args)

    def TransferCompound(self, *args) -> "opencascade::handle< Transfer_Binder >":
        r"""
        No available documentation.

        Parameters
        ----------
        start: Transfer_Finder
        SDR: StepShape_ShapeDefinitionRepresentation
        FP: Transfer_FinderProcess
        theProgress: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        opencascade::handle<Transfer_Binder>

        """
        return _STEPControl.STEPControl_ActorWrite_TransferCompound(self, *args)

    def TransferShape(self, *args) -> "opencascade::handle< Transfer_Binder >":
        r"""
        No available documentation.

        Parameters
        ----------
        start: Transfer_Finder
        SDR: StepShape_ShapeDefinitionRepresentation
        FP: Transfer_FinderProcess
        shapeGroup: TopTools_HSequenceOfShape,optional
        	default value is NULL
        isManifold: bool,optional
        	default value is Standard_True
        theProgress: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        opencascade::handle<Transfer_Binder>

        """
        return _STEPControl.STEPControl_ActorWrite_TransferShape(self, *args)

    def TransferSubShape(self, *args) -> "opencascade::handle< Transfer_Binder >":
        r"""
        No available documentation.

        Parameters
        ----------
        start: Transfer_Finder
        SDR: StepShape_ShapeDefinitionRepresentation
        AX1: StepGeom_Axis2Placement3d
        FP: Transfer_FinderProcess
        shapeGroup: TopTools_HSequenceOfShape,optional
        	default value is NULL
        isManifold: bool,optional
        	default value is Standard_True
        theProgress: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        opencascade::handle<Transfer_Binder>

        """
        return _STEPControl.STEPControl_ActorWrite_TransferSubShape(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _STEPControl.delete_STEPControl_ActorWrite

# Register STEPControl_ActorWrite in _STEPControl:
_STEPControl.STEPControl_ActorWrite_swigregister(STEPControl_ActorWrite)

class STEPControl_Controller(OCC.Core.XSControl.XSControl_Controller):
    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"""
        Initializes the use of step norm (the first time) and returns a controller.

        Returns
        -------
        None

        """
        _STEPControl.STEPControl_Controller_swiginit(self, _STEPControl.new_STEPControl_Controller(*args))

    @staticmethod
    def Init(*args) -> "Standard_Boolean":
        r"""
        Standard initialisation. it creates a controller for step and records it to various names, available to select it later returns true when done, false if could not be done.

        Returns
        -------
        bool

        """
        return _STEPControl.STEPControl_Controller_Init(*args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _STEPControl.delete_STEPControl_Controller

# Register STEPControl_Controller in _STEPControl:
_STEPControl.STEPControl_Controller_swigregister(STEPControl_Controller)

def STEPControl_Controller_Init(*args) -> "Standard_Boolean":
    r"""
    Standard initialisation. it creates a controller for step and records it to various names, available to select it later returns true when done, false if could not be done.

    Returns
    -------
    bool

    """
    return _STEPControl.STEPControl_Controller_Init(*args)

class STEPControl_Reader(OCC.Core.XSControl.XSControl_Reader):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Creates a reader object with an empty step model.

        Returns
        -------
        None
        Creates a reader for step from an already existing session clears the session if it was not yet set for step.

        Parameters
        ----------
        WS: XSControl_WorkSession
        scratch: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        _STEPControl.STEPControl_Reader_swiginit(self, _STEPControl.new_STEPControl_Reader(*args))

    def FileUnits(self, *args) -> "void":
        r"""
        Returns sequence of all unit names for shape representations found in file.

        Parameters
        ----------
        theUnitLengthNames: TColStd_SequenceOfAsciiString
        theUnitAngleNames: TColStd_SequenceOfAsciiString
        theUnitSolidAngleNames: TColStd_SequenceOfAsciiString

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_Reader_FileUnits(self, *args)

    def StepModel(self, *args) -> "opencascade::handle< StepData_StepModel >":
        r"""
        Returns the model as a stepmodel. it can then be consulted (header, product).

        Returns
        -------
        opencascade::handle<StepData_StepModel>

        """
        return _STEPControl.STEPControl_Reader_StepModel(self, *args)

    def TransferRoot(self, *args) -> "Standard_Boolean":
        r"""
        Transfers a root given its rank in the list of candidate roots default is the first one returns true if a shape has resulted, false else same as inherited transferoneroot, kept for compatibility.

        Parameters
        ----------
        num: int,optional
        	default value is 1
        theProgress: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        bool

        """
        return _STEPControl.STEPControl_Reader_TransferRoot(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _STEPControl.delete_STEPControl_Reader

# Register STEPControl_Reader in _STEPControl:
_STEPControl.STEPControl_Reader_swigregister(STEPControl_Reader)

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

    def __init__(self, *args):
        r"""
        Creates a writer from scratch.

        Returns
        -------
        None
        Creates a writer from an already existing session if <scratch> is true (d), clears already recorded data.

        Parameters
        ----------
        WS: XSControl_WorkSession
        scratch: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        _STEPControl.STEPControl_Writer_swiginit(self, _STEPControl.new_STEPControl_Writer(*args))

    def Model(self, *args) -> "opencascade::handle< StepData_StepModel >":
        r"""
        Returns the produced model. produces a new one if not yet done or if <newone> is true this method allows for instance to edit product or header data before writing.

        Parameters
        ----------
        newone: bool,optional
        	default value is Standard_False

        Returns
        -------
        opencascade::handle<StepData_StepModel>

        """
        return _STEPControl.STEPControl_Writer_Model(self, *args)

    def PrintStatsTransfer(self, *args) -> "void":
        r"""
        Displays the statistics for the last translation. what defines the kind of statistics that are displayed: - 0 gives general statistics (number of translated roots, number of warnings, number of fail messages), - 1 gives root results, - 2 gives statistics for all checked entities, - 3 gives the list of translated entities, - 4 gives warning and fail messages, - 5 gives fail messages only. mode is used according to the use of what. if what is 0, mode is ignored. if what is 1, 2 or 3, mode defines the following: - 0 lists the numbers of step entities in a step model, - 1 gives the number, identifier, type and result type for each step entity and/or its status (fail, warning, etc.), - 2 gives maximum information for each step entity (i.e. checks), - 3 gives the number of entities by the type of a step entity, - 4 gives the number of of step entities per result type and/or status, - 5 gives the number of pairs (step or result type and status), - 6 gives the number of pairs (step or result type and status) and the list of entity numbers in the step model.

        Parameters
        ----------
        what: int
        mode: int,optional
        	default value is 0

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_Writer_PrintStatsTransfer(self, *args)

    def SetTolerance(self, *args) -> "void":
        r"""
        Sets a length-measure value that will be written to uncertainty-measure-with-unit when the next shape is translated.

        Parameters
        ----------
        Tol: float

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_Writer_SetTolerance(self, *args)

    def SetWS(self, *args) -> "void":
        r"""
        Sets a specific session to <self>.

        Parameters
        ----------
        WS: XSControl_WorkSession
        scratch: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_Writer_SetWS(self, *args)

    def Transfer(self, *args) -> "IFSelect_ReturnStatus":
        r"""
        Translates shape sh to a step entity. mode defines the step entity type to be output: - stepcontrolstd_asis translates a shape to its highest possible step representation. - stepcontrolstd_manifoldsolidbrep translates a shape to a step manifold_solid_brep or brep_with_voids entity. - stepcontrolstd_facetedbrep translates a shape into a step faceted_brep entity. - stepcontrolstd_shellbasedsurfacemodel translates a shape into a step shell_based_surface_model entity. - stepcontrolstd_geometriccurveset translates a shape into a step geometric_curve_set entity.

        Parameters
        ----------
        sh: TopoDS_Shape
        mode: STEPControl_StepModelType
        compgraph: bool,optional
        	default value is Standard_True
        theProgress: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        IFSelect_ReturnStatus

        """
        return _STEPControl.STEPControl_Writer_Transfer(self, *args)

    def UnsetTolerance(self, *args) -> "void":
        r"""
        Unsets the tolerance formerly forced by settolerance.

        Returns
        -------
        None

        """
        return _STEPControl.STEPControl_Writer_UnsetTolerance(self, *args)

    def WS(self, *args) -> "opencascade::handle< XSControl_WorkSession >":
        r"""
        Returns the session used in <self>.

        Returns
        -------
        opencascade::handle<XSControl_WorkSession>

        """
        return _STEPControl.STEPControl_Writer_WS(self, *args)

    def Write(self, *args) -> "IFSelect_ReturnStatus":
        r"""
        Writes a step model in the file identified by filename.

        Parameters
        ----------
        filename: char *

        Returns
        -------
        IFSelect_ReturnStatus

        """
        return _STEPControl.STEPControl_Writer_Write(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _STEPControl.delete_STEPControl_Writer

# Register STEPControl_Writer in _STEPControl:
_STEPControl.STEPControl_Writer_swigregister(STEPControl_Writer)





