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