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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _RWObj:
_RWObj.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 _RWObj.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.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.Poly
import OCC.Core.gp
import OCC.Core.TColgp
import OCC.Core.Bnd
import OCC.Core.BVH
import OCC.Core.TShort
import OCC.Core.RWMesh
import OCC.Core.TDF
import OCC.Core.TDocStd
import OCC.Core.CDF
import OCC.Core.CDM
import OCC.Core.Resource
import OCC.Core.PCDM
import OCC.Core.Storage
import OCC.Core.TopoDS
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.Graphic3d
import OCC.Core.Quantity
import OCC.Core.Aspect
import OCC.Core.Image
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.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 *

RWObj_SubMeshReason_NewObject = _RWObj.RWObj_SubMeshReason_NewObject
RWObj_SubMeshReason_NewGroup = _RWObj.RWObj_SubMeshReason_NewGroup
RWObj_SubMeshReason_NewMaterial = _RWObj.RWObj_SubMeshReason_NewMaterial
RWObj_SubMeshReason_NewSmoothGroup = _RWObj.RWObj_SubMeshReason_NewSmoothGroup


class RWObj_SubMeshReason(IntEnum):
	RWObj_SubMeshReason_NewObject = 0
	RWObj_SubMeshReason_NewGroup = 1
	RWObj_SubMeshReason_NewMaterial = 2
	RWObj_SubMeshReason_NewSmoothGroup = 3
RWObj_SubMeshReason_NewObject = RWObj_SubMeshReason.RWObj_SubMeshReason_NewObject
RWObj_SubMeshReason_NewGroup = RWObj_SubMeshReason.RWObj_SubMeshReason_NewGroup
RWObj_SubMeshReason_NewMaterial = RWObj_SubMeshReason.RWObj_SubMeshReason_NewMaterial
RWObj_SubMeshReason_NewSmoothGroup = RWObj_SubMeshReason.RWObj_SubMeshReason_NewSmoothGroup


def Handle_RWObj_CafWriter_Create():
    return _RWObj.Handle_RWObj_CafWriter_Create()

def Handle_RWObj_CafWriter_DownCast(t):
    return _RWObj.Handle_RWObj_CafWriter_DownCast(t)

def Handle_RWObj_CafWriter_IsNull(t):
    return _RWObj.Handle_RWObj_CafWriter_IsNull(t)

def Handle_RWObj_ObjMaterialMap_Create():
    return _RWObj.Handle_RWObj_ObjMaterialMap_Create()

def Handle_RWObj_ObjMaterialMap_DownCast(t):
    return _RWObj.Handle_RWObj_ObjMaterialMap_DownCast(t)

def Handle_RWObj_ObjMaterialMap_IsNull(t):
    return _RWObj.Handle_RWObj_ObjMaterialMap_IsNull(t)

def Handle_RWObj_Reader_Create():
    return _RWObj.Handle_RWObj_Reader_Create()

def Handle_RWObj_Reader_DownCast(t):
    return _RWObj.Handle_RWObj_Reader_DownCast(t)

def Handle_RWObj_Reader_IsNull(t):
    return _RWObj.Handle_RWObj_Reader_IsNull(t)

def Handle_RWObj_CafReader_Create():
    return _RWObj.Handle_RWObj_CafReader_Create()

def Handle_RWObj_CafReader_DownCast(t):
    return _RWObj.Handle_RWObj_CafReader_DownCast(t)

def Handle_RWObj_CafReader_IsNull(t):
    return _RWObj.Handle_RWObj_CafReader_IsNull(t)

def Handle_RWObj_TriangulationReader_Create():
    return _RWObj.Handle_RWObj_TriangulationReader_Create()

def Handle_RWObj_TriangulationReader_DownCast(t):
    return _RWObj.Handle_RWObj_TriangulationReader_DownCast(t)

def Handle_RWObj_TriangulationReader_IsNull(t):
    return _RWObj.Handle_RWObj_TriangulationReader_IsNull(t)
