Make an exporter

From DreamsteepWiki

Jump to: navigation, search

EXPORTER (FILE->LOAD/SAVE MENU)

import math, sys
import maya.OpenMaya as OpenMaya
import maya.OpenMayaMPx as OpenMayaMPx

kPluginTranslatorTypeName = "sma_hougeo"


# 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
Personal tools