45 import maya.OpenMaya
as OpenMaya
46 import maya.OpenMayaMPx
as OpenMayaMPx
48 kPluginName =
"spBlindDoubleData"
49 kPluginDataId = OpenMaya.MTypeId(0x87011)
57 stream=OpenMaya.MStreamUtils.stdOutStream()
58 OpenMaya.MStreamUtils.writeCharBuffer(stream,msg)
61 class blindDoubleData(OpenMayaMPx.MPxData):
63 OpenMayaMPx.MPxData.__init__(self)
65 fValueDictionary[OpenMayaMPx.asHashable(self)]=self.__fValue
67 def readASCII(self, args, lastParsedElement):
70 parsedIndex = OpenMaya.MScriptUtil.getUint(lastParsedElement)
71 self.__fValue = args.asDouble( parsedIndex )
73 OpenMaya.MScriptUtil.setUint(lastParsedElement,parsedIndex)
74 fValueDictionary[OpenMayaMPx.asHashable(self)]=self.__fValue
76 sys.stderr.write(
"Failed to read ASCII value.")
79 def readBinary(self, inStream, length):
80 readParam = OpenMaya.MScriptUtil(0.0)
81 readPtr = readParam.asDoublePtr()
82 OpenMaya.MStreamUtils.readDouble(inStream, readPtr,
True )
83 self.__fValue = readParam.getDouble(readPtr)
85 def writeASCII(self, out):
87 OpenMaya.MStreamUtils.writeDouble(out, self.__fValue,
False)
89 sys.stderr.write(
"Failed to write ASCII value.")
92 def writeBinary(self, out):
94 OpenMaya.MStreamUtils.writeDouble(out, self.__fValue,
True)
96 sys.stderr.write(
"Failed to write binary value.")
99 def copy(self, other):
102 self.__fValue = fValueDictionary[OpenMayaMPx.asHashable(other)]
113 def setValue(self, newVal):
114 self.__fValue = newVal
117 class blindDoubleDataCmd(OpenMayaMPx.MPxCommand):
119 OpenMayaMPx.MPxCommand.__init__(self)
122 def doIt(self, args):
123 selList = OpenMaya.MSelectionList()
124 OpenMaya.MGlobal.getActiveSelectionList(selList)
125 self.__iter = OpenMaya.MItSelectionList(selList)
129 dependNode = OpenMaya.MObject()
132 sys.stderr.write(err)
137 while not self.__iter.isDone():
142 self.__iter.getDependNode(dependNode)
144 error(
"Error getting the dependency node")
148 fnDN = OpenMaya.MFnDependencyNode(dependNode)
150 error(
"Error creating MFnDependencyNode")
155 fnAttr = OpenMaya.MFnTypedAttribute()
156 newAttr = fnAttr.create(
"blindDoubleData",
"BDD", kPluginDataId)
160 fnDN.addAttribute(newAttr, OpenMaya.MFnDependencyNode.kLocalDynamicAttr)
164 plug = OpenMaya.MPlug(dependNode, newAttr)
168 newData = OpenMayaMPx.asMPxPtr(blindDoubleData())
169 newData.setValue(3.2)
173 plug.setMPxData(newData)
178 sData = plug.asMObject()
180 error(
"Error getting value off plug")
185 pdFn = OpenMaya.MFnPluginData(sData)
186 data = pdFn.constData()
191 error(
"Error: failed to retrieve data.")
199 def isUndoable(self):
208 return OpenMayaMPx.asMPxPtr(blindDoubleDataCmd())
211 return OpenMayaMPx.asMPxPtr(blindDoubleData())
214 def initializePlugin(mobject):
215 mplugin = OpenMayaMPx.MFnPlugin(mobject,
"Autodesk",
"1.0",
"Any")
217 mplugin.registerData(kPluginName, kPluginDataId, dataCreator)
219 sys.stderr.write(
"Failed to register new data type: %s\n" % kPluginName)
223 mplugin.registerCommand(kPluginName, cmdCreator)
225 sys.stderr.write(
"Failed to register command: %s\n" % kPluginName)
230 def uninitializePlugin(mobject):
231 mplugin = OpenMayaMPx.MFnPlugin(mobject)
233 mplugin.deregisterCommand(kPluginName)
235 sys.stderr.write(
"Failed to unregister command: %s\n" % kPluginName)
239 mplugin.deregisterData(kPluginDataId)
241 sys.stderr.write(
"Failed to unregister data type: %s\n" % kPluginName)