def buildRow_matchMode(self,parent): try:self.var_matchModeMove except:self.var_matchModeMove = cgmMeta.cgmOptionVar('cgmVar_matchModeMove', defaultValue = 1) try:self.var_matchModeRotate except:self.var_matchModeRotate = cgmMeta.cgmOptionVar('cgmVar_matchModeRotate', defaultValue = 1) try:self.var_matchMode except:self.var_matchMode = cgmMeta.cgmOptionVar('cgmVar_matchMode', defaultValue = 2) #>>>Match mode ------------------------------------------------------------------------------------- _row = mUI.MelHSingleStretchLayout(parent,ut='cgmUISubTemplate',padding = 5) mUI.MelSpacer(_row,w=5) mUI.MelLabel(_row,l='Match Mode:') _row.setStretchWidget( mUI.MelSeparator(_row) ) uiRC = mUI.MelRadioCollection() _on = self.var_matchMode.value for i,item in enumerate(['point','orient','point/orient']): if i == _on: _rb = True else:_rb = False uiRC.createButton(_row,label=item,sl=_rb, onCommand = cgmGEN.Callback(LOCINATOR.uiFunc_change_matchMode,self,i)) mUI.MelSpacer(_row,w=2) _row.layout()
def deleteKey(): KeyTypeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyType', defaultValue = 0) KeyModeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyMode', defaultValue = 0) if not KeyModeOptionVar.value:#This is default maya keying mode selection = mc.ls(sl=True) or [] if not selection: return log.warning('cgmPuppetKey.deleteKey>>> Nothing l_selected!') mel.eval('timeSliderClearKey;') """ if not KeyTypeOptionVar.value: mc.cutKey(selection) else: mc.cutKey(selection)""" else:#Let's check the channel box for objects selection = search.returnSelectedAttributesFromChannelBox(False) or [] if not selection: selection = mc.ls(sl=True) or [] if not selection: return log.warning('cgmPuppetKey.deleteKey>>> Nothing l_selected!') """ if not KeyTypeOptionVar.value: mc.cutKey(selection) else: mc.cutKey(selection,breakdown = True)""" mel.eval('timeSliderClearKey;')
def _call(): try: log.debug("killUI...") _var_mode = cgmMeta.cgmOptionVar('cgmVar_cgmMarkingMenu_menuMode', defaultValue = 0) log.debug('mode: {0}'.format(_var_mode)) if _var_mode.value in [0,1,2,3]: log.debug('animMode killUI') #IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked') #mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction') sel = mc.ls(sl=1) #>>> Timer stuff #============================================================================= var_clockStart = cgmMeta.cgmOptionVar('cgmVar_cgmMarkingMenu_clockStart', defaultValue = 0.0) f_seconds = time.clock()-var_clockStart.value log.debug(">"*10 + ' cgmMarkingMenu = %0.3f seconds ' % (f_seconds) + '<'*10) if sel and f_seconds <= .5:#and not mmActionOptionVar.value: log.info("|{0}| >> Set key | low time tripped".format('cgmMM')) setKey() #mmTemplate.killChildren(_str_popWindow) if mc.popupMenu(ui,ex = True): try:mc.menu(ui,e = True, deleteAllItems = True) except Exception,err: log.error("Failed to delete menu items") mc.deleteUI(ui) #pprint.pprint(vars()) except Exception,err: log.error(err)
def buildSection_objDefaults(self,parent,frame=True): try:self.var_objDefaultAimAxis except:self.var_objDefaultAimAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultAimAxis', defaultValue = 2) try:self.var_objDefaultUpAxis except:self.var_objDefaultUpAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultUpAxis', defaultValue = 1) try:self.var_objDefaultOutAxis except:self.var_objDefaultOutAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultOutAxis', defaultValue = 3) if frame: _frame = mUI.MelFrameLayout(parent,label = 'Obj Defaults',vis=True, collapse=self.var_objectDefaultsFrameCollapse.value, collapsable=True, enable=True, useTemplate = 'cgmUIHeaderTemplate', expandCommand = lambda:self.var_objectDefaultsFrameCollapse.setValue(0), collapseCommand = lambda:self.var_objectDefaultsFrameCollapse.setValue(1) ) _inside = mUI.MelColumnLayout(_frame,useTemplate = 'cgmUISubTemplate') else: _inside = parent #>>>Aim defaults mode ------------------------------------------------------------------------------------- _d = {'aim':self.var_objDefaultAimAxis, 'up':self.var_objDefaultUpAxis, 'out':self.var_objDefaultOutAxis} for k in _d.keys(): _var = _d[k] _row = mUI.MelHSingleStretchLayout(_inside,ut='cgmUISubTemplate',padding = 5) mUI.MelSpacer(_row,w=5) mUI.MelLabel(_row,l='Obj {0}:'.format(k)) _row.setStretchWidget( mUI.MelSeparator(_row) ) uiRC = mUI.MelRadioCollection() _on = _var.value for i,item in enumerate(SHARED._l_axis_by_string): if i == _on: _rb = True else:_rb = False uiRC.createButton(_row,label=item,sl=_rb, onCommand = cgmGEN.Callback(_var.setValue,i)) mUI.MelSpacer(_row,w=2) _row.layout() #>>>Buttons ------------------------------------------------------------------------------------- _row_defaults = mUI.MelHLayout(_inside,ut='cgmUISubTemplate',padding = 5, ) cgmUI.add_Button(_row_defaults,'Tag selected for aim', lambda *a:MMCONTEXT.func_process(SNAP.verify_aimAttrs, mc.ls(sl=True),'each','Verify aim attributes',True,**{}),) _row_defaults.layout()
def killUI(): IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', 'int') mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction', 'int') if mc.popupMenu('cgmMM', ex=True): mc.deleteUI('cgmMM') IsClickedOptionVar.setValue(0) mmActionOptionVar.setValue(0)
def killUI(): IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', 'int') mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction', 'int') if mc.popupMenu('cgmMM',ex = True): mc.deleteUI('cgmMM') IsClickedOptionVar.setValue(0) mmActionOptionVar.setValue(0)
def insert_init(self,*args,**kws): _str_func = '__init__[{0}]'.format(self.__class__.TOOLNAME) log.info("|{0}| >>...".format(_str_func)) if kws:log.debug("kws: %s"%str(kws)) if args:log.debug("args: %s"%str(args)) log.info(self.__call__(q=True, title=True)) self.__version__ = __version__ self.__toolName__ = self.__class__.WINDOW_NAME #self.l_allowedDockAreas = [] self.WINDOW_TITLE = self.__class__.WINDOW_TITLE self.DEFAULT_SIZE = self.__class__.DEFAULT_SIZE self.controllerPuppet = None self._parentCamera = None self.recentOptionStore = cgmMeta.cgmOptionVar("cgmVar_controllerPuppet_recent", varType = "string", defaultValue=json.dumps([]) ) self.recentMappings = json.loads( self.recentOptionStore.getValue() ) self.connectionDict = { 'name':'Default', 'RStickHorizontal':{}, 'RStickVertical':{}, 'LStickHorizontal':{}, 'LStickVertical':{}, 'RTrigger':{}, 'LTrigger':{} } self.mappingList = []
def LocalizeTextures(): optionVarProjectStore = cgmMeta.cgmOptionVar("cgmVar_projectCurrent", varType="string") project = Project.data(filepath=optionVarProjectStore.getValue()) content = os.path.normpath(project.userPaths_get()['content']) export = os.path.normpath(project.userPaths_get()['export']) for f in mc.ls(type='file'): textureName = mc.getAttr('%s.fileTextureName' % f) if content not in textureName and os.path.exists( textureName) and os.path.isfile(textureName): newPath = os.path.dirname(mc.file(q=True, loc=True)) if mc.referenceQuery(f, inr=True): newPath = of.path.basedir(mc.referenceQuery(f, filename=True)) newFilename = os.path.join(newPath, 'textures', os.path.split(textureName)[1]) if not os.path.exists(os.path.dirname(newFilename)): os.makedirs(os.path.dirname(newFilename)) if os.path.normpath(textureName) != os.path.normpath(newFilename): copyfile(textureName, newFilename) print 'remapped %s to %s' % (textureName, newFilename) mc.setAttr('%s.fileTextureName' % f, newFilename, type='string')
def FindAndRemapTextures(): optionVarProjectStore = cgmMeta.cgmOptionVar("cgmVar_projectCurrent", varType="string") project = Project.data(filepath=optionVarProjectStore.getValue()) content = os.path.normpath(project.userPaths_get()['content']) export = os.path.normpath(project.userPaths_get()['export']) for f in mc.ls(type='file'): texturePath = os.path.normpath(mc.getAttr('%s.fileTextureName' % f)) if not os.path.exists(texturePath): match = SequenceMatcher(None, texturePath, content).find_longest_match( 0, len(texturePath), 0, len(content)) newPath = content + texturePath[match.size + match.a:] if os.path.exists(newPath): print "changing %s.fileTexturePath to %s" % (f, newPath) mc.setAttr('%s.fileTextureName' % f, newPath, type='string') else: match = SequenceMatcher(None, texturePath, export).find_longest_match( 0, len(texturePath), 0, len(export)) newPath = export + texturePath[match.size + match.a:] if os.path.exists(newPath): print "changing %s.fileTexturePath to %s" % (f, newPath) mc.setAttr('%s.fileTextureName' % f, newPath, type='string') else: print "Can't find %s" % texturePath
def color_override(value=None, context='selection', mType=None): """ Get data for updating a transform :parameters self(instance): cgmMarkingMenu :returns info(dict) """ _str_func = "color_override" if context is None: _context = cgmMeta.cgmOptionVar('cgmVar_contextTD', defaultValue='selection').value else: _context = context.lower() _l_context = get_list(_context, mType) _l_context.extend(get_list(_context, 'joint')) log.debug("|{0}| >> value: {1} | mType: {2} | context: {3}".format( _str_func, value, mType, _context)) if not _l_context: raise ValueError, "|{0}| >> Nothing found in context. {1}".format( _str_func, context) for o in _l_context: try: RIGGING.override_color(o, value) except Exception, err: log.error( "|{0}| >> set fail. obj:{1} | value:{2} | error: {3} | {4}". format(_str_func, NAMES.get_short(o), value, err, Exception))
def buildRow_lockSource(self,parent): _plug = 'var_transformLockSource' self.__dict__[_plug] = cgmMeta.cgmOptionVar('cgmVar_transformLockSource', defaultValue = 1) mPlug = self.__dict__[_plug] #>>>Row ==================================================================================== uiRC = mUI.MelRadioCollection() _row1 = mUI.MelHSingleStretchLayout(parent,ut='cgmUISubTemplate',padding = 5) mUI.MelSpacer(_row1,w=5) mUI.MelLabel(_row1,l='Lock Source: ') _row1.setStretchWidget( mUI.MelSeparator(_row1) ) uiRC = mUI.MelRadioCollection() _on = mPlug.value for i,item in enumerate(['off','on']): if i == _on: _rb = True else:_rb = False uiRC.createButton(_row1,label=item,sl=_rb, ann = "When locked, the source object will not be affected by value changes via the ui", onCommand = cgmGEN.Callback(mPlug.setValue,i)) mUI.MelSpacer(_row1,w=2) _row1.layout()
def buildRow_space(self,parent,optionVarPrefix = 'source', options = __l_spaceModes): _plug = 'var_{0}TransSpaceMode'.format(optionVarPrefix) self.__dict__[_plug] = cgmMeta.cgmOptionVar('cgmVar_{0}TransSpaceMode'.format(optionVarPrefix), defaultValue = options[0]) mPlug = self.__dict__[_plug] #>>>Row ==================================================================================== uiRC = mUI.MelRadioCollection() _row1 = mUI.MelHSingleStretchLayout(parent,ut='cgmUISubTemplate',padding = 5) mUI.MelSpacer(_row1,w=5) mUI.MelLabel(_row1,l='{0} Space Mode'.format(optionVarPrefix.capitalize())) _row1.setStretchWidget( mUI.MelSeparator(_row1) ) uiRC = mUI.MelRadioCollection() _on = mPlug.value for i,item in enumerate(options): if item == _on: _rb = True else:_rb = False uiRC.createButton(_row1,label=item,sl=_rb, onCommand = cgmGEN.Callback(mPlug.setValue,item)) mUI.MelSpacer(_row1,w=2) _row1.layout()
def uiFunc_getTargets(self): _str_func = 'uiFunc_getTargets' _b_lockSource = cgmMeta.cgmOptionVar('cgmVar_transformLockSource', defaultValue = 1).getValue() _targets = mc.ls(sl=True) _ml_targets = [] if _targets: _ml_targets = cgmMeta.validateObjListArg(_targets,'cgmObject') if _b_lockSource and self._mTransformTarget: log.info("|{0}| >> lock Source on. Checking list".format(_str_func)) if self._mTransformTarget in _ml_targets: _ml_targets.remove(self._mTransformTarget) log.info("|{0}| >> Removed source...".format(_str_func)) elif not _b_lockSource and self._mTransformTarget: if self._mTransformTarget not in _ml_targets: _ml_targets.insert(0,self._mTransformTarget) if not _ml_targets: log.info("|{0}| >> No targets selected".format(_str_func)) log.info("|{0}| >> targets...".format(_str_func)) for mObj in _ml_targets: print(mObj.mNode) return _ml_targets
def buildRow_aimMode(self,parent): try:self.var_aimMode except:self.var_aimMode = cgmMeta.cgmOptionVar('cgmVar_aimMode', defaultValue = 'world') #>>>Match mode ------------------------------------------------------------------------------------- _row = mUI.MelHSingleStretchLayout(parent,ut='cgmUISubTemplate',padding = 5) mUI.MelSpacer(_row,w=5) mUI.MelLabel(_row,l='Aim Mode:') _row.setStretchWidget( mUI.MelSeparator(_row) ) uiRC = mUI.MelRadioCollection() _on = self.var_aimMode.value for i,item in enumerate(['local','world','matrix']): if item == _on: _rb = True else:_rb = False uiRC.createButton(_row,label=item,sl=_rb, onCommand = cgmGEN.Callback(self.var_aimMode.setValue,item)) mUI.MelSpacer(_row,w=2) _row.layout()
def reset_channels_fromMode(nodes=None, mode = 0,selectedChannels=None): """ :mode 0 - all 1 - transformsOnly 2 - keyableOnly """ if not nodes: nodes = mc.ls(sl=True) if not nodes: return if mode == 0: _d = {'transformsOnly':False, 'keyableOnly':False} elif mode == 1: _d = {'transformsOnly':True, 'keyableOnly':False} elif mode == 2: _d = {'transformsOnly':True, 'keyableOnly':True} if selectedChannels == None: try:selectedChannels = cgmMeta.cgmOptionVar('cgmVar_KeyMode').value except: log.debug("nope...") selectedChannels = False _d['selectedChannels'] = selectedChannels _d['nodes'] = nodes reset_channels(**_d)
def killUI(): IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked') mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction') sel = search.selectCheck() #>>> Timer stuff #============================================================================= var_clockStart = cgmMeta.cgmOptionVar('cgmVar_PuppetKeyClockStart', defaultValue = 0.0) f_seconds = time.clock()-var_clockStart.value log.debug(">"*10 + ' cgmPuppetKey = %0.3f seconds ' % (f_seconds) + '<'*10) #>>>Delete our gui and default behavior if mc.popupMenu('cgmMM',ex = True): mc.deleteUI('cgmMM') if sel and f_seconds <= .5 and not mmActionOptionVar.value: setKey()
def create_guiOptionVar(self,varName,*args,**kws): fullName = "cgmVar_%s%s"%(self.__toolName__,varName) if args:args[0] = fullName if kws and 'varName' in kws.keys():kws.pop('varName') self.__dict__['var_%s'%varName] = cgmMeta.cgmOptionVar(varName = fullName, *args,**kws) log.debug('var_%s'%varName) if fullName not in self.l_optionVars: self.l_optionVars.append(fullName) return fullName
def killUI(): log.info("killUI()...") IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked') mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction') sel = search.selectCheck() #>>> Timer stuff #============================================================================= var_clockStart = cgmMeta.cgmOptionVar('cgmVar_PuppetKeyClockStart', defaultValue = 0.0) f_seconds = time.clock()-var_clockStart.value log.debug(">"*10 + ' cgmPuppetKey = %0.3f seconds ' % (f_seconds) + '<'*10) #>>>Delete our gui and default behavior if mc.popupMenu('cgmMM',ex = True): mc.deleteUI('cgmMM') if sel and f_seconds <= .5 and not mmActionOptionVar.value: setKey()
def __init__(self): """ Initializes the pop up menu class call """ self._str_MM = 'snapMarkingMenu' self.optionVars = [] IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', value = 0) mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction',value = 0) #>>>> Clock set #==================================================================== self.clockStartVar = cgmMeta.cgmOptionVar('cgmVar_PuppetKeyClockStart', defaultValue = 0.0) self.clockStartVar.value = time.clock() log.debug("cgmPuppetKey.clockStart: %s"%self.clockStartVar.value) IsClickedOptionVar.value = 0 mmActionOptionVar.value = 0 try:#>> Panel check and build... _sub = "Panel check and build" _p = mc.getPanel(up = True) if _p is None: log.error("No panel detected...") return if _p: log.info("{0} panel under pointer {1}...".format(self._str_MM, _p)) _parentPanel = mc.panel(_p,q = True,ctl = True) log.info("{0} panel under pointer {1} | parent: {2}...".format(self._str_MM, _p,_parentPanel)) if 'MayaWindow' in _parentPanel: _p = 'viewPanes' if not mc.control(_p, ex = True): return "{0} doesn't exist!".format(_p) else: if not mc.popupMenu('cgmMM',ex = True): mc.popupMenu('cgmMM', ctl = 0, alt = 0, sh = 0, mm = 1, b =1, aob = 1, p = _p, pmc = mUI.Callback(self.createUI,'cgmMM')) else: mc.popupMenu('cgmMM', edit = True, ctl = 0, alt = 0, sh = 0, mm = 1, b =1, aob = 1, p = _p, pmc = mUI.Callback(self.createUI,'cgmMM')) except Exception,err: raise Exception,"{0} {1} exception | {2}".format(self._str_MM,_sub,err)
def create_guiOptionVar(self, varName, *args, **kws): fullName = "cgmVar_{0}_{1}".format(self._str_MM, varName) if args: args[0] = fullName if kws and 'varName' in kws.keys(): kws.pop('varName') self.__dict__['var_{0}'.format(varName)] = cgmMeta.cgmOptionVar( varName=fullName, *args, **kws) log.debug('var_{0}'.format(varName)) if fullName not in self.l_optionVars: self.l_optionVars.append(fullName) return fullName
def setKey(keyModeOverride = None): _str_func = "setKey" KeyTypeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyType', defaultValue = 0) KeyModeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyMode', defaultValue = 0) selection = False log.debug("|{0}| >> keyType: {1} | keyMode: {2} | keyModeOverride: {3}".format(_str_func,KeyTypeOptionVar.value,KeyModeOptionVar.value,keyModeOverride)) if not KeyModeOptionVar.value:#This is default maya keying mode selection = mc.ls(sl=True) or [] if not selection: return log.warning('cgmPuppetKey.setKey>>> Nothing l_selected!') """if not KeyTypeOptionVar.value: mc.setKeyframe(selection) else: mc.setKeyframe(breakdown = True)""" else:#Let's check the channel box for objects selection = SEARCH.get_selectedFromChannelBox(False) or [] if not selection: log.debug("|{0}| >> No channel box selection. ".format(_str_func)) selection = mc.ls(sl=True) or [] if not selection: return log.warning('cgmPuppetKey.setKey>>> Nothing selected!') if keyModeOverride: log.debug("|{0}| >> Key override mode. ".format(_str_func)) if keyModeOverride== 'breakdown': mc.setKeyframe(selection,breakdown = True) else: mc.setKeyframe(selection) else: if not KeyTypeOptionVar.value: mc.setKeyframe(selection) else: mc.setKeyframe(selection,breakdown = True)
def uiFunc_setLastUpdateDebug(branch='MRS', clear=False): var_lastUpdate = cgmMeta.cgmOptionVar('cgmVar_branchLastUpdate', defaultValue=['None']) if clear: var_lastUpdate.setValue(['None']) var_lastUpdate.report() return d_branch = cgmUpdate.get_dat(branch, 1, True) var_lastUpdate.setValue([ branch, d_branch[0]['hash'], d_branch[0]['msg'], datetime.datetime.now().__str__()[:-7] ])
def __init__(self): """ Initializes the pop up menu class call """ self._str_funcName = "puppetKeyMarkingMenu" self.optionVars = [] IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', value = 0) mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction',value = 0) panel = mc.getPanel(up = True) if panel: # Attempt at fixing a bug of some tools not working when the pop up parent isn't 'viewPanes' if 'MayaWindow' in mc.panel(panel,q = True,ctl = True): panel = 'viewPanes' sel = search.selectCheck() #>>>> Clock set #==================================================================== self.clockStartVar = cgmMeta.cgmOptionVar('cgmVar_PuppetKeyClockStart', defaultValue = 0.0) self.clockStartVar.value = time.clock() log.debug("cgmPuppetKey.clockStart: %s"%self.clockStartVar.value) IsClickedOptionVar.value = 0 mmActionOptionVar.value = 0 if mc.popupMenu('cgmMM',ex = True): mc.deleteUI('cgmMM') if panel: if mc.control(panel, ex = True): try: mc.popupMenu('cgmMM', ctl = 0, alt = 0, sh = 0, mm = 1, b =1, aob = 1, p = panel, pmc = lambda *a: self.createUI('cgmMM')) except: log.warning('Exception on set key marking menu') mel.eval('performSetKeyframeArgList 1 {"0", "animationList"};')
def setKey(): KeyTypeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyType', defaultValue = 0) KeyModeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyMode', defaultValue = 0) if not KeyModeOptionVar.value:#This is default maya keying mode selection = mc.ls(sl=True) or [] if not selection: return log.warning('cgmPuppetKey.setKey>>> Nothing l_selected!') if not KeyTypeOptionVar.value: mc.setKeyframe(selection) else: mc.setKeyframe(breakdown = True) else:#Let's check the channel box for objects selection = search.returnSelectedAttributesFromChannelBox(False) or [] if not selection: selection = mc.ls(sl=True) or [] if not selection: return log.warning('cgmPuppetKey.setKey>>> Nothing l_selected!') if not KeyTypeOptionVar.value: mc.setKeyframe(selection) else: mc.setKeyframe(selection,breakdown = True)
def __init__(self): """ Initializes the pop up menu class call """ self.optionVars = [] IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', value = 0) mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction',value = 0) panel = mc.getPanel(up = True) if panel: # Attempt at fixing a bug of some tools not working when the pop up parent isn't 'viewPanes' if 'MayaWindow' in mc.panel(panel,q = True,ctl = True): panel = 'viewPanes' sel = search.selectCheck() #>>>> Clock set #==================================================================== self.clockStartVar = cgmMeta.cgmOptionVar('cgmVar_PuppetKeyClockStart', defaultValue = 0.0) self.clockStartVar.value = time.clock() log.debug("cgmPuppetKey.clockStart: %s"%self.clockStartVar.value) IsClickedOptionVar.value = 0 mmActionOptionVar.value = 0 if mc.popupMenu('cgmMM',ex = True): mc.deleteUI('cgmMM') if panel: if mc.control(panel, ex = True): try: mc.popupMenu('cgmMM', ctl = 0, alt = 0, sh = 0, mm = 1, b =1, aob = 1, p = panel, pmc = lambda *a: self.createUI('cgmMM')) except: log.warning('Exception on set key marking menu') mel.eval('performSetKeyframeArgList 1 {"0", "animationList"};')
def deleteKey(): KeyTypeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyType', defaultValue = 0) KeyModeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyMode', defaultValue = 0) if not KeyModeOptionVar.value:#This is default maya keying mode selection = mc.ls(sl=True) or [] if not selection: return log.warning('cgmPuppetKey.deleteKey>>> Nothing l_selected!') if not KeyTypeOptionVar.value: mc.cutKey(selection) else: mc.cutKey(selection) else:#Let's check the channel box for objects selection = search.returnSelectedAttributesFromChannelBox(False) or [] if not selection: selection = mc.ls(sl=True) or [] if not selection: return log.warning('cgmPuppetKey.deleteKey>>> Nothing l_selected!') if not KeyTypeOptionVar.value: mc.cutKey(selection) else: mc.cutKey(selection,breakdown = True)
def uiQuery_advancedSnap(self): _res = {} _res['sl'] = mc.ls(sl=True) _res['objPivot'] = self.uiSelector_objPivot.getValue() _res['objMode'] = self.uiSelector_objMode.getValue() _res['targetPivot'] = self.uiSelector_targetPivot.getValue() _res['targetMode'] = self.uiSelector_targetMode.getValue() _l_order = ['position','rotation','rotateAxis','rotateOrder','scalePivot','rotatePivot'] for k in _l_order: _plug = 'cgmVar_snapAdvanced_' + k _res[k] = cgmMeta.cgmOptionVar(_plug).getValue() pprint.pprint(_res) return _res
def buildRow_branches(self, parent): """ try:self.var_matchModeMove except:self.var_matchModeMove = cgmMeta.cgmOptionVar('cgmVar_matchModeMove', defaultValue = 1) try:self.var_matchModeRotate except:self.var_matchModeRotate = cgmMeta.cgmOptionVar('cgmVar_matchModeRotate', defaultValue = 1) try:self.var_matchMode except:self.var_matchMode = cgmMeta.cgmOptionVar('cgmVar_matchMode', defaultValue = 2) """ try: self.var_branchMode except: self.var_branchMode = cgmMeta.cgmOptionVar('cgmVar_branchUpdateMode', defaultValue='master') #>>>Branch ------------------------------------------------------------------------------------- _row = mUI.MelHSingleStretchLayout(parent, ut='cgmUISubTemplate', padding=5) mUI.MelSpacer(_row, w=5) mUI.MelLabel(_row, l='Choose which branch you want to use:') #>>>Settings ------------------------------------------------------------------------------------- #cc = Callback(puppetBoxLib.uiModuleOptionMenuSet,self,self.moduleDirectionMenus,self.moduleDirections,'cgmDirection',i) self.uiSelector_branch = mUI.MelOptionMenu(_row, useTemplate='cgmUITemplate') for a in _l_branches: self.uiSelector_branch.append(a) self.uiSelector_branch( edit=True, value=self.var_branchMode.getValue(), cc=lambda *a: uiFunc_branchChange(self, self.var_branchMode, self. uiSelector_branch) #cc = cgmGEN.Callback(self.set_optionVar, self.var_branchMode, None, # self.uiSelector_branch) ) _row.setStretchWidget(self.uiSelector_branch) mUI.MelSpacer(_row, w=5) _row.layout()
def raySnap_start(targets = []): _toSnap = targets log.info("raySnap_start | targets: {0}".format(_toSnap)) if not _toSnap: raise ValueError,"raySnap_start >> Must have targets!" var_RayCastMode = cgmMeta.cgmOptionVar('cgmVar_SnapMenuRayCastMode', defaultValue=0) log.info("mode: {0}".format(var_RayCastMode.value)) cgmDrag.clickMesh( mode = var_RayCastMode.value, mesh = None, closestOnly = True, create = 'locator', dragStore = False, toSnap = _toSnap, timeDelay = .25, ) log.warning("raySnap_start >>> ClickMesh initialized")
def __init__(self): """ Initializes the pop up menu class call """ self._str_MM = 'snapMarkingMenu' self.optionVars = [] self.toolName = 'cgm.snapMM' IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', 'int') mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction', 'int') surfaceSnapAimModeVar = cgmMeta.cgmOptionVar('cgmVar_SurfaceSnapAimMode', 'int') UpdateRotateOrderOnTagVar = cgmMeta.cgmOptionVar('cgmVar_TaggingUpdateRO', 'int') self.LocinatorUpdateObjectsBufferOptionVar = cgmMeta.cgmOptionVar('cgmVar_LocinatorUpdateObjectsBuffer',defaultValue = ['']) self.LocinatorUpdateObjectsOptionVar = cgmMeta.cgmOptionVar('cgmVar_SnapMMUpdateMode',defaultValue = 0) guiFactory.appendOptionVarList(self,self.LocinatorUpdateObjectsOptionVar.name) self.SnapModeOptionVar = cgmMeta.cgmOptionVar('cgmVar_SnapMatchMode',defaultValue = 0) guiFactory.appendOptionVarList(self,self.SnapModeOptionVar.name) IsClickedOptionVar.setValue(0) mmActionOptionVar.setValue(0) #if mc.popupMenu('cgmMM',ex = True): #mc.deleteUI('cgmMM')#...deleting ui elements seems to be hard crashing maya 2017 _p = mc.getPanel(up = True) if _p is None: log.error("No panel detected...") return if _p: log.info("{0} panel under pointer {1}...".format(self._str_MM, _p)) _parentPanel = mc.panel(_p,q = True,ctl = True) log.info("{0} panel under pointer {1} | parent: {2}...".format(self._str_MM, _p,_parentPanel)) if 'MayaWindow' in _parentPanel: _p = 'viewPanes' if not mc.control(_p, ex = True): raise ValueError,"{0} doesn't exist!".format(_p) #_p = panel if not mc.popupMenu('cgmMM',ex = True): mc.popupMenu('cgmMM', ctl = 0, alt = 0, sh = 0, mm = 1, b =1, aob = 1, p = _p, pmc = lambda *a: self.createUI('cgmMM'), postMenuCommandOnce = True) else: mc.popupMenu('cgmMM', edit = True, ctl = 0, alt = 0, sh = 0, mm = 1, b =1, aob = 1, p = _p, pmc = lambda *a: self.createUI('cgmMM'), postMenuCommandOnce = True)
def setupVariables(self): self.KeyTypeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyType', defaultValue = 0) guiFactory.appendOptionVarList(self,self.KeyTypeOptionVar.name) self.KeyModeOptionVar = cgmMeta.cgmOptionVar('cgmVar_KeyMode', defaultValue = 0) guiFactory.appendOptionVarList(self,self.KeyModeOptionVar.name) self.mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction') self.BuildModuleOptionVar = cgmMeta.cgmOptionVar('cgmVar_PuppetKeyBuildModule', defaultValue = 1) guiFactory.appendOptionVarList(self,self.BuildModuleOptionVar.name) self.BuildPuppetOptionVar = cgmMeta.cgmOptionVar('cgmVar_PuppetKeyBuildPuppet', defaultValue = 1) guiFactory.appendOptionVarList(self,self.BuildPuppetOptionVar.name) self.ResetModeOptionVar = cgmMeta.cgmOptionVar('cgmVar_ChannelResetMode', defaultValue = 0) guiFactory.appendOptionVarList(self,self.ResetModeOptionVar.name)
def uiUpdate_topReport(self): try: self.var_lastUpdate except: self.var_lastUpdate = cgmMeta.cgmOptionVar( 'cgmVar_branchLastUpdate', defaultValue=['']) _lastUpdate = self.var_lastUpdate.getValue() self.var_lastUpdate.report() if _lastUpdate == 'None': self.uiField_report(edit=True, label='No last update data found...') return log.error("No last update found.") else: try: _lastBranch = _lastUpdate[0] except: _lastBranch = None try: _lastHash = _lastUpdate[1] except: _lastHash = None try: _lastMsg = _lastUpdate[2] except: _lastMsg = None try: _lastDate = _lastUpdate[3] except: _lastDate = None self.uiField_report( edit=True, label="Last update: [{0}] - {1}".format( _lastBranch, _lastDate, _lastHash), ann=_lastMsg, )
def func_process(func, objects=None, processMode='all', calledFrom=None, noSelect=True, context='selection', mType=None, getTransform=False, **kws): """ Process objects passed with fuction provided in different modes... :parameters func(function) objects(list) processMode(str) all -- objects each -- func to each object eachToNext -- o,objects[i+1] fromPreviousEach -- objects[-1],o eachToLast -- o,objects[-1] firstToEach -- objects[0],o eachToFirst -- o,objects[0] eachToPrevious -- objects[i],objects[i-1] previousToEach -- objects[i-1],objects[i] lastFromRest - objects[-1],objects[:-1] restFromLast - objects[:-1],objects[-1] firstToRest - objects[0],objects[1:] restFromFirst - objects[1:],objects[0] eachToNextReverse calledFrom - String for debugging/ kws(dict) -- pass through :returns info(dict) iterTo """ try: if calledFrom is not None: _str_func = "{0}".format(calledFrom) else: _str_func = "func_process" if objects == None: if context == None: context = cgmMeta.cgmOptionVar('cgmVar_contextTD', defaultValue='selection').value objects = get_list(context, mType, getTransform) else: objects = get_list(context, mType, getTransform) log.debug("|{0}| >> func: {1}".format(_str_func, func.__name__)) log.debug("|{0}| >> mode: {1}".format(_str_func, processMode)) log.debug("|{0}| >> kws: {1}".format(_str_func, kws)) log.debug("|{0}| >> objects: {1}".format(_str_func, objects)) if not objects: log.warning("|{0}| >> No targets specified. func: {1}".format( _str_func, func.__name__)) return False if processMode in ['each']: for i, o in enumerate(objects): log.debug("|{0}| >> {1} : {2}".format(_str_func, i, o)) if processMode == 'each': _res = func(o, **kws) if _res: log.info("|{0}.{1}| >> {2}".format(_str_func, processMode, _res)) elif processMode in ['all']: _res = func(objects, **kws) if _res: log.info("|{0}.{1}| >> {2}".format(_str_func, processMode, _res)) elif processMode in ['eachToNext', 'fromPreviousEach', 'eachToLast']: for i, o in enumerate(objects[:-1]): log.debug("|{0}| >> {1} : {2}".format(_str_func, i, o)) try: if processMode == 'eachToNext': _res = func(o, objects[i + 1], **kws) elif processMode == 'fromPreviousEach': _res = func(objects[-1], o, **kws) elif processMode == 'eachToLast': _res = func(o, objects[-1], **kws) if _res: print("|{0}| >> {1}".format(_str_func, _res)) except Exception, err: log.error( "|{0}| >> {1} : {2} failed! | processMode:{4} | err: {3}" .format(_str_func, i, o, err, processMode)) elif processMode in [ 'firstToEach', 'eachToFirst', 'eachToPrevious', 'previousToEach' ]: for i, o in enumerate(objects[1:]): log.debug("|{0}| >> {1} : {2}".format(_str_func, i, o)) try: if processMode == 'firstToEach': _res = func(objects[0], o, **kws) elif processMode == 'eachToFirst': _res = func(o, objects[0], **kws) elif processMode == 'eachToPrevious': log.debug("|{0}| >> {1} < {2}".format( _str_func, o, objects[i - 1])) _res = func(o, objects[i], **kws) elif processMode == 'previousToEach': _res = func(objects[i], o, **kws) if _res: print("|{0}| >> {1}".format(_str_func, _res)) except Exception, err: log.error( "|{0}| >> {1} : {2} failed! | processMode:{4} | err: {3}" .format(_str_func, i, o, err, processMode))
def raySnap_start(targets=[], create=None, drag=False, snap=True, aim=False): _str_func = 'raySnap_start' _toSnap = False _toAim = False if not targets: targets = mc.ls(sl=True) if snap: if not create or create == 'duplicate': #targets = mc.ls(sl=True)#...to use g to do again?... _toSnap = targets log.debug("|{0}| | targets: {1}".format(_str_func, _toSnap)) if not _toSnap: if create == 'duplicate': log.error( "|{0}| >> Must have targets to duplicate!".format( _str_func)) return if aim: _toAim = targets var_rayCastMode = cgmMeta.cgmOptionVar('cgmVar_rayCastMode', defaultValue=0) var_rayCastOffsetMode = cgmMeta.cgmOptionVar('cgmVar_rayCastOffsetMode', defaultValue=0) var_rayCastOffsetDist = cgmMeta.cgmOptionVar('cgmVar_rayCastOffsetDist', defaultValue=1.0) var_rayCastTargetsBuffer = cgmMeta.cgmOptionVar( 'cgmVar_rayCastTargetsBuffer', defaultValue=['']) var_rayCastOrientMode = cgmMeta.cgmOptionVar('cgmVar_rayCastOrientMode', defaultValue=0) var_objDefaultAimAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultAimAxis', defaultValue=2) var_objDefaultUpAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultUpAxis', defaultValue=1) var_objDefaultOutAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultOutAxis', defaultValue=0) var_rayCastDragInterval = cgmMeta.cgmOptionVar( 'cgmVar_rayCastDragInterval', defaultValue=.2) var_aimMode = cgmMeta.cgmOptionVar('cgmVar_aimMode', defaultValue='world') _rayCastMode = var_rayCastMode.value _rayCastOffsetMode = var_rayCastOffsetMode.value _rayCastTargetsBuffer = var_rayCastTargetsBuffer.value _rayCastOrientMode = var_rayCastOrientMode.value _objDefaultAimAxis = var_objDefaultAimAxis.value _objDefaultUpAxis = var_objDefaultUpAxis.value _objDefaultOutAxis = var_objDefaultOutAxis.value _rayCastDragInterval = var_rayCastDragInterval.value log.debug("|{0}| >> Mode: {1}".format(_str_func, _rayCastMode)) log.debug("|{0}| >> offsetMode: {1}".format(_str_func, _rayCastOffsetMode)) kws = { 'mode': 'surface', 'mesh': None, 'closestOnly': True, 'create': 'locator', 'dragStore': False, 'orientMode': None, 'objAimAxis': SHARED._l_axis_by_string[_objDefaultAimAxis], 'objUpAxis': SHARED._l_axis_by_string[_objDefaultUpAxis], 'objOutAxis': SHARED._l_axis_by_string[_objDefaultOutAxis], 'aimMode': var_aimMode.value, 'timeDelay': .1, 'offsetMode': None, 'dragInterval': _rayCastDragInterval, 'offsetDistance': var_rayCastOffsetDist.value } #var_rayCastOffsetDist.value if _rayCastTargetsBuffer: log.debug("|{0}| >> Casting at buffer {1}".format( _str_func, _rayCastMode)) kws['mesh'] = _rayCastTargetsBuffer if _toSnap: kws['toSnap'] = _toSnap elif create: kws['create'] = create if _toAim: kws['toAim'] = _toAim if _rayCastOrientMode == 1: kws['orientMode'] = 'normal' if create == 'duplicate': kws['toDuplicate'] = _toSnap if _toSnap: kws['toSnap'] = False else: log.error("|{0}| >> Must have target with duplicate mode!".format( _str_func)) cgmGEN.log_info_dict(kws, "RayCast args") return if drag: kws['dragStore'] = drag if _rayCastMode == 1: kws['mode'] = 'midPoint' elif _rayCastMode == 2: kws['mode'] = 'far' elif _rayCastMode == 3: kws['mode'] = 'surface' kws['closestOnly'] = False elif _rayCastMode == 4: kws['mode'] = 'planeX' elif _rayCastMode == 5: kws['mode'] = 'planeY' elif _rayCastMode == 6: kws['mode'] = 'planeZ' elif _rayCastMode != 0: log.warning("|{0}| >> Unknown rayCast mode: {1}!".format( _str_func, _rayCastMode)) if _rayCastOffsetMode == 1: kws['offsetMode'] = 'distance' elif _rayCastOffsetMode == 2: kws['offsetMode'] = 'snapCast' elif _rayCastOffsetMode != 0: log.warning("|{0}| >> Unknown rayCast offset mode: {1}!".format( _str_func, _rayCastOffsetMode)) cgmGEN.log_info_dict(kws, "RayCast args") cgmDrag.clickMesh(**kws) return
import cgm.core.classes.GuiFactory as cgmUI from cgm.core.lib import name_utils as NAMES from cgm.core.lib import distance_utils as DIST import cgm.core.lib.transform_utils as TRANS import cgm.core.lib.rigging_utils as CORERIG import cgm.core.lib.math_utils as COREMATH reload(RAYS) reload(cgmUI) reload(MMCONTEXT) mUI = cgmUI.mUI _2016 = False if cgmGEN.__mayaVersion__ >= 2016: _2016 = True var_aimMode = cgmMeta.cgmOptionVar('cgmVar_aimMode', defaultValue='world') var_snapPivotMode = cgmMeta.cgmOptionVar('cgmVar_snapPivotMode', defaultValue=0) var_objDefaultAimAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultAimAxis', defaultValue=2) var_objDefaultUpAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultUpAxis', defaultValue=1) #var_resetMode = cgmMeta.cgmOptionVar('cgmVar_ChannelResetMode', defaultValue = 0) #var_rayCastOrientMode = cgmMeta.cgmOptionVar('cgmVar_rayCastOrientMode', defaultValue = 0) #var_rayCastDragInterval = cgmMeta.cgmOptionVar('cgmVar_rayCastDragInterval', defaultValue = .2) #var_objDefaultOutAxis = cgmMeta.cgmOptionVar('cgmVar_objDefaultOutAxis', defaultValue = 3) #var_rayCastTargetsBuffer = cgmMeta.cgmOptionVar('cgmVar_rayCastTargetsBuffer',defaultValue = ['']) #var_contextTD = cgmMeta.cgmOptionVar('cgmVar_contextTD', defaultValue = 'selection') """self.create_guiOptionVar('snapPivotMode', defaultValue = 0)
def create_Scene_batchFile(dat=[], batchFile=None, process=True, postProcesses=True, deleteAfterProcess=False): _str_func = 'create_Scene_batchFile' cgmGEN.log_start(_str_func) if batchFile is None: var_project = cgmMeta.cgmOptionVar('cgmVar_projectCurrent', defaultValue='') mProject = PROJECT.data(filepath=var_project.value) d_paths = mProject.userPaths_get() mPath_root = PATHS.Path(d_paths['root']) if mPath_root.exists(): log.debug('Root | : {0}'.format(mPath_root.asFriendly())) else: log.debug('Root | Invalid Path: {0}'.format(mPath_root)) mPath_content = PATHS.Path(d_paths['content']) if os.path.exists(mPath_content): log.debug('Root | : {0}'.format(mPath_content)) else: log.debug('Root | Invalid Path: {0}'.format(mPath_content)) _batchPath = os.path.join(mPath_root.asFriendly(), 'mrsScene_batch.py') log.debug("batchFile : {0}".format(_batchPath)) l_pre = [ 'import maya', 'from maya import standalone', 'standalone.initialize()', 'from cgm.core.mrs import Scene', 'import maya.mel as mel', 'from maya.api import OpenMaya as om2', 'om2.MGlobal.displayInfo("Begin")', 'import maya.cmds as mc', 'mc.loadPlugin("fbxmaya")', 'mc.workspace("{0}",openWorkspace=1)'.format(mPath_content), 'import cgm.core.mrs.lib.batch_utils as MRSBATCH', '' ] l_post = [ 'except Exception,err:', ' print err', ' import msvcrt#...waits for key', ' om2.MGlobal.displayInfo("Hit a key to continue")', ' msvcrt.getch()', '', 'om2.MGlobal.displayInfo("End")', 'standalone.uninitialize()' ] log.debug(cgmGEN.logString_sub(_str_func, "Checks ...")) l_paths = [] l_dirs = [] #l_check = VALID.listArg(f) l_mFiles = [] l_batch = [] #if not l_check: #log.debug(cgmGEN.logString_msg(_str_func,"No file passed. Using current")) #l_check = [mc.file(q=True, sn=True)] _dat = ['dat = ['] for d2 in dat: _dat.append('{') for k, d in d2.iteritems(): if k == 'objs': if d: _l_tmp = ','.join("'{0}'".format(o) for o in d) _dat.append('"{0}" : [{1}],'.format(k, _l_tmp)) else: _dat.append("'objs' : [ ],") elif 'Path' in k: _l_tmp = ','.join("'{0}'".format(o) for o in d) _dat.append('"{0}" : [{1}],'.format(k, _l_tmp)) else: _dat.append('"{0}" : "{1}",'.format(k, d)) _dat.append('},') _dat.append(']') mTar = PATHS.Path(_batchPath) _l = "try:Scene.BatchExport(dat)" #_l = "try:MRSBATCH.process_blocks_rig('{0}',postProcesses = {1})".format(mFile.asString(),postProcesses) if mTar.getWritable(): if mTar.exists(): os.remove(mTar) log.warning("Writing file: {0}".format(_batchPath)) with open(_batchPath, 'a') as TMP: for l in l_pre + _dat + [_l] + l_post: TMP.write('{0}\n'.format(l)) l_batch.append(mTar) else: log.warning("Not writable: {0}".format(_batchPath)) if process: log.debug(cgmGEN.logString_sub(_str_func, "Processing ...")) log.warning("Processing file: {0}".format(mTar.asFriendly())) #subprocess.call([sys.argv[0].replace("maya.exe","mayapy.exe"),f.asFriendly()]) subprocess.Popen( [ sys.argv[0].replace("maya.exe", "mayapy.exe"), '-i', mTar.asFriendly() ], creationflags=subprocess.CREATE_NEW_CONSOLE) # env=my_env if deleteAfterProcess: os.remove(f) return for f in l_check: mFile = PATHS.Path(f) if not mFile.exists(): log.error("Invalid file: {0}".format(f)) continue log.debug(cgmGEN.logString_sub(_str_func)) _path = mFile.asFriendly() l_paths.append(_path) _name = mFile.name() _d = mFile.up().asFriendly() log.debug(cgmGEN.logString_msg(_str_func, _name)) _batchPath = os.path.join(_d, _name + '_batch.py') log.debug(cgmGEN.logString_msg(_str_func, "batchPath: " + _batchPath)) log.debug(cgmGEN.logString_msg(_str_func, "template: " + _path)) mTar = PATHS.Path(_batchPath) _l = "try:MRSBATCH.process_blocks_rig('{0}',postProcesses = {1})".format( mFile.asString(), postProcesses) if mTar.getWritable(): if mTar.exists(): os.remove(mTar) log.warning("Writing file: {0}".format(_batchPath)) with open(_batchPath, 'a') as TMP: for l in l_pre + [_l] + l_post: TMP.write('{0}\n'.format(l)) l_batch.append(mTar) else: log.warning("Not writable: {0}".format(_batchPath)) if process: log.debug(cgmGEN.logString_sub(_str_func, "Processing ...")) for f in l_batch: log.warning("Processing file: {0}".format(f.asFriendly())) #subprocess.call([sys.argv[0].replace("maya.exe","mayapy.exe"),f.asFriendly()]) subprocess.Popen( [ sys.argv[0].replace("maya.exe", "mayapy.exe"), '-i', f.asFriendly() ], creationflags=subprocess.CREATE_NEW_CONSOLE) # env=my_env if deleteAfterProcess: os.remove(f)
def children_mirrorPull(self,module): _str_funcName = "%s.children_mirror"%puppetKeyMarkingMenu._str_funcName log.debug(">>> %s "%(_str_funcName) + "="*75) l_slBuffer = mc.ls(sl=True) or [] try:module.mirrorPull() except Exception,error: log.error("%s >> obj: '%s' | error: %s"%(_str_funcName,module.p_nameShort,error)) for mMod in module.get_allModuleChildren(): try:mMod.mirrorPull() except Exception,error: log.error("%s >> obj: '%s' | error: %s"%(_str_funcName,mMod.p_nameShort,error)) if l_slBuffer:mc.select(l_slBuffer) IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked',value = 0) IsClickedOptionVar.value = 1 #>>>> Sel check #==================================================================== int_maxObjects = 5 l_selected = mc.ls(sl=True) or [] if len(l_selected) <= int_maxObjects:self._l_selected = l_selected else:self._l_selected = l_selected[:5] self.ml_objList = cgmMeta.validateObjListArg(self._l_selected,cgmMeta.cgmObject,True) log.debug("ml_objList: %s"%self.ml_objList) self.ml_modules = []
def create_cgmDebugOptionVar(self,*args,**kws): fullName = "cgmVar_guiDebug" self.__dict__['var_DebugMode'] = cgmMeta.cgmOptionVar(varName = fullName, *args,**kws) if fullName not in self.l_optionVars: self.l_optionVars.append(fullName)
def createUI(self,parent): """ Create the UI """ def buttonAction(command): """ execute a command and let the menu know not do do the default button action but just kill the ui """ killUI() mmActionOptionVar.value = 1 command self.LocinatorUpdateObjectsBufferOptionVar = cgmMeta.cgmOptionVar('cgmVar_LocinatorUpdateObjectsBuffer',defaultValue = ['']) IsClickedOptionVar = cgmMeta.cgmOptionVar('cgmVar_IsClicked', 'int') mmActionOptionVar = cgmMeta.cgmOptionVar('cgmVar_mmAction', 'int') self.SnapModeOptionVar.update()#Check if another tool has changed this setting _sel = mc.ls(sl=True) selPair = search.checkSelectionLength(2) _selecCheck = len(_sel) IsClickedOptionVar.value = 1 mc.menu(parent,e = True, deleteAllItems = True) mUI.MelMenuItem(parent, en = selPair, l = 'Point Snap', c = lambda *a:buttonAction(tdToolsLib.doPointSnap()), rp = 'NW') mUI.MelMenuItem(parent, en = selPair, l = 'Parent Snap', c = lambda *a:buttonAction(tdToolsLib.doParentSnap()), rp = 'N') mUI.MelMenuItem(parent, en = selPair, l = 'Orient Snap', c = lambda *a:buttonAction(tdToolsLib.doOrientSnap()), rp = 'NE') mUI.MelMenuItem(parent, en = selPair, l = 'Surface Snap', c = lambda *a:buttonAction(tdToolsLib.doSnapClosestPointToSurface(False)), rp = 'W') if self.LocinatorUpdateObjectsOptionVar.value: ShowMatch = False if self.LocinatorUpdateObjectsBufferOptionVar.value: ShowMatch = True mUI.MelMenuItem(parent, en = ShowMatch, l = 'Buffer Snap', c = lambda *a:buttonAction(locinatorLib.doUpdateLoc(self,True)), rp = 'S') else: ShowMatch = search.matchObjectCheck() mUI.MelMenuItem(parent, en = ShowMatch, l = 'Match Snap', c = lambda *a:buttonAction(locinatorLib.doUpdateSelectedObjects(self)), rp = 'S') mUI.MelMenuItem(parent, en = _selecCheck, l = 'RayCast', #c = mUI.Callback(buttonAction,raySnap_start(_sel)), c = lambda *a:buttonAction(raySnap_start(_sel)), rp = 'SW') mUI.MelMenuItem(parent, en = 0, l = 'Mirror', c = lambda *a:buttonAction(locinatorLib.doUpdateObj(self,True)), rp = 'SE') mUI.MelMenuItemDiv(parent) mUI.MelMenuItem(parent,l = 'Loc Me', c = lambda *a: buttonAction(locinatorLib.doLocMe(self))) mUI.MelMenuItem(parent, l = 'Tag Loc to Object',en = selPair, c = lambda *a: buttonAction(locinatorLib.doTagObjects(self))) # Update Mode UpdateMenu = mUI.MelMenuItem(parent, l='Update Mode', subMenu=True) UpdateMenuCollection = mUI.MelRadioMenuCollection() if self.LocinatorUpdateObjectsOptionVar.value == 0: slMode = True bufferMode = False else: slMode = False bufferMode = True UpdateMenuCollection.createButton(UpdateMenu,l='Selected', c=lambda *a: self.LocinatorUpdateObjectsOptionVar.setValue(0), rb=slMode ) UpdateMenuCollection.createButton(UpdateMenu,l='Buffer', c=lambda *a:self.LocinatorUpdateObjectsOptionVar.setValue(1), rb=bufferMode ) #>>>Match Mode self.MatchModeOptions = ['parent','point','orient'] self.MatchModeCollection = mUI.MelRadioMenuCollection() self.MatchModeCollectionChoices = [] MatchModeMenu = mUI.MelMenuItem( parent, l='Match Mode', subMenu=True) self.matchMode = self.SnapModeOptionVar.value for c,item in enumerate(self.MatchModeOptions): if self.matchMode == c: rbValue = True else: rbValue = False self.MatchModeCollectionChoices.append(self.MatchModeCollection.createButton(MatchModeMenu,label=item, rb = rbValue, command = mUI.Callback(self.SnapModeOptionVar.setValue,c))) #>>> Define DefineMenu = mUI.MelMenuItem( parent, l='Buffer', subMenu=True) mUI.MelMenuItem( DefineMenu, l="Define", c= lambda *a: locinatorLib.defineObjBuffer(self.LocinatorUpdateObjectsBufferOptionVar)) mUI.MelMenuItem( DefineMenu, l="Add Selected", c= lambda *a: locinatorLib.addSelectedToObjBuffer(self.LocinatorUpdateObjectsBufferOptionVar)) mUI.MelMenuItem( DefineMenu, l="Remove Selected", c= lambda *a: locinatorLib.removeSelectedFromObjBuffer(self.LocinatorUpdateObjectsBufferOptionVar)) mUI.MelMenuItemDiv( DefineMenu ) mUI.MelMenuItem( DefineMenu, l="Select Members", c= lambda *a: locinatorLib.selectObjBufferMembers(self.LocinatorUpdateObjectsBufferOptionVar)) mUI.MelMenuItem( DefineMenu, l="Clear", c= lambda *a: locinatorLib.clearObjBuffer(self.LocinatorUpdateObjectsBufferOptionVar)) try:#>>> Sym Axis.... _str_section = 'Ray Cast menu' uiMenu_rayCast = mUI.MelMenuItem( parent, l='Ray Cast Mode', subMenu=True) var_RayCastMode = cgmMeta.cgmOptionVar('cgmVar_SnapMenuRayCastMode', defaultValue=0) self.uiRC_RayCast = mUI.MelRadioMenuCollection() self.uiOptions_RayCast = [] _v = var_RayCastMode.value _modes = cgmDrag._clickMesh_modes for i,item in enumerate(_modes): if i == _v: _rb = True else:_rb = False self.uiOptions_RayCast.append(self.uiRC_RayCast.createButton(uiMenu_rayCast,label=item, c = mUI.Callback(var_RayCastMode.setValue,i), rb = _rb)) except Exception,err: log.error("{0} failed to load. err: {1}".format(_str_section,err))