class rwobj(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def ReadFile(*args):
        r"""

        Parameters
        ----------
        theFile: str
        aProgress: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        opencascade::handle<Poly_Triangulation>

        Description
        -----------
        Read specified obj file and returns its content as triangulation. in case of error, returns null handle.

        """
        return _RWObj.rwobj_ReadFile(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _RWObj.rwobj_swiginit(self, _RWObj.new_rwobj())
    __swig_destroy__ = _RWObj.delete_rwobj

# Register rwobj in _RWObj:
_RWObj.rwobj_swigregister(rwobj)
class RWObj_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 thefile [in] path to output obj file.

        """
        _RWObj.RWObj_CafWriter_swiginit(self, _RWObj.new_RWObj_CafWriter(*args))

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

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

        """
        return _RWObj.RWObj_CafWriter_ChangeCoordinateSystemConverter(self, *args)

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

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

        """
        return _RWObj.RWObj_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 _RWObj.RWObj_CafWriter_DefaultStyle(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 obj file and associated mtl material file. triangulation data should be precomputed within shapes! @param thedocument [in] input document @param therootlabels [in] list of root shapes to export @param thelabelfilter [in] 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 thefileinfo [in] map with file metadata to put into obj header section @param theprogress [in] optional progress indicator return false on file writing failure.

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

        Return
        -------
        bool

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

        """
        return _RWObj.RWObj_CafWriter_Perform(self, *args)

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

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

        Return
        -------
        None

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

        """
        return _RWObj.RWObj_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 _RWObj.RWObj_CafWriter_SetDefaultStyle(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_CafWriter

# Register RWObj_CafWriter in _RWObj:
_RWObj.RWObj_CafWriter_swigregister(RWObj_CafWriter)
class RWObj_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(_RWObj.RWObj_ConfigurationNode_InternalParameters_get, _RWObj.RWObj_ConfigurationNode_InternalParameters_set)

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

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

        Parameters
        ----------
        theNode: RWObj_ConfigurationNode

        Return
        -------
        None

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

        """
        _RWObj.RWObj_ConfigurationNode_swiginit(self, _RWObj.new_RWObj_ConfigurationNode(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_ConfigurationNode

# Register RWObj_ConfigurationNode in _RWObj:
_RWObj.RWObj_ConfigurationNode_swigregister(RWObj_ConfigurationNode)
class RWObj_IShapeReceiver(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")
    __repr__ = _swig_repr

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

        Parameters
        ----------
        theShape: TopoDS_Shape
        theName: str
        theMaterial: RWObj_Material *
        theIsRootShape: bool

        Return
        -------
        None

        Description
        -----------
        @param theshape shape to register @param thename shape name @param thematerial shape material @param theisrootshape indicates that this is a root object (free shape).

        """
        return _RWObj.RWObj_IShapeReceiver_BindNamedShape(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_IShapeReceiver

# Register RWObj_IShapeReceiver in _RWObj:
_RWObj.RWObj_IShapeReceiver_swigregister(RWObj_IShapeReceiver)
class RWObj_Material(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Name = property(_RWObj.RWObj_Material_Name_get, _RWObj.RWObj_Material_Name_set)
    DiffuseTexture = property(_RWObj.RWObj_Material_DiffuseTexture_get, _RWObj.RWObj_Material_DiffuseTexture_set)
    SpecularTexture = property(_RWObj.RWObj_Material_SpecularTexture_get, _RWObj.RWObj_Material_SpecularTexture_set)
    BumpTexture = property(_RWObj.RWObj_Material_BumpTexture_get, _RWObj.RWObj_Material_BumpTexture_set)
    AmbientColor = property(_RWObj.RWObj_Material_AmbientColor_get, _RWObj.RWObj_Material_AmbientColor_set)
    DiffuseColor = property(_RWObj.RWObj_Material_DiffuseColor_get, _RWObj.RWObj_Material_DiffuseColor_set)
    SpecularColor = property(_RWObj.RWObj_Material_SpecularColor_get, _RWObj.RWObj_Material_SpecularColor_set)
    Shininess = property(_RWObj.RWObj_Material_Shininess_get, _RWObj.RWObj_Material_Shininess_set)
    Transparency = property(_RWObj.RWObj_Material_Transparency_get, _RWObj.RWObj_Material_Transparency_set)

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

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

        """
        _RWObj.RWObj_Material_swiginit(self, _RWObj.new_RWObj_Material(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_Material

# Register RWObj_Material in _RWObj:
_RWObj.RWObj_Material_swigregister(RWObj_Material)
class RWObj_ObjMaterialMap(OCC.Core.RWMesh.RWMesh_MaterialMap):
    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.

        """
        _RWObj.RWObj_ObjMaterialMap_swiginit(self, _RWObj.new_RWObj_ObjMaterialMap(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_ObjMaterialMap

# Register RWObj_ObjMaterialMap in _RWObj:
_RWObj.RWObj_ObjMaterialMap_swigregister(RWObj_ObjMaterialMap)
class RWObj_ObjWriterContext(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    NbFaces = property(_RWObj.RWObj_ObjWriterContext_NbFaces_get, _RWObj.RWObj_ObjWriterContext_NbFaces_set)

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

        Parameters
        ----------
        theName: str

        Return
        -------
        None

        Description
        -----------
        Main constructor.

        """
        _RWObj.RWObj_ObjWriterContext_swiginit(self, _RWObj.new_RWObj_ObjWriterContext(*args))

    def ActiveMaterial(self, *args):
        r"""
        Return
        -------
        TCollection_AsciiString

        Description
        -----------
        Return active material or empty string if not set.

        """
        return _RWObj.RWObj_ObjWriterContext_ActiveMaterial(self, *args)

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

        Description
        -----------
        Correctly close the file.

        """
        return _RWObj.RWObj_ObjWriterContext_Close(self, *args)

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

        Parameters
        ----------
        theNbNodes: int

        Return
        -------
        None

        Description
        -----------
        Increment indices shift.

        """
        return _RWObj.RWObj_ObjWriterContext_FlushFace(self, *args)

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

        Description
        -----------
        Return true if normals are defined.

        """
        return _RWObj.RWObj_ObjWriterContext_HasNormals(self, *args)

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

        Description
        -----------
        Return true if normals are defined.

        """
        return _RWObj.RWObj_ObjWriterContext_HasTexCoords(self, *args)

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

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

        """
        return _RWObj.RWObj_ObjWriterContext_IsOpened(self, *args)

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

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

        Return
        -------
        None

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

        """
        return _RWObj.RWObj_ObjWriterContext_SetNormals(self, *args)

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

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

        Return
        -------
        None

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

        """
        return _RWObj.RWObj_ObjWriterContext_SetTexCoords(self, *args)

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

        Parameters
        ----------
        theMaterial: str

        Return
        -------
        bool

        Description
        -----------
        Set active material.

        """
        return _RWObj.RWObj_ObjWriterContext_WriteActiveMaterial(self, *args)

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

        Parameters
        ----------
        theValue: str

        Return
        -------
        bool

        Description
        -----------
        Writing a group name.

        """
        return _RWObj.RWObj_ObjWriterContext_WriteGroup(self, *args)

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

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

        Return
        -------
        bool

        Description
        -----------
        Write the header.

        """
        return _RWObj.RWObj_ObjWriterContext_WriteHeader(self, *args)

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

        Parameters
        ----------
        theValue: Graphic3d_Vec3

        Return
        -------
        bool

        Description
        -----------
        Writing a vector.

        """
        return _RWObj.RWObj_ObjWriterContext_WriteNormal(self, *args)

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

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

        Return
        -------
        bool

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

        """
        return _RWObj.RWObj_ObjWriterContext_WriteQuad(self, *args)

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

        Parameters
        ----------
        theValue: Graphic3d_Vec2

        Return
        -------
        bool

        Description
        -----------
        Writing a vector.

        """
        return _RWObj.RWObj_ObjWriterContext_WriteTexCoord(self, *args)

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

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

        Return
        -------
        bool

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

        """
        return _RWObj.RWObj_ObjWriterContext_WriteTriangle(self, *args)

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

        Parameters
        ----------
        theValue: Graphic3d_Vec3

        Return
        -------
        bool

        Description
        -----------
        Writing a vector.

        """
        return _RWObj.RWObj_ObjWriterContext_WriteVertex(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_ObjWriterContext

# Register RWObj_ObjWriterContext in _RWObj:
_RWObj.RWObj_ObjWriterContext_swigregister(RWObj_ObjWriterContext)
class RWObj_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.

        """
        _RWObj.RWObj_Provider_swiginit(self, _RWObj.new_RWObj_Provider(*args))

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

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

        Return
        -------
        bool

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

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

        Return
        -------
        bool

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

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

        Return
        -------
        bool

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

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

        Return
        -------
        bool

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

        """
        return _RWObj.RWObj_Provider_Read(self, *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 _RWObj.RWObj_Provider_Write(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_Provider

# Register RWObj_Provider in _RWObj:
_RWObj.RWObj_Provider_swigregister(RWObj_Provider)
class RWObj_Reader(OCC.Core.Standard.Standard_Transient):
    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 ExternalFiles(self, *args):
        r"""
        Return
        -------
        NCollection_IndexedMap<TCollection_AsciiString>

        Description
        -----------
        Return the list of external file references.

        """
        return _RWObj.RWObj_Reader_ExternalFiles(self, *args)

    def FileComments(self, *args):
        r"""
        Return
        -------
        TCollection_AsciiString

        Description
        -----------
        Returns file comments (lines starting with # at the beginning of file).

        """
        return _RWObj.RWObj_Reader_FileComments(self, *args)

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

        Description
        -----------
        Return single precision flag for reading vertex data (coordinates); false by default.

        """
        return _RWObj.RWObj_Reader_IsSinglePrecision(self, *args)

    def MemoryLimit(self, *args):
        r"""
        Return
        -------
        Standard_Size

        Description
        -----------
        Returns memory limit in bytes; -1 (no limit) by default.

        """
        return _RWObj.RWObj_Reader_MemoryLimit(self, *args)

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

        Description
        -----------
        //!< number of probed polygon elements (of unknown size).

        """
        return _RWObj.RWObj_Reader_NbProbeElems(self, *args)

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

        Description
        -----------
        Number of probed nodes.

        """
        return _RWObj.RWObj_Reader_NbProbeNodes(self, *args)

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

        Parameters
        ----------
        theFile: str
        theProgress: Message_ProgressRange

        Return
        -------
        bool

        Description
        -----------
        Probe data from obj file (comments, external references) without actually reading mesh data. although mesh data will not be collected, the full file content will be parsed, due to obj format limitations. @param thefile path to the file @param theprogress progress indicator return true if success, false on error or user break. @sa filecomments(), externalfiles(), nbprobenodes(), nbprobeelems().

        """
        return _RWObj.RWObj_Reader_Probe(self, *args)

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

        Parameters
        ----------
        theFile: str
        theProgress: Message_ProgressRange

        Return
        -------
        bool

        Description
        -----------
        Reads data from obj file. unicode paths can be given in utf-8 encoding. returns true if success, false on error or user break.

        """
        return _RWObj.RWObj_Reader_Read(self, *args)

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

        Parameters
        ----------
        theMemLimit: Standard_Size

        Return
        -------
        None

        Description
        -----------
        Specify memory limit in bytes, so that import will be aborted by specified limit before memory allocation error occurs.

        """
        return _RWObj.RWObj_Reader_SetMemoryLimit(self, *args)

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

        Parameters
        ----------
        theIsSinglePrecision: bool

        Return
        -------
        None

        Description
        -----------
        Setup single/double precision flag for reading vertex data (coordinates).

        """
        return _RWObj.RWObj_Reader_SetSinglePrecision(self, *args)

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

        Parameters
        ----------
        theCSConverter: RWMesh_CoordinateSystemConverter

        Return
        -------
        None

        Description
        -----------
        Setup transformation from one coordinate system to another. obj file might be exported following various coordinate system conventions, so that it might be useful automatically transform data during file reading.

        """
        return _RWObj.RWObj_Reader_SetTransformation(self, *args)

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

        Description
        -----------
        Return transformation from one coordinate system to another; no transformation by default.

        """
        return _RWObj.RWObj_Reader_Transformation(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_Reader

# Register RWObj_Reader in _RWObj:
_RWObj.RWObj_Reader_swigregister(RWObj_Reader)
class RWObj_SubMesh(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Object = property(_RWObj.RWObj_SubMesh_Object_get, _RWObj.RWObj_SubMesh_Object_set)
    Group = property(_RWObj.RWObj_SubMesh_Group_get, _RWObj.RWObj_SubMesh_Group_set)
    SmoothGroup = property(_RWObj.RWObj_SubMesh_SmoothGroup_get, _RWObj.RWObj_SubMesh_SmoothGroup_set)
    Material = property(_RWObj.RWObj_SubMesh_Material_get, _RWObj.RWObj_SubMesh_Material_set)

    __repr__ = _dumps_object


    def __init__(self):
        _RWObj.RWObj_SubMesh_swiginit(self, _RWObj.new_RWObj_SubMesh())
    __swig_destroy__ = _RWObj.delete_RWObj_SubMesh

# Register RWObj_SubMesh in _RWObj:
_RWObj.RWObj_SubMesh_swigregister(RWObj_SubMesh)
class RWObj_CafReader(OCC.Core.RWMesh.RWMesh_CafReader):
    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.

        """
        _RWObj.RWObj_CafReader_swiginit(self, _RWObj.new_RWObj_CafReader(*args))

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

        Description
        -----------
        Return single precision flag for reading vertex data (coordinates); false by default.

        """
        return _RWObj.RWObj_CafReader_IsSinglePrecision(self, *args)

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

        Parameters
        ----------
        theIsSinglePrecision: bool

        Return
        -------
        None

        Description
        -----------
        Setup single/double precision flag for reading vertex data (coordinates).

        """
        return _RWObj.RWObj_CafReader_SetSinglePrecision(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_CafReader

# Register RWObj_CafReader in _RWObj:
_RWObj.RWObj_CafReader_swigregister(RWObj_CafReader)
class RWObj_TriangulationReader(RWObj_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"""
        Return
        -------
        None

        Description
        -----------
        Constructor.

        """
        _RWObj.RWObj_TriangulationReader_swiginit(self, _RWObj.new_RWObj_TriangulationReader(*args))

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

        Description
        -----------
        Create poly_triangulation from collected data.

        """
        return _RWObj.RWObj_TriangulationReader_GetTriangulation(self, *args)

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

        Description
        -----------
        Return result shape.

        """
        return _RWObj.RWObj_TriangulationReader_ResultShape(self, *args)

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

        Parameters
        ----------
        theToCreateShapes: bool

        Return
        -------
        None

        Description
        -----------
        Set flag to create shapes.

        """
        return _RWObj.RWObj_TriangulationReader_SetCreateShapes(self, *args)

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

        Parameters
        ----------
        theReceiver: RWObj_IShapeReceiver *

        Return
        -------
        None

        Description
        -----------
        Set shape receiver callback.

        """
        return _RWObj.RWObj_TriangulationReader_SetShapeReceiver(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _RWObj.delete_RWObj_TriangulationReader

# Register RWObj_TriangulationReader in _RWObj:
_RWObj.RWObj_TriangulationReader_swigregister(RWObj_TriangulationReader)

@classnotwrapped
class RWObj_MtlReader:
	pass





@deprecated
def rwobj_ReadFile(*args):
	return rwobj.ReadFile(*args)



