-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME.rst
273 lines (195 loc) · 5.39 KB
/
README.rst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
CPMel
=====
一个现代的maya python库
ta有以下设计目标
^^^^^^^^^^^^^^^^
1. 相对较快地初始化速度
2. 易于与maya-api1、maya-api2交互
3. 易于扩展
4. 够用的性能
目录
----
- `快速开始 <#快速开始>`__
- `安装 <#安装>`__
- `测试 <#测试>`__
- `使用教程 <#使用教程>`__
- `命令调用 <#命令调用>`__
- `获得选择列表 <#获得选择列表>`__
- `创建关节 <#创建关节>`__
- `创建UI <#创建UI>`__
- `与api交互 <#与api交互>`__
- `获得节点的函数集对象 <#获得节点的函数集对象>`__
- `获得属性的MPlug对象 <#获得属性的MPlug对象>`__
- `一些其他的 <#一些其他的>`__
- `常用的对象方法 <#常用的对象方法>`__
- `名称相关操作 <#名称相关操作>`__
- `dag相关操作 <#dag相关操作>`__
- `附加特性 <#附加特性>`__
- `属性相关操作 <#属性相关操作>`__
- `版权说明 <#版权说明>`__
快速开始
--------
安装
~~~~
注意下方的python是你的Python, 正常情况下可以直接通过python调用,
而Maya的python一般是”C:\\Program Files\\Autodesk\\\\bin\\mayapy.exe”
.. code:: commandline
python -m pip install cpmel
在windows下maya的安装例子
注意:
1. 请将Maya路径替换为自己的。
2. 请使用cmd
.. code:: commandline
"C:\Program Files\Autodesk\Maya2018\bin\mayapy.exe" -m pip install cpmel
测试
~~~~
执行以下程序应当可以获得选择列表,如果正确那么恭喜你安装完成!
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
sel = cc.ls(sl=True)
使用教程
--------
命令调用
~~~~~~~~
获得选择列表
^^^^^^^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
sel = cc.ls(sl=True)
创建关节
^^^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
cc.select(cl=True)
jin = cc.joint()
创建UI
^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
window_name = 'your_window_name'
if cc.window(window_name, ex=True):
cc.deleteUI(window_name)
cc.window(window_name)
with cc.flowLayout():
cc.button()
cc.button()
cc.button()
cc.showWindow()
与api交互
~~~~~~~~~
获得节点的函数集对象
^^^^^^^^^^^^^^^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
node = cc.createNode('transform')
# api1版本的函数集对象
node.api1_m_fn()
# api2版本的函数集对象
node.api2_m_fn()
获得属性的MPlug对象
^^^^^^^^^^^^^^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
node = cc.createNode('transform')
attr = node.tx
# api1版本的
attr.api1_m_plug()
# api2版本的
attr.api2_m_plug()
一些其他的
^^^^^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
node = cc.createNode('transform')
# api1版本
node.api1_m_fn_dependency_node()
node.api1_node_object()
node.api1_m_dag_path()
# api2版本
node.api2_m_fn_dependency_node()
node.api2_node_object()
node.api2_m_dag_path()
常用的对象方法
~~~~~~~~~~~~~~
名称相关操作
^^^^^^^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
node = cc.createNode('transform')
# 获得最短名称
node.name()
# 仅获得节点名称
node.node_name()
# 获得完整路径
node.full_path_name()
dag相关操作
^^^^^^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
node_a = cc.createNode('transform')
node_b = cc.createNode('transform')
node_c = cc.createNode('transform')
# 设置父对象
node_a.parent = node_b
# or node_a.set_parent(node_b)
# 获得父对象
print('获得父对象', node_a.parent)
# or node_a.get_parent()
# 添加子对象
node_c.add_child(node_b)
# 获得子对象
print('获得子对象', node_c.childs)
# or node_c.get_childs()
附加特性
~~~~~~~~
属性相关操作
^^^^^^^^^^^^
.. code:: python
# -*-coding:utf-8 -*-
from __future__ import unicode_literals, print_function, division
import cpmel.cmds as cc
node = cc.createNode('transform')
# 获得属性
# 方法1
tx_attr = node.tx
# 方法2 ps: 在节点属性名称与对象属性冲突时可以使用这个
tx_attr = node.attr('tx')
# 读写属性
# 方法1
# 写
node['tx'] = 1.0
# 读
tx_val = node['tx']
# 方法2
# 写
node.tx.set_value(1.0)
# 读
tx_val = node.tx.get_value()
# 连接属性
# 方法1
node.tx >> node.ty
# 方法2
node.tx.connect(node.ty)
# 断开属性连接
node.tx.disconnect(node.ty)
版权说明
--------
该项目签署了Apache-2.0 授权许可,详情请参阅 LICENSE