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

"""
RWPly module, see official documentation at
https://www.opencascade.com/doc/occt-7.7.0/refman/html/package_rwply.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 _RWPly
else:
    import _RWPly

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _RWPly:
_RWPly.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 _RWPly.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.TCollection
import OCC.Core.RWMesh
import OCC.Core.TDF
import OCC.Core.TColStd
import OCC.Core.TDocStd
import OCC.Core.CDF
import OCC.Core.CDM
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.Resource
import OCC.Core.PCDM
import OCC.Core.Storage
import OCC.Core.gp
import OCC.Core.TopoDS
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.Graphic3d
import OCC.Core.BVH
import OCC.Core.Quantity
import OCC.Core.Aspect
import OCC.Core.Image
import OCC.Core.Bnd
import OCC.Core.TColgp
import OCC.Core.Media
import OCC.Core.XCAFPrs
import OCC.Core.AIS
import OCC.Core.SelectMgr
import OCC.Core.Select3D
import OCC.Core.SelectBasics
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.PrsMgr
import OCC.Core.Prs3d
import OCC.Core.Poly
import OCC.Core.TShort
import OCC.Core.V3d
import OCC.Core.StdSelect
import OCC.Core.TopTools
import OCC.Core.XCAFDoc
import OCC.Core.TDataStd
import OCC.Core.XCAFDimTolObjects
import OCC.Core.UnitsMethods
import OCC.Core.XCAFNoteObjects
import OCC.Core.XCAFView
import OCC.Core.TPrsStd
import OCC.Core.TDataXtd
import OCC.Core.TNaming
import OCC.Core.DE
import OCC.Core.XSControl
import OCC.Core.IFSelect
import OCC.Core.Interface
import OCC.Core.MoniTool
import OCC.Core.Transfer
import OCC.Core.Geom2d

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




def Handle_RWPly_CafWriter_Create():
    return _RWPly.Handle_RWPly_CafWriter_Create()

def Handle_RWPly_CafWriter_DownCast(t):
    return _RWPly.Handle_RWPly_CafWriter_DownCast(t)

def Handle_RWPly_CafWriter_IsNull(t):
    return _RWPly.Handle_RWPly_CafWriter_IsNull(t)
class RWPly_CafWriter(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        theFile: str

        Return
        -------
        None

        Description
        -----------
        Main constructor. @param[in] thefile path to output ply file.

        """
        _RWPly.RWPly_CafWriter_swiginit(self, _RWPly.new_RWPly_CafWriter(*args))

    def ChangeCoordinateSystemConverter(self, *args):
        r"""
        Return
        -------
        RWMesh_CoordinateSystemConverter

        Description
        -----------
        Return transformation from occt to ply coordinate system.

        """
        return _RWPly.RWPly_CafWriter_ChangeCoordinateSystemConverter(self, *args)

    def CoordinateSystemConverter(self, *args):
        r"""
        Return
        -------
        RWMesh_CoordinateSystemConverter

        Description
        -----------
        Return transformation from occt to ply coordinate system.

        """
        return _RWPly.RWPly_CafWriter_CoordinateSystemConverter(self, *args)

    def DefaultStyle(self, *args):
        r"""
        Return
        -------
        XCAFPrs_Style

        Description
        -----------
        Return default material definition to be used for nodes with only color defined.

        """
        return _RWPly.RWPly_CafWriter_DefaultStyle(self, *args)

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

        Description
        -----------
        Return true if point colors should be written; true by default.

        """
        return _RWPly.RWPly_CafWriter_HasColors(self, *args)

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

        Description
        -----------
        Return true if face id should be written as element attribute; false by default.

        """
        return _RWPly.RWPly_CafWriter_HasFaceId(self, *args)

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

        Description
        -----------
        Return true if normals should be written; true by default.

        """
        return _RWPly.RWPly_CafWriter_HasNormals(self, *args)

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

        Description
        -----------
        Return true if part id should be written as element attribute; true by default.

        """
        return _RWPly.RWPly_CafWriter_HasPartId(self, *args)

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

        Description
        -----------
        Return true if uv / texture coordinates should be written; false by default.

        """
        return _RWPly.RWPly_CafWriter_HasTexCoords(self, *args)

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

        Description
        -----------
        Return true if vertex position should be stored with double floating point precision; false by default.

        """
        return _RWPly.RWPly_CafWriter_IsDoublePrecision(self, *args)

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

        Parameters
        ----------
        theDocument: TDocStd_Document
        theRootLabels: TDF_LabelSequence
        theLabelFilter: TColStd_MapOfAsciiString *
        theFileInfo: TColStd_IndexedDataMapOfStringString
        theProgress: Message_ProgressRange

        Return
        -------
        bool

        Description
        -----------
        Write ply file and associated mtl material file. triangulation data should be precomputed within shapes! @param[in] thedocument input document @param[in] therootlabels list of root shapes to export @param[in] thelabelfilter optional filter with document nodes to export,  with keys defined by xcafprs_documentexplorer::definechildid() and filled recursively  (leaves and parent assembly nodes at all levels);  when not null, all nodes not included into the map will be ignored @param[in] thefileinfo map with file metadata to put into ply header section @param[in] theprogress optional progress indicator return false on file writing failure.

        Parameters
        ----------
        theDocument: TDocStd_Document
        theFileInfo: TColStd_IndexedDataMapOfStringString
        theProgress: Message_ProgressRange

        Return
        -------
        bool

        Description
        -----------
        Write ply file and associated mtl material file. triangulation data should be precomputed within shapes! @param[in] thedocument input document @param[in] thefileinfo map with file metadata to put into ply header section @param[in] theprogress optional progress indicator return false on file writing failure.

        """
        return _RWPly.RWPly_CafWriter_Perform(self, *args)

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

        Parameters
        ----------
        theToWrite: bool

        Return
        -------
        None

        Description
        -----------
        Set if point colors should be written.

        """
        return _RWPly.RWPly_CafWriter_SetColors(self, *args)

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

        Parameters
        ----------
        theConverter: RWMesh_CoordinateSystemConverter

        Return
        -------
        None

        Description
        -----------
        Set transformation from occt to ply coordinate system.

        """
        return _RWPly.RWPly_CafWriter_SetCoordinateSystemConverter(self, *args)

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

        Parameters
        ----------
        theStyle: XCAFPrs_Style

        Return
        -------
        None

        Description
        -----------
        Set default material definition to be used for nodes with only color defined.

        """
        return _RWPly.RWPly_CafWriter_SetDefaultStyle(self, *args)

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

        Parameters
        ----------
        theDoublePrec: bool

        Return
        -------
        None

        Description
        -----------
        Set if vertex position should be stored with double floating point precision.

        """
        return _RWPly.RWPly_CafWriter_SetDoublePrecision(self, *args)

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

        Parameters
        ----------
        theSurfId: bool

        Return
        -------
        None

        Description
        -----------
        Set if face id should be written as element attribute; false by default. cannot be combined with haspartid().

        """
        return _RWPly.RWPly_CafWriter_SetFaceId(self, *args)

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

        Parameters
        ----------
        theHasNormals: bool

        Return
        -------
        None

        Description
        -----------
        Set if normals are defined.

        """
        return _RWPly.RWPly_CafWriter_SetNormals(self, *args)

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

        Parameters
        ----------
        theSurfId: bool

        Return
        -------
        None

        Description
        -----------
        Set if part id should be written as element attribute; false by default. cannot be combined with hasfaceid().

        """
        return _RWPly.RWPly_CafWriter_SetPartId(self, *args)

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

        Parameters
        ----------
        theHasTexCoords: bool

        Return
        -------
        None

        Description
        -----------
        Set if uv / texture coordinates should be written.

        """
        return _RWPly.RWPly_CafWriter_SetTexCoords(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _RWPly.delete_RWPly_CafWriter

# Register RWPly_CafWriter in _RWPly:
_RWPly.RWPly_CafWriter_swigregister(RWPly_CafWriter)
class RWPly_ConfigurationNode(OCC.Core.DE.DE_ConfigurationNode):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    InternalParameters = property(_RWPly.RWPly_ConfigurationNode_InternalParameters_get, _RWPly.RWPly_ConfigurationNode_InternalParameters_set)

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

        Description
        -----------
        Initializes all field by default.

        Parameters
        ----------
        theNode: RWPly_ConfigurationNode

        Return
        -------
        None

        Description
        -----------
        Copies values of all fields @param[in] thenode object to copy.

        """
        _RWPly.RWPly_ConfigurationNode_swiginit(self, _RWPly.new_RWPly_ConfigurationNode(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _RWPly.delete_RWPly_ConfigurationNode

# Register RWPly_ConfigurationNode in _RWPly:
_RWPly.RWPly_ConfigurationNode_swigregister(RWPly_ConfigurationNode)
class RWPly_PlyWriterContext(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"""
        Return
        -------
        None

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

        """
        _RWPly.RWPly_PlyWriterContext_swiginit(self, _RWPly.new_RWPly_PlyWriterContext(*args))

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

        Parameters
        ----------
        theIsAborted: bool (optional, default to false)

        Return
        -------
        bool

        Description
        -----------
        Correctly close the file. return false in case of writing error.

        """
        return _RWPly.RWPly_PlyWriterContext_Close(self, *args)

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

        Description
        -----------
        Return true if point colors should be written as vertex attribute; false by default.

        """
        return _RWPly.RWPly_PlyWriterContext_HasColors(self, *args)

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

        Description
        -----------
        Return true if normals should be written as vertex attribute; false by default.

        """
        return _RWPly.RWPly_PlyWriterContext_HasNormals(self, *args)

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

        Description
        -----------
        Return true if surface id should be written as element attribute; false by default.

        """
        return _RWPly.RWPly_PlyWriterContext_HasSurfaceId(self, *args)

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

        Description
        -----------
        Return true if uv / texture coordinates should be written as vertex attribute; false by default.

        """
        return _RWPly.RWPly_PlyWriterContext_HasTexCoords(self, *args)

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

        Description
        -----------
        Return true if vertex position should be stored with double floating point precision; false by default.

        """
        return _RWPly.RWPly_PlyWriterContext_IsDoublePrecision(self, *args)

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

        Description
        -----------
        Return true if file has been opened.

        """
        return _RWPly.RWPly_PlyWriterContext_IsOpened(self, *args)

    def NbWrittenElements(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Return number of written elements.

        """
        return _RWPly.RWPly_PlyWriterContext_NbWrittenElements(self, *args)

    def NbWrittenVertices(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Return number of written vertices.

        """
        return _RWPly.RWPly_PlyWriterContext_NbWrittenVertices(self, *args)

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

        Parameters
        ----------
        theName: str
        theStream: std::shared_ptr<std::ostream> (optional, default to std::shared_ptr<std::ostream>())

        Return
        -------
        bool

        Description
        -----------
        Open file for writing.

        """
        return _RWPly.RWPly_PlyWriterContext_Open(self, *args)

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

        Parameters
        ----------
        theToWrite: bool

        Return
        -------
        None

        Description
        -----------
        Set if point colors should be written.

        """
        return _RWPly.RWPly_PlyWriterContext_SetColors(self, *args)

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

        Parameters
        ----------
        theDoublePrec: bool

        Return
        -------
        None

        Description
        -----------
        Set if vertex position should be stored with double floating point precision.

        """
        return _RWPly.RWPly_PlyWriterContext_SetDoublePrecision(self, *args)

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

        Parameters
        ----------
        theHasNormals: bool

        Return
        -------
        None

        Description
        -----------
        Set if normals should be written.

        """
        return _RWPly.RWPly_PlyWriterContext_SetNormals(self, *args)

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

        Parameters
        ----------
        theSurfId: bool

        Return
        -------
        None

        Description
        -----------
        Set if surface id should be written as element attribute; false by default.

        Parameters
        ----------
        theSurfId: int

        Return
        -------
        None

        Description
        -----------
        Set surface id to write with element.

        """
        return _RWPly.RWPly_PlyWriterContext_SetSurfaceId(self, *args)

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

        Parameters
        ----------
        theHasTexCoords: bool

        Return
        -------
        None

        Description
        -----------
        Set if uv / texture coordinates should be written.

        """
        return _RWPly.RWPly_PlyWriterContext_SetTexCoords(self, *args)

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

        Parameters
        ----------
        theOffset: int

        Return
        -------
        None

        Description
        -----------
        Set vertex offset to be applied to element indices.

        """
        return _RWPly.RWPly_PlyWriterContext_SetVertexOffset(self, *args)

    def SurfaceId(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Return surface id to write with element; 0 by default.

        """
        return _RWPly.RWPly_PlyWriterContext_SurfaceId(self, *args)

    def VertexOffset(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Return vertex offset to be applied to element indices; 0 by default.

        """
        return _RWPly.RWPly_PlyWriterContext_VertexOffset(self, *args)

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

        Parameters
        ----------
        theNbNodes: int
        theNbElems: int
        theFileInfo: TColStd_IndexedDataMapOfStringString

        Return
        -------
        bool

        Description
        -----------
        Write the header. @param[in] thenbnodes number of vertex nodes @param[in] thenbelems number of mesh elements @param[in] thefileinfo optional comments.

        """
        return _RWPly.RWPly_PlyWriterContext_WriteHeader(self, *args)

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

        Parameters
        ----------
        theQuad: Graphic3d_Vec4i

        Return
        -------
        bool

        Description
        -----------
        Writing a quad.

        """
        return _RWPly.RWPly_PlyWriterContext_WriteQuad(self, *args)

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

        Parameters
        ----------
        theTri: Graphic3d_Vec3i

        Return
        -------
        bool

        Description
        -----------
        Writing a triangle.

        """
        return _RWPly.RWPly_PlyWriterContext_WriteTriangle(self, *args)

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

        Parameters
        ----------
        thePoint: gp_Pnt
        theNorm: Graphic3d_Vec3
        theUV: Graphic3d_Vec2
        theColor: Graphic3d_Vec4ub

        Return
        -------
        bool

        Description
        -----------
        Write single point with all attributes. @param[in] thepoint 3d point coordinates @param[in] thenorm surface normal direction at the point @param[in] theuv surface/texture uv coordinates @param[in] thecolor rgb color values.

        """
        return _RWPly.RWPly_PlyWriterContext_WriteVertex(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _RWPly.delete_RWPly_PlyWriterContext

# Register RWPly_PlyWriterContext in _RWPly:
_RWPly.RWPly_PlyWriterContext_swigregister(RWPly_PlyWriterContext)
class RWPly_Provider(OCC.Core.DE.DE_Provider):
    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
        -----------
        Default constructor configure translation process with global configuration.

        Parameters
        ----------
        theNode: DE_ConfigurationNode

        Return
        -------
        None

        Description
        -----------
        Configure translation process @param[in] thenode object to copy.

        """
        _RWPly.RWPly_Provider_swiginit(self, _RWPly.new_RWPly_Provider(*args))

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

        Parameters
        ----------
        thePath: str
        theDocument: TDocStd_Document
        theWS: XSControl_WorkSession
        theProgress: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        bool

        Description
        -----------
        Writes a cad file, according internal configuration @param[in] thepath path to the export cad file @param[out] thedocument document to export @param[in] thews current work session @param theprogress[in] progress indicator return true if write operation has ended correctly.

        Parameters
        ----------
        thePath: str
        theDocument: TDocStd_Document
        theProgress: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        bool

        Description
        -----------
        Writes a cad file, according internal configuration @param[in] thepath path to the export cad file @param[out] thedocument document to export @param theprogress[in] progress indicator return true if write operation has ended correctly.

        Parameters
        ----------
        thePath: str
        theShape: TopoDS_Shape
        theWS: XSControl_WorkSession
        theProgress: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        bool

        Description
        -----------
        Writes a cad file, according internal configuration @param[in] thepath path to the export cad file @param[out] theshape shape to export @param[in] thews current work session @param theprogress[in] progress indicator return true if write operation has ended correctly.

        Parameters
        ----------
        thePath: str
        theShape: TopoDS_Shape
        theProgress: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        bool

        Description
        -----------
        Writes a cad file, according internal configuration @param[in] thepath path to the export cad file @param[out] theshape shape to export @param theprogress[in] progress indicator return true if write operation has ended correctly.

        """
        return _RWPly.RWPly_Provider_Write(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _RWPly.delete_RWPly_Provider

# Register RWPly_Provider in _RWPly:
_RWPly.RWPly_Provider_swigregister(RWPly_Provider)



