customNodeFileTranslator.py

#-
# ==========================================================================
# Copyright (C) 1995 - 2006 Autodesk, Inc. and/or its licensors.  All 
# rights reserved.
#
# The coded instructions, statements, computer programs, and/or related 
# material (collectively the "Data") in these files contain unpublished 
# information proprietary to Autodesk, Inc. ("Autodesk") and/or its 
# licensors, which is protected by U.S. and Canadian federal copyright 
# law and by international treaties.
#
# The Data is provided for use exclusively by You. You have the right 
# to use, modify, and incorporate this Data into other products for 
# purposes authorized by the Autodesk software license agreement, 
# without fee.
#
# The copyright notices in the Software and this entire statement, 
# including the above license grant, this restriction and the 
# following disclaimer, must be included in all copies of the 
# Software, in whole or in part, and all derivative works of 
# the Software, unless such copies or derivative works are solely 
# in the form of machine-executable object code generated by a 
# source language processor.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. 
# AUTODESK DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED 
# WARRANTIES INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES OF 
# NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 
# PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE, OR 
# TRADE PRACTICE. IN NO EVENT WILL AUTODESK AND/OR ITS LICENSORS 
# BE LIABLE FOR ANY LOST REVENUES, DATA, OR PROFITS, OR SPECIAL, 
# DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES, EVEN IF AUTODESK 
# AND/OR ITS LICENSORS HAS BEEN ADVISED OF THE POSSIBILITY 
# OR PROBABILITY OF SUCH DAMAGES.
#
# ==========================================================================
#+

# import maya
# maya.cmds.loadPlugin("customNodeFileTranslator.py")

import math, sys

import maya.OpenMaya as OpenMaya
import maya.OpenMayaMPx as OpenMayaMPx

kPluginTranslatorTypeName = "spCustomNodeTranslator"

# Node definition
class customNodeTranslator(OpenMayaMPx.MPxFileTranslator):
        def __init__(self):
                OpenMayaMPx.MPxFileTranslator.__init__(self)
        def haveWriteMethod(self):
                return True
        def haveReadMethod(self):
                return True
        def filter(self):
                return "*.spcnt"
        def defaultExtension(self):
                return "spcnt"
        def writer( self, fileObject, optionString, accessMode ):
                #
                try:
                        fullName = fileObject.fullName()
                        fileHandle = open(fullName,"w")
                        fileHandle.write("# Simple text file of custom node information\n")

                        iterator=OpenMaya.MItDependencyNodes()
                        while not iterator.isDone():
                                object = iterator.thisNode()
                                #
                                try:
                                        dnFn = OpenMaya.MFnDependencyNode( object )
                                        userNode = dnFn.userNode()
                                        if ( not( userNode == None ) ):
                                                line = "# custom node: " + dnFn.name() + "\n"
                                                fileHandle.write(line)
                                except:
                                        pass
                                iterator.next()
                        fileHandle.close()
                except:
                        sys.stderr.write( "Failed to write file information\n")
                        raise
        def processLine( self, lineStr ):
                # Normally do parsing here.  Simple example will only
                # print out the line.
                print "read <%s>" % lineStr
        def reader( self, fileObject, optionString, accessMode ):
                #
                try:
                        fullName = fileObject.fullName()
                        fileHandle = open(fullName,"r")
                        for line in fileHandle:
                                # print line
                                self.processLine( line )
                                # print "1"
                        fileHandle.close()
                except:
                        sys.stderr.write( "Failed to read file information\n")
                        raise


# creator
def translatorCreator():
        return OpenMayaMPx.asMPxPtr( customNodeTranslator() )

# initialize the script plug-in
def initializePlugin(mobject):
        mplugin = OpenMayaMPx.MFnPlugin(mobject)
        try:
                mplugin.registerFileTranslator( kPluginTranslatorTypeName, None, translatorCreator )
        except:
                sys.stderr.write( "Failed to register translator: %s" % kPluginTranslatorTypeName )
                raise

# uninitialize the script plug-in
def uninitializePlugin(mobject):
        mplugin = OpenMayaMPx.MFnPlugin(mobject)
        try:
                mplugin.deregisterFileTranslator( kPluginTranslatorTypeName )
        except:
                sys.stderr.write( "Failed to deregister translator: %s" % kPluginTranslatorTypeName )
                raise
        

Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. Generated with doxygen 1.5.6