Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import maya.api.OpenMaya as om
- from maya import cmds
- import os
- import logging
- logger = logging.getLogger(__name__)
- cmds.file(new=True, f=1)
- cmds.polySphere()
- cmds.polySphere()
- cmds.select('pSphere1', r=1)
- class BaseComponent(object):
- def __new__(cls, *args, **kwargs):
- node = None
- if args:
- node = args[0]
- elif 'node' in kwargs:
- node = kwargs.get('node')
- if not node:
- print("NEW:NOINPUT: ", cls, args, kwargs)
- return cls.from_selection()
- elif isinstance(node, str):
- print("NEW:STR: ", cls, args, kwargs)
- obj = cls.from_string(node)
- # return super(BaseComponent, obj).__new__(cls)
- return obj
- if isinstance(node, om.MObjectHandle):
- print("NEW:HANDLE: ", cls, args, kwargs)
- obj = cls.from_mobject_handle(node)
- return obj
- if isinstance(node, om.MObject):
- print("NEW:MOB: ", cls, args, kwargs)
- return super(BaseComponent, cls).__new__(cls)
- else:
- raise ValueError('Input not supported.')
- def __init__(self, *args, **kwargs):
- node = None
- if args:
- node = args[0]
- elif 'node' in kwargs:
- node = kwargs.get('node')
- if not isinstance(node, om.MObject):
- # print(node)
- logger.warning("Supported types are selection, str, mobject_handle, mobject")
- return
- # print("INIT: ", node)#args, kwargs)
- # # Base properties
- self.name = ''
- # # Extract Component name
- node_name = om.MFnDependencyNode(node).name()
- self.name = node_name
- @classmethod
- def create(cls, *args, **kwargs):
- obj = cls.__new__(cls, *args, **kwargs)
- if isinstance(obj, cls):
- cls.__init__(obj, *args, **kwargs)
- return obj
- @classmethod
- def from_selection(cls):
- """
- Initiate BaseComponent from maya selection
- Returns
- -------
- BaseComponent
- """
- try:
- selection = cmds.ls(sl=1)[0]
- # return super(BaseComponent, cls).__new__(cls, node=selection)
- return cls.from_string(selection)
- except IndexError:
- logger.error('No node selected.')
- pass
- @classmethod
- def from_string(cls, node):
- """
- Initiate BaseComponent from str
- Parameters
- ----------
- node : str
- Node Name
- Returns
- -------
- BaseComponent
- """
- try:
- sel_list = om.MSelectionList()
- sel_list.add(node)
- mob = sel_list.getDependNode(0)
- # return super(BaseComponent, cls).__new__(cls, mob)
- return cls(mob)
- except RuntimeError:
- logger.error("Node does not exist. Component not created.")
- pass
- @classmethod
- def from_mobject_handle(cls, mob_hdl):
- mob = mob_hdl.object()
- # return super(BaseComponent, cls).__new__(cls, mob)
- return cls(mob)
- test = BaseComponent()
- if test:
- print("TEST1:SELECTION: {}{} \r\n".format(test, test.__dict__))
- else:
- print("")
- test2 = BaseComponent(node='pSphere2')
- if test2:
- print("TEST2:STR: {}{} \r\n".format(test2, test2.__dict__))
- else:
- print("")
- sel = om.MGlobal.getActiveSelectionList()
- mob = sel.getDependNode(0)
- mob_hdl = om.MObjectHandle(mob)
- test3 = BaseComponent(node=mob_hdl)
- if test3:
- print("TEST3:MOBHANDLE: {}{} \r\n".format(test3, test3.__dict__))
- else:
- print("")
- sel = om.MGlobal.getActiveSelectionList()
- mob = sel.getDependNode(0)
- test4 = BaseComponent(node=mob)
- if test4:
- print("TEST4:MOB: {}{} \r\n".format(test4, test4.__dict__))
- else:
- print("")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement