常用命令
这三个绝对是最常用的命令了
help
dir
print
ls
assemblies
列出大纲顶层节点fl
逐个列出- recursive
ls
命令上提供了recurse
标志,以递归遍历所有子名称空间。pm.ls('*ue*', recursive=1)
recursive遍历所有名称空间 或者pm.ls(::*ue*)
然后下面是我整理的一些常用命令
这部分是cmds与pymel都可直接调用的
- xform 获取信息
- joint 骨骼
- skinCluster 蒙皮
- blendShape 融合变形
- ployEvaluate 查询多边形计数
- listAttr 列出属性
- getAttr 获得属性
- setAttr 设置属性
- hyperShade 查询物体材质
- hyperShade 获取物体材质
- expression 创建表达式
- s 表达式的字符串
- ae 永远执行
- o 目标物体
- uc 数据转换
duplicateCurve 复制
inputConnections(ic)
复制输入节点
smartTransform(st)
记录上次变换,并重复复制(快捷键shift+D)
returnRootsOnly(rr)
仅返回新层次结构的根节点。此标志仅控制返回的内容,不会更改Duplicate的行为。
renameChildren(rc)
重命名子物体,使名称唯一
(po)
仅复制选中节点,忽略子物体
transformsOnly(to)
仅复制transform节点
duplicateCurve 复制面上的曲线
constructionHistory(ch)
保留创建历史
local(l)
复制曲线作为曲面的子物体
maxValue(max)
曲线跨度最大值
minValue(min)
曲线跨度最小值
根据物体类型筛选 (filterExpand)
expand(ex)
如果这是真的,则每个项目都是单个实体。默认为true
fullPath(fph)
如果这是真的并且选择项是DAG对象,则返回其完整选择路径,而当此值为false时仅返回对象的名称。默认值为false
selectionMask(sm)
指定选择掩码
symActive(sma)
如果启用了对称,则仅返回对象的活动对称侧的组件。如果对称性未激活,则此标志无效。
spnHegative (smn)
如果启用对称,则仅返回对象相对于当前对称平面的负面上的组件。如果对称性未激活,则此标志无效。
synPositive (smp)
如果启用了对称,则仅返回对象正面相对于当前对称平面的组件。如果对称性未激活,则此标志无效
synSeam(sms)
如果启用了对称性,则仅返回相对于当前对称平面位于对象两侧的组件。如果对称性未激活,则此标志无效。
- 根据选定的组件(或命令行中指定的组件),命令会过滤和/或扩展给定选项的列表。返回包含所有匹配选择项的字符串数组。筛选索引如下:
Object Type | Mask | Object Type | Mask |
—|—|—|—|—
Handle | 0 | Nurbs Curves | 9
Nurbs Surfaces | 10 | Nurbs Curves On Surface | 11
Polygon | 12 | Locator XYZ | 22|Orientation Locator | 23
Locator UV | 24 | Control Vertices (CVs) | 28
Edit Points | 30 | Polygon Vertices | 31
Polygon Edges | 32 | Polygon Face | 34
Polygon UVs | 35 | Subdivision Mesh Points | 36
Subdivision Mesh Edges | 37 | Subdivision Mesh Faces | 38
Curve Parameter Points | 39 | Curve Knot | 40
Surface Parameter Points | 41 | Surface Knot | 42
Surface Range | 43 | Trim Surface Edge | 44
Surface Isoparms | 45 | Lattice Point | 46
Particles | 47 | Scale Pivots | 49
Rotate Pivots | 50 | Select Handles | 51
Subdivision Surface | 68 | Polygon Vertex Face | 70
NURBS Surface Face | 72 | Subdivision Mesh UVs | 73
这部分是maya自带的mel脚本,需要通过pymel.core.mel调用
针对具体需求的简短代码
判断面材质
shadeFace = cmds.listConnections(obj)
if shadeFace > 1:
print('存在分面材质')
常用标记
- q 查询模式
- e 编辑模式
- ws\worldSpace 世界坐标
- os\objectSpace 物体坐标
- s\shape 形节点
- tr\transform 转换节点
- t\
- ro\
- s\
- allPath 全路径
UI相关
以下标记为maya自身提供的ui功能常用标记,既然学了python建议直接上手pyqt,稍微了解一下就好
bgc
rgb颜色- w 宽度
- h 高度
- c 点击执行(按钮用)
- bc 点击执行(组合按钮用)
- dc 滑动条滑动过程中重复执行
cc/changeComband
改变执行- vis 可见性
- ex 是否存在
- t 标题
- l 标签
- cw 指定列的长度
- i/image 图片
en
可编辑ann
注释fpn
完整路径dgc
中键按下执行
def callbackName( dragControl, x, y, modifiers ):
数组中的第一个字符串描述用户可设置的消息类型。应用程序定义的拖动源控件可能会忽略回调。 modifiers 允许测试键修饰符CTRL和SHIFT。可能的值为0 **无修饰符,1 ** SHIFT,2 ** CTRL,3 ** CTRL + SHIFT。
dpc
鼠标拖拽执行
def pythonDropTest(dragControl,dropControl,messages,x,y,dragType):
#def接收从拖动源传输的字符串数组。messages数组中的第一个字符串描述了用户定义的消息类型。
#应用程序定义的丢弃站点的控件可能会忽略回调。type的值可以是1 ** Move,2 ** Copy,3 ** Link。
获取模型蒙皮节点(点线面无效) pm.mel.findRelatedSkinCluster('skinObj')
获取mel的全局变量: pm.language.melGlobals['gMainWindow']
后台启动maya的方法
方法一
import subprocess
MAYA_PATH = r'C:\Program Files\Autodesk\Maya2018\bin\mayapy.exe'.replace('\\','/') # mayapy路径 后台启动这个程序不需要调用UI
CMD_PATH = r'E:\MayaScripts\test.py' # 脚本路径
argv_str = '' # test.py需要的参数
subprocess.call(r'{} {} {}'.format(MAYA_PATH, CMD_PATH, argv_str))
方法二
import maya.standalone
maya.standalone.initialize() #启动 maya
加载插件
官方给的mel
脚本,Py
调用.需要pm.mel
搜索并执行mel脚本 source
创建包裹 doWrapArgList"7"{"1","0","1","2","0","1","1","0"}
maya菜单栏增加命令
# maya主窗口:
MainMayaWindow=pm.language.melGlobals['gMainWindow']
# 菜单栏增加菜单
customMenu=pm.menu(u'newMenu',parent=MainMayaWindow)
# 添加下拉命令
pm.menuItem(label=u"个人菜单",command='pass',parent=customMenu)
选择同一个相连接的上的所有点 pm.mel.polyConvertToShell()
面选择点: cmds.ConvertSelectionToVertices()
列出最近打开文件: pm.optionVar(q='RecentFilesList')