def get_node(node_name, unique_only=True, type_filter=None, verpose=False): msg = [] try: if unique_only: assert (pm.uniqueObjExists(node_name) ), "object name %s is not unique or not exist" % node_name node = pm.PyNode(node_name) if type_filter: assert (isinstance( node, type_filter)), 'node %s with %s does not exist' % ( node_name, type_filter) msg.append("%s exists, is type %s" % (node, type(node))) return node else: node = pm.ls('*%s*' % node_name, type=type_filter) msg.append("found %d object:" % (len(node))) for n in node: msg.append(node.name()) return node except pm.MayaNodeError: msg.append('node %s does not exist' % node_name) except pm.MayaAttributeError: msg.append('Attibute %s does not exist' % node_name) except AssertionError as why: msg.append(why) if verpose: print '/n'.join(msg)
def connect_neg_v(self, target_node, target_attr): if not pm.uniqueObjExists(target_node): pm.displayWarning( 'Target Node not found {} Skipping...'.format(target_node)) return if not pm.hasAttr(target_node, target_attr): pm.displayWarning( 'Target attr not found {} Skipping...'.format(target_attr)) return self.extend_neg_v() pm.connectAttr('{}.{}'.format(self.border, self.neg_v_out_attr), '{}.{}'.format(target_node, target_attr)) pm.setAttr('{}.{}'.format(self.border, self.neg_v_target_attr), '{}.{}'.format(target_node, target_attr), type="string")
import pymel.core as pm jointsNumber = 40 groupJnts = 'joint_GRP' curve = 'curveMP' motionPathList = [] curveSpans = pm.getAttr(curve + 'Shape.spans') pm.rebuildCurve(curve, ch=True, rt=0, rpo=True, end=1, kr=0, kep=True, kt=0, d=3, s=curveSpans) for i in range(0, jointsNumber): newJnt = pm.joint(n='twist_' + str(i + 1) + '_JNT', radius=0.5) pm.setAttr(newJnt + '.overrideEnabled', 1) pm.setAttr(newJnt + '.overrideColor', 13) if pm.uniqueObjExists(groupJnts): pm.parent(newJnt, groupJnts) else: pm.group(newJnt, n=groupJnts) # motionPath = pm.pathAnimation(newJnt, c=curve, fractionMode = 0, eu = 1) motionPath = pm.createNode('motionPath') motionPathList.append(motionPath) pm.connectAttr(curve + 'Shape.worldSpace[0]', motionPath + '.geometryPath') pm.connectAttr(motionPath + '.xCoordinate', newJnt + '.tx', f=True) pm.connectAttr(motionPath + '.yCoordinate', newJnt + '.ty', f=True) pm.connectAttr(motionPath + '.zCoordinate', newJnt + '.tz', f=True) pm.connectAttr(motionPath + '.message', newJnt + '.specifiedManipLocation', f=True) maxValueCurve = pm.getAttr(curve + '.maxValue') print maxValueCurve # pm.cutKey(motionPath+'.u') pm.setAttr(motionPath + '.u', i * (maxValueCurve / (jointsNumber - 1))) pm.disconnectAttr(newJnt + '.tx') pm.disconnectAttr(newJnt + '.ty') pm.disconnectAttr(newJnt + '.tz')
def __init__(self, objName, jsonFile, side, mirror): self.objName = objName self.jsonFile = jsonFile self.side = side self.mirror = mirror data = self.jsonFile.readingDataFromJson() lenght = len(data) nameDataJson = self.jsonFile.getJsonName() if self.side != '': # building locators for i in data[nameDataJson]: nameObj = ('locObj_' + self.side + '_' + i['nodeName']) nameLoc = (self.side + '_' + i['nodeName']) position = [i['nodePosX'], i['nodePosY'], i['nodePosZ']] scale = [i['nodeSclX'], i['nodeSclY'], i['nodeSclZ']] loc = ObjLocator(nameObj, nameLoc, position, scale) loc.addStringAttribute('locFather', 'locFather', self.side + i['nodeFather']) loc.addStringAttribute('locChild', 'locChild', self.side + i['nodeChild']) # building annotations for i in data[nameDataJson]: if (i['nodeChild'] != 'self'): nameObj = ('antObj_' + self.side + '_' + i['nodeChild']) nameAnn = (self.side + '_' + i['nodeName'] + '_ANT') textAnn = self.side + '_' + i['nodeName'] annotation = ObjAnnotation( nameObj, nameAnn, textAnn, self.side + '_' + i['nodeChild'], self.side + '_' + i['nodeName'], []) else: nameObj = ('antObj_' + self.side + '_' + i['nodeChild']) nameAnn = (self.side + '_' + i['nodeName'] + '_ANT') textAnn = self.side + '_' + i['nodeName'] annotation = ObjAnnotation(nameObj, nameAnn, textAnn, self.side + '_' + i['nodeName'], self.side + '_' + i['nodeName'], []) else: # building locators for i in data[nameDataJson]: nameObj = ('locObj_' + i['nodeName']) nameLoc = (i['nodeName']) position = [i['nodePosX'], i['nodePosY'], i['nodePosZ']] scale = [i['nodeSclX'], i['nodeSclY'], i['nodeSclZ']] loc = ObjLocator(nameObj, nameLoc, position, scale) loc.addStringAttribute('locFather', 'locFather', i['nodeFather']) loc.addStringAttribute('locChild', 'locChild', i['nodeChild']) # building annotations for i in data[nameDataJson]: if (i['nodeChild'] != 'self'): nameObj = ('antObj_' + i['nodeChild']) nameAnn = (i['nodeName'] + '_ANT') textAnn = i['nodeName'] annotation = ObjAnnotation(nameObj, nameAnn, textAnn, i['nodeChild'], i['nodeName'], []) else: nameObj = ('antObj_' + i['nodeChild']) nameAnn = (i['nodeName'] + '_ANT') textAnn = i['nodeName'] annotation = ObjAnnotation(nameObj, nameAnn, textAnn, i['nodeName'], i['nodeName'], []) mainGrpModuleCreator = nameDataJson + '_GRP' for i in data[nameDataJson]: if pm.uniqueObjExists(mainGrpModuleCreator): pm.parent(i['nodeName'], mainGrpModuleCreator) else: pm.group(i['nodeName'], n=mainGrpModuleCreator)
with Window(title="class instance") as window: with FooterForm() as main: with VerticalForm() as form: cb_1 = CheckBox(label='bool', value=False) with HorizontalStretchForm() as footer: btn_1 = Button('print data') window.main.form.cb_1.bind.value > bind() > ( self.data, 'bool') # must be "object.attribute" or (object,attr) # add comands window.main.footer.btn_1.command += self.test_event return window def test_event(self, *args, **kwargs): print self.data.info() def show(self): if not self.window: self.window = self.create_window() self.window.show() if not pm.uniqueObjExists("my_sphere"): pm.polySphere(name="my_sphere") ui = None ui = UI(data=Data()) ui.show()
def get_export_set(): if pm.uniqueObjExists("ExportSet"): return pm.PyNode("ExportSet") else: return create_export_set()