Maya Python 第七章 使用Maya命令创建基本工具 7.1

编程入门 行业动态 更新时间:2024-10-27 14:30:20

Maya Python <a href=https://www.elefans.com/category/jswz/34/1672944.html style=第七章 使用Maya命令创建基本工具 7.1"/>

Maya Python 第七章 使用Maya命令创建基本工具 7.1

7.2 基本GUI命令

在GUI元素名称前添加其姓名或工作室的首字母作为前缀。

import maya.cmds as cmdscmds.deleteUI(win,window = True)
win = cmds.window('ar_optionsWindow',title = 'My First Window',widthHeight = (546,350))
cmds.showWindow(win)

7.3 构建窗基类

class AR_OptionsWindow(object):def __init__(self):self.window = 'ar_optionWindow'self.title = 'Options Window'self.size = (546,350)def create(self):if cmds.window(self.window,exists = True):cmds.deleteUI(self.window,window = True)self.window = cmds.window(self.window,title = self.title,widthHeight = self.size)cmds.showWindow()      testWindow = AR_OptionsWindow()
testWindow.create()        

 

class AR_OptionsWindow(object):def __init__(self):self.window = 'ar_optionWindow'self.title = 'Options Window'self.size = (546,350)      def commonMenu(self):self.editMenu = cmds.menu(label = 'Edit')self.editMenuSave = cmds.menuItem(label = 'Save Settings')self.editMenuReset = cmds.menuItem(label = 'Restet Settings'        )self.editMenuDiv = cmds.menuItem(d = True)self.editMenuRadio = cmds.radioMenuItemCollection()self.editMenuTool = cmds.menuItem(label = 'As Tool',radioButton = True,#enable = self.supportsToolAction           )self.editMenuTool = cmds.menuItem(label = 'As Action',radioButton = True,# enable = self.supportsToolAction           )self.helpMenu = cmds.menu(label = 'Help')self.helpMenuItem = cmds.menuItem(label = 'Help on %s'%self.title)def create(self):if cmds.window(self.window,exists = True):cmds.deleteUI(self.window,window= True)self.window = cmds.window(self.window,title = self.title,widthHeight = self.size,menuBar  = True)self.commonMenu()cmds.showWindow()testWindow = AR_OptionsWindow()
testWindow.create()        

对GUI对象执行命令

使用functools模块

from functools import partial
import maya.cmds as cmdsclass LocatorWindow(object):def __init__(self):self.win = cmds.window('ar_locSample',widthHeight=(100, 100),menuBar=True)self.menu = cmds.menu(label='Make Locators')for i in range(5):cmds.menuItem(l='Make %i' % (i + 1),command=partial(self.makeLocCmd, i + 1))cmds.showWindow()def makeLocCmd(self, numLocators, *args):locs = []for i in range(numLocators):locs.append(cmds.spaceLocator(p=[-(numLocators + 1) * 0.5 + i + 1, 0, 0])[0])cmds.select(locs)win = LocatorWindow()

完整的AR_OptionsWindow类:

import os
import maya.cmds as cmds
import maya.mel as melclass AR_OptionsWindow(object):@classmethoddef showUI(cls):win = cls()win.create()return windef __init__(self):self.window = 'ar_optionsWindow'    self.title = 'Options Window'self.size = (546,350)self.supportsToolAction = Falseself.actionName = 'Apply and Close'def create(self):if cmds.window(self.window,exists = True):cmds.deleteUI(self.window,window = True)self.window = cmds.window(self.window,title = self.title,widthHeight = self.size,menuBar = True       ) self.mainForm = cmds.formLayout(nd = 100)self.commonMenu()self.commonButtons()self.optionsBorder = cmds.tabLayout(scrollable = True,tabsVisible = False,height = 1)    cmds.formLayout(self.mainForm, e=True,attachForm=([self.optionsBorder,'top',0],[self.optionsBorder,'left',2],[self.optionsBorder,'right',2]),attachControl = ([self.optionsBorder,'bottom',5,self.applyBtn]       ))           self.optionsForm = cmds.formLayout(nd = 100)#self.displayOptions()cmds.showWindow()def commonMenu(self):self.editMenu = cmds.menu(label = 'Edit')self.editMenuSave = cmds.menuItem(label =  'Save Settings',command = self.editMenuSaveCmd)self.editMenuReset = cmds.menuItem(label = 'Reset Settings',command = self.editMenuResetCmd        )self.editMenuDiv = cmds.menuItem(d = True)self.editMenuRadio = cmds.radioMenuItemCollection()self.editMenuTool = cmds.menuItem(label = 'As Tool',radioButton = True,enable = self.supportsToolAction,command = self.editMenuToolCmd)self.editMenuAction = cmds.menuItem(label = 'As Action',radioButton = True,enable = self.supportsToolAction,command = self.editMenuActionCmd)    self.helpMenu = cmds.menu(label = 'Help')self.helpMenuItem = cmds.menuItem(label = 'Help on %s'%self.title,command = self.helpMenuCmd)def helpMenuCmd(self,*args):cmds.launch(web = '')    def editMenuSaveCmd(self,*args):passdef editMenuResetCmd(self,*args):passdef editMenuToolCmd(self,*args):passdef editMenuActionCmd(self,*args):pass   def actionBtnCmd(self,*args):self.applyBtnCmd()self.closeBtnCmd()def applyBtnCmd(self,*args):pass def closeBtnCmd(self,*args):cmds.deleteUI(self.window,window =True)def commonButtons(self):self.commonBtnSize = ((self.size[0]-18)/3,26)self.actionBtn = cmds.button(label = self.actionName,height = self.commonBtnSize[1],command = self.actionBtnCmd)self.applyBtn = cmds.button(label = 'Apply',height = self.commonBtnSize[1],command = self.applyBtnCmd)self.closeBtn = cmds.button(label = 'Close',height = self.commonBtnSize[1],command = self.closeBtnCmd)cmds.formLayout(self.mainForm, e = True,attachForm = ([self.actionBtn,'left',5],[self.actionBtn,'bottom',5],[self.applyBtn,'bottom',5],[self.closeBtn,'bottom',5],  [self.closeBtn,'right',5]         ),attachPosition = ([self.actionBtn,'right',1,33],[self.closeBtn,'left',0,67]),    attachControl = ([self.applyBtn,'left',4,self.actionBtn],[self.applyBtn,'right',4,self.closeBtn]),attachNone = ([self.actionBtn,'top'],[self.applyBtn,'top'],[self.closeBtn,'top']) )   def displayOpitons(self):pass win = AR_OptionsWindow()
win.create()
import os
import maya.cmds as cmds
import maya.mel as melclass AR_OptionsWindow(object):@classmethoddef showUI(cls):win = cls()win.create()return windef __init__(self):self.window = 'ar_optionsWindow'self.title = 'Options Window'self.size = (546, 350)self.supportsToolAction = Falseself.actionName = 'Apply and Close'def create(self):if cmds.window(self.window, exists=True):cmds.deleteUI(self.window, window=True)self.window = cmds.window(self.window,title=self.title,widthHeight=self.size,menuBar=True)self.mainForm = cmds.formLayout(nd=100)self.commonMenu()self.commonButtons()self.optionsBorder = cmds.tabLayout(scrollable=True,tabsVisible=False,height=1)cmds.formLayout(self.mainForm, e=True,attachForm=([self.optionsBorder, 'top', 0],[self.optionsBorder, 'left', 2],[self.optionsBorder, 'right', 2]),attachControl=([self.optionsBorder, 'bottom', 5, self.applyBtn]))self.optionsForm = cmds.formLayout(nd=100)self.displayOptions()cmds.showWindow()def commonMenu(self):self.editMenu = cmds.menu(label='Edit')self.editMenuSave = cmds.menuItem(label='Save Settings',command=self.editMenuSaveCmd)self.editMenuReset = cmds.menuItem(label='Reset Settings',command=self.editMenuResetCmd)self.editMenuDiv = cmds.menuItem(d=True)self.editMenuRadio = cmds.radioMenuItemCollection()self.editMenuTool = cmds.menuItem(label='As Tool',radioButton=True,enable=self.supportsToolAction,command=self.editMenuToolCmd)self.editMenuAction = cmds.menuItem(label='As Action',radioButton=True,enable=self.supportsToolAction,command=self.editMenuActionCmd)self.helpMenu = cmds.menu(label='Help')self.helpMenuItem = cmds.menuItem(label='Help on %s' % self.title,command=self.helpMenuCmd)def helpMenuCmd(self, *args):cmds.launch(web='')def editMenuSaveCmd(self, *args): passdef editMenuResetCmd(self, *args): passdef editMenuToolCmd(self, *args): passdef editMenuActionCmd(self, *args): passdef actionBtnCmd(self, *args):self.applyBtnCmd()self.closeBtnCmd()def applyBtnCmd(self, *args): passdef closeBtnCmd(self, *args):cmds.deleteUI(self.window, window=True)def commonButtons(self):self.commonBtnSize = ((self.size[0] - 18) / 3, 26)self.actionBtn = cmds.button(label=self.actionName,height=self.commonBtnSize[1],command=self.actionBtnCmd)self.applyBtn = cmds.button(label='Apply',height=self.commonBtnSize[1],command=self.applyBtnCmd)self.closeBtn = cmds.button(label='Close',height=self.commonBtnSize[1],command=self.closeBtnCmd)cmds.formLayout(self.mainForm, e=True,attachForm=([self.actionBtn, 'left', 5],[self.actionBtn, 'bottom', 5],[self.applyBtn, 'bottom', 5],[self.closeBtn, 'bottom', 5],[self.closeBtn, 'right', 5]),attachPosition=([self.actionBtn, 'right', 1, 33],[self.closeBtn, 'left', 0, 67]),attachControl=([self.applyBtn, 'left', 4, self.actionBtn],[self.applyBtn, 'right', 4, self.closeBtn]),attachNone=([self.actionBtn, 'top'],[self.applyBtn, 'top'],[self.closeBtn, 'top']))def displayOptions(self):passclass AR_PolyOptionsWindow(AR_OptionsWindow):def __init__(self):AR_OptionsWindow.__init__(self)self.title = 'Polygon Creation Options'self.actionName = 'Create'def displayOpitons(self):sefl.objType = cmds.radioButtonGrp(label='Object Type',labelArray4=['Cube','Cone','Cylinder','Sphere'],numberOfRadioButtons=4,select=1)self.xformGrp = cmds.frameLayout(label='Transformations',collapsable=True)cmds.formLayout(self.optionsForm, e=True,attachControl=([self.xformGrp, 'top', 2, self.objType]),attachForm=([self.xformGrp, 'left', 0],[self.xformGrp, 'right', 0]))self.xformCol = cmds.columnLayout()self.position = cmds.floatFieldGrp(label='Positon:',numberOfFields=3)self.rotation = cmds.floatFieldGrp(label='Rotation (XYZ):',numberOfFields=3)self.scale = cmds.floatFieldGrp(label='Scale:',numberOfFields=3,value=[1.0, 1.0, 1.0, 1.0])cmds.setParent(self.optionsForm)def applyBtnCmd(self, *args):self.objIndAsCmd = {1: cmds.polyCube,2: cmds.polyCone,3: cmds.polyCylinder,4: cmds.polySphere}objIndex = cmds.radioButtonGrp(self.objType, q=True,select=True)newObject = self.objIndAsCmd[objIndex]()pos = cmds.floatFieldGrp(self.position, q=True,value=True)pos = cmds.floatFieldGrp(self.rotation, q=True,value=True)pos = cmds.floatFieldGrp(self.scale, q=True,value=True)cmds.xform(newObject[0],t=pos,ro=rot,s=scale)AR_PolyOptionsWindow.showUI()

更多推荐

Maya Python 第七章 使用Maya命令创建基本工具 7.1

本文发布于:2023-06-29 03:41:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/938518.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第七章   命令   工具   Maya   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!