Thanks!  The first example seemed a bit overkill which is why I asked the 
question, but the second example is exactly what I need (Except I'm not on the 
trunk):

# make sure Mayatomr plugin is loaded ore the Mib_amb_occlusion might not exist
loadPlugin('Mayatomr')
class Mib_amb_occlusion(Mib_amb_occlusion):
    """This is an example of how to replace a node.  Use this technique with 
care"""
    def occlude(self):
        print "occluding!"

# the callback always returns True, so we always replace the default with our 
own.
Mib_amb_occlusion.registerVirtualSubClass( lambda *args: True, 
nameRequired=False )
    
def testMib():
    n = createNode('mib_amb_occlusion')
    n.occlude()

But, I get the following error:
# Error: AttributeError: file 
/Applications/Autodesk/maya2011/Maya.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python2.6/site-packages/pymel/core/general.py
 line 53: type object 'Mib_amb_occlusion' has no attribute '_isVirtual' #

I'm running the version of pcl that comes with 2011.  I assume there have been 
a bunch of changes since then that has made this process easier, not requiring 
_isVirtual to be defined or in the trunks case a callback to be specified?  Can 
I accomplish the same task of replacing the mental ray node with the version of 
pcl that comes with Maya2011?

Thanks,
Justin


On Oct 31, 2011, at 11:53 PM, Justin Israel wrote:

> This seems to be a really straight forward example located here:
> http://pymel.googlecode.com/svn/trunk/examples/customClasses.py
> 
> It outlines how to subclass, and what class methods must be provided. I 
> believe the use of the id attribute is for the validation test function, in 
> order to determine if the incoming object type is the right kind. In this 
> case they use the joint id attribute from the original Joint class to check. 
> If its a joint then allow this subclass to be returned. Technically you could 
> perform any test you see fit as long as you stick to the api to do it and not 
> pymel calls. 
> 
> 
> 
> 
> On Oct 31, 2011, at 7:51 PM, Justin <[email protected]> wrote:
> 
>> Hey all, It's been a super long time since I've been on this list!
>> 
>> I was wondering if I could get a quick example on how to accomplish a simple 
>> wrapping of a pymel node as described here:
>> http://code.google.com/p/pymel/issues/detail?id=62
>> 
>> allow users to add their own methods to any node. users can now easily 
>> import pymel and then subclass nodes to do what they like, but perhaps 
>> there's a way to register these user subclass modules to be loaded by pymel, 
>> such that they are found within the pymel namespace.
>> 
>> 
>> 
>> import pymel.core as pm
>> 
>> # Load plugin
>> pm.loadPlugin('pointless')
>> 
>> # Print Node Type
>> print pm.nt.PointlessViewer
>> 
>> How would I subclass this and add my own methods?
>> 
>> class PointlessViewerNode(pm.nt.PointlessViewer):
>>   def myMethod(self):
>>       # Do something with my node
>>       pass
>> 
>> Do I have to follow the example under pymel.examples.customClasses.py?  
>> Where an extra attribute is added, ie cls._PointlessClassID?  I'm not sure I 
>> need this extra attribute, I just want to add additional methods to the 
>> existing pymel node returned when creating nodes.
>> 
>> viewer = pm.createNode('pointlessViewer')
>> viewer.myMethod()
>> 
>> 
>> Thanks,
>> Justin
>> 
>> 
>> 
>> 
>> -- 
>> view archives: http://groups.google.com/group/python_inside_maya
>> change your subscription settings: 
>> http://groups.google.com/group/python_inside_maya/subscribe
> 
> -- 
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings: 
> http://groups.google.com/group/python_inside_maya/subscribe

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to