# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.4.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://dev.opencascade.org/doc/occt-7.9.0/refman/html/package_rwobj.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __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)

import warnings
from OCC.Wrapper.wrapper_utils import Proxy, deprecated

class ios_base(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
    erase_event = _RWObj.ios_base_erase_event
    imbue_event = _RWObj.ios_base_imbue_event
    copyfmt_event = _RWObj.ios_base_copyfmt_event

    def register_callback(self, __fn, __index):
        return _RWObj.ios_base_register_callback(self, __fn, __index)

    def flags(self, *args):
        return _RWObj.ios_base_flags(self, *args)

    def setf(self, *args):
        return _RWObj.ios_base_setf(self, *args)

    def unsetf(self, __mask):
        return _RWObj.ios_base_unsetf(self, __mask)

    def precision(self, *args):
        return _RWObj.ios_base_precision(self, *args)

    def width(self, *args):
        return _RWObj.ios_base_width(self, *args)

    @staticmethod
    def sync_with_stdio(__sync=True):
        return _RWObj.ios_base_sync_with_stdio(__sync)

    def imbue(self, __loc):
        return _RWObj.ios_base_imbue(self, __loc)

    def getloc(self):
        return _RWObj.ios_base_getloc(self)

    @staticmethod
    def xalloc():
        return _RWObj.ios_base_xalloc()

    def iword(self, __ix):
        return _RWObj.ios_base_iword(self, __ix)

    def pword(self, __ix):
        return _RWObj.ios_base_pword(self, __ix)
    __swig_destroy__ = _RWObj.delete_ios_base

# Register ios_base in _RWObj:
_RWObj.ios_base_swigregister(ios_base)
cvar = _RWObj.cvar
ios_base.boolalpha = _RWObj.cvar.ios_base_boolalpha
ios_base.dec = _RWObj.cvar.ios_base_dec
ios_base.fixed = _RWObj.cvar.ios_base_fixed
ios_base.hex = _RWObj.cvar.ios_base_hex
ios_base.internal = _RWObj.cvar.ios_base_internal
ios_base.left = _RWObj.cvar.ios_base_left
ios_base.oct = _RWObj.cvar.ios_base_oct
ios_base.right = _RWObj.cvar.ios_base_right
ios_base.scientific = _RWObj.cvar.ios_base_scientific
ios_base.showbase = _RWObj.cvar.ios_base_showbase
ios_base.showpoint = _RWObj.cvar.ios_base_showpoint
ios_base.showpos = _RWObj.cvar.ios_base_showpos
ios_base.skipws = _RWObj.cvar.ios_base_skipws
ios_base.unitbuf = _RWObj.cvar.ios_base_unitbuf
ios_base.uppercase = _RWObj.cvar.ios_base_uppercase
ios_base.adjustfield = _RWObj.cvar.ios_base_adjustfield
ios_base.basefield = _RWObj.cvar.ios_base_basefield
ios_base.floatfield = _RWObj.cvar.ios_base_floatfield
ios_base.badbit = _RWObj.cvar.ios_base_badbit
ios_base.eofbit = _RWObj.cvar.ios_base_eofbit
ios_base.failbit = _RWObj.cvar.ios_base_failbit
ios_base.goodbit = _RWObj.cvar.ios_base_goodbit
ios_base.app = _RWObj.cvar.ios_base_app
ios_base.ate = _RWObj.cvar.ios_base_ate
ios_base.binary = _RWObj.cvar.ios_base_binary
ios_base.ios_base_in = _RWObj.cvar.ios_base_ios_base_in
ios_base.out = _RWObj.cvar.ios_base_out
ios_base.trunc = _RWObj.cvar.ios_base_trunc
ios_base.beg = _RWObj.cvar.ios_base_beg
ios_base.cur = _RWObj.cvar.ios_base_cur
ios_base.end = _RWObj.cvar.ios_base_end

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

    def rdstate(self):
        return _RWObj.ios_rdstate(self)

    def clear(self, *args):
        return _RWObj.ios_clear(self, *args)

    def setstate(self, __state):
        return _RWObj.ios_setstate(self, __state)

    def good(self):
        return _RWObj.ios_good(self)

    def eof(self):
        return _RWObj.ios_eof(self)

    def fail(self):
        return _RWObj.ios_fail(self)

    def bad(self):
        return _RWObj.ios_bad(self)

    def exceptions(self, *args):
        return _RWObj.ios_exceptions(self, *args)

    def __init__(self, __sb):
        _RWObj.ios_swiginit(self, _RWObj.new_ios(__sb))
    __swig_destroy__ = _RWObj.delete_ios

    def tie(self, *args):
        return _RWObj.ios_tie(self, *args)

    def rdbuf(self, *args):
        return _RWObj.ios_rdbuf(self, *args)

    def copyfmt(self, __rhs):
        return _RWObj.ios_copyfmt(self, __rhs)

    def fill(self, *args):
        return _RWObj.ios_fill(self, *args)

    def imbue(self, __loc):
        return _RWObj.ios_imbue(self, __loc)

    def narrow(self, __c, __dfault):
        return _RWObj.ios_narrow(self, __c, __dfault)

    def widen(self, __c):
        return _RWObj.ios_widen(self, __c)

# Register ios in _RWObj:
_RWObj.ios_swigregister(ios)
class ostream(ios):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _RWObj.ostream_swiginit(self, _RWObj.new_ostream(__sb))
    __swig_destroy__ = _RWObj.delete_ostream

    def __lshift__(self, *args):
        return _RWObj.ostream___lshift__(self, *args)

    def put(self, __c):
        return _RWObj.ostream_put(self, __c)

    def write(self, __s, __n):
        return _RWObj.ostream_write(self, __s, __n)

    def flush(self):
        return _RWObj.ostream_flush(self)

    def tellp(self):
        return _RWObj.ostream_tellp(self)

    def seekp(self, *args):
        return _RWObj.ostream_seekp(self, *args)

# Register ostream in _RWObj:
_RWObj.ostream_swigregister(ostream)
class istream(ios):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _RWObj.istream_swiginit(self, _RWObj.new_istream(__sb))
    __swig_destroy__ = _RWObj.delete_istream

    def __rshift__(self, *args):
        return _RWObj.istream___rshift__(self, *args)

    def gcount(self):
        return _RWObj.istream_gcount(self)

    def get(self, *args):
        return _RWObj.istream_get(self, *args)

    def getline(self, *args):
        return _RWObj.istream_getline(self, *args)

    def ignore(self, *args):
        return _RWObj.istream_ignore(self, *args)

    def peek(self):
        return _RWObj.istream_peek(self)

    def read(self, __s, __n):
        return _RWObj.istream_read(self, __s, __n)

    def readsome(self, __s, __n):
        return _RWObj.istream_readsome(self, __s, __n)

    def putback(self, __c):
        return _RWObj.istream_putback(self, __c)

    def unget(self):
        return _RWObj.istream_unget(self)

    def sync(self):
        return _RWObj.istream_sync(self)

    def tellg(self):
        return _RWObj.istream_tellg(self)

    def seekg(self, *args):
        return _RWObj.istream_seekg(self, *args)

# Register istream in _RWObj:
_RWObj.istream_swigregister(istream)
class iostream(istream, ostream):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, __sb):
        _RWObj.iostream_swiginit(self, _RWObj.new_iostream(__sb))
    __swig_destroy__ = _RWObj.delete_iostream

# Register iostream in _RWObj:
_RWObj.iostream_swigregister(iostream)
cin = cvar.cin
cout = cvar.cout
cerr = cvar.cerr
clog = cvar.clog

endl_cb_ptr = _RWObj.endl_cb_ptr
endl = _RWObj.endl
ends_cb_ptr = _RWObj.ends_cb_ptr
ends = _RWObj.ends
flush_cb_ptr = _RWObj.flush_cb_ptr
flush = _RWObj.flush
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

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. 
        Input parameter: theFile 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! 
        Input parameter: theDocument input document 
        Input parameter: theRootLabels list of root shapes to export 
        Input parameter: 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 
        Input parameter: theFileInfo map with file metadata to put into OBJ header section 
        Input parameter: theProgress 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! 
        Input parameter: theDocument input document 
        Input parameter: theFileInfo map with file metadata to put into glTF header section 
        Input parameter: theProgress 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_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
        -----------
        Parameter theShape shape to register 
        Parameter theName shape name 
        Parameter theMaterial shape material 
        Parameter 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

    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

    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_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
        -----------
        Open stream and pass it to Probe method. 
        Parameter theFile path to the file 
        Parameter theProgress progress indicator 
        Return: True if success, False on error or user break. 
        See also: FileComments(), ExternalFiles(), NbProbeNodes(), NbProbeElems().

        Parameters
        ----------
        theStream: str
        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. 
        Parameter theStream input stream 
        Parameter theFile path to the file 
        Parameter theProgress progress indicator 
        Return: True if success, False on error or user break. 
        See also: 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
        -----------
        Open stream and pass it to Read method Returns true if success, false on error.

        Parameters
        ----------
        theStream: str
        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

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



