请帮我写一个maya 里清除除了shape 意外的所有操作里的的代码 要保证listhistory函数得到的始终只有一个
时间: 2024-03-06 07:47:36 浏览: 29
好的,以下是清除除了shape以外的所有操作的代码:
```python
import maya.cmds as cmds
# 获取当前选中物体的shape节点
sel = cmds.ls(selection=True)
if len(sel) != 1:
print("请选中一个物体")
else:
shape_node = cmds.listRelatives(sel[0], shapes=True)[0]
# 获取所有非shape操作的节点
history_nodes = cmds.listHistory(sel[0], pruneDagObjects=True, il=2, pdo=True)
non_shape_nodes = []
for node in history_nodes:
if node != shape_node:
non_shape_nodes.append(node)
# 删除所有非shape节点
if len(non_shape_nodes) > 0:
cmds.delete(non_shape_nodes)
# 确保只有一个操作节点
history_nodes = cmds.listHistory(sel[0], pruneDagObjects=True, il=2, pdo=True)
if len(history_nodes) > 1:
cmds.bakePartialHistory(sel[0], prePostDeformers=True)
```
这段代码首先获取当前选中物体的shape节点,然后获取所有非shape操作的节点,并删除它们。最后,通过再次获取历史记录节点来确保只有一个操作节点,并通过`bakePartialHistory`函数将其转换为不可编辑的历史记录。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)