Maya Python 第七章 使用Maya命令创建基本工具 7.1-7.3
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 = 'http://maya-python.com') 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='http://maya-python.com')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-7.3相关推荐
- Maya Python 第三章 在Maya 中编写python程序
3.2 Maya 命令 import maya.cmds as cmdssphere = cmds.polySphere() cmds.polySphere(sphere[1],edit=True,r ...
- Python 打造基于百度翻译的命令行翻译工具
Python 打造基于百度翻译的命令行翻译工具 由于英文水平一般,所以还是非常依赖翻译工具的.fanyi.baidu.com 都成了我浏览器必开的网页之一了.昨天项目上线,等待过程中,无聊写了一个基于 ...
- maya python 开根号_Python 编写Maya插件,从0到1(一)
最近生活有点鬼畜,在忙着搞SD材质库的同时,还要负责美术工具的开发.没错--每一个初级TA都绕不过的坎儿-写工具-- 最关键是--我没写过--emmm--所以最近生活有点苦--踩坑踩的脚都瘸了-- 网 ...
- maya python教程_Chris Zurbrigg的Maya Python教程合集
Chris Zurbriggs Patreon的视频更新到2020年年底.在我看来,这些视频在深度和广度以及信息质量上都是无与伦比的.如果可以,请考虑捐赠给Zurbigg. Chris Zurbrig ...
- python第七章_python 第七章 模块
模块 一个py文件就是一个模块 模块一共三种:1.python标准库 2.第三方模块 3.应用程序自定义模块 import:1.执行对应文件 2.引入变量名 if__name__="__ma ...
- python第七章_Python第七章
第 7 章 用户输入和while循环 7.1 函数input()的工作原理 message = input("Tell me something, and I will repeat it ...
- python第七章文件和数据格式化选择题_《计算机二级Python语言程序设计考试》第7章:文件和数据格式化...
注明:本系列课程专为全国计算机等级考试二级 Python 语言程序设计考试服务 目录 考纲考点 文件的使用: 文件打开.关闭和读写 数据组织的维度:一维数据和二维数据 一维数据的处理:表示.存储和处理 ...
- Python第七章-面向对象高级
面向对象高级 一. 特性 特性是指的property. property这个词的翻译一直都有问题, 很多人把它翻译为属性, 其实是不恰当和不准确的. 在这里翻译成特性是为了和属性区别开来. 属性是指的 ...
- python第七章_python教程(第七章)
字典和集合 字典是python中唯一,一个映射类型 如何创建一个字典,如下>>> dict = {"渗透":"网络安全","笔记&q ...
最新文章
- ADSL自动更换IP地址源代码
- 怎么查看linux是不是as7u4,Linux下搭建Android开发环境
- c#操作xml实例 2009-03-13 20:00
- JavaScript Object对象
- win7 64-bit minifilter
- c++ 读文件_Linux文件(文件夹)详解
- golang配置export GOPRIVATE拉取私有库代码
- 小程序分享到朋友圈功能_来啦!小程序支持分享朋友圈
- 【二分】抄书 (jzoj 2123)
- linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...
- 怎么看另一个电脑端口是否通_谁一个人睡觉另一个看看夫妻的睡眠习惯
- python编程软件排行榜_PYPL 9月编程语言排行榜发布 Python一枝独秀
- jieba库词频统计_运用jieba库进行词频统计
- python信息安全工具之端口扫描器
- 暗时间 pdf_时间管理最全的一篇:理论+实践+电子书
- 初中学校计算机机房管理制度,学校机房管理制度
- S60 Python 编程指南——如何创建pys60应用程序
- 读季琦《创始人·手记》
- ssd存储的SLC、MLC、TLC闪存芯片颗粒有什么区别?
- 软件系统产品信息安全功能点要求