【问题标题】:Selecting all items individually in a list在列表中单独选择所有项目
【发布时间】:2014-06-26 03:09:30
【问题描述】:

我想知道是否可以重新选择 rsList 中的每一项? 我在下面引用了一个简单的例子,但我正在查看场景中的数百个项目,因此下面是我能够根据我对 Python 的有限知识提出的最简单的编码形式

rsList = cmds.ls(type='resShdrSrf')
# Output: [u'pCube1_GenShdr', u'pPlane1_GenShdr', u'pSphere1_GenShdr']

我尝试使用以下 cmds.select,但它考虑了我的最后一个选择(在内存中) - pSphere1_GenShdr,而忘记了其他 2 个,即使在 UI 中看到所有三个项目都被选中。

尝试使用列表和追加,但它似乎也没有工作,选择保持不变......

list = []
for item in rsList:
    list.append(item)
    cmds.select(items)
    #cmds.select(list)

因此,我是否可以对每个项目单独执行cmds.select

【问题讨论】:

  • 所以你的说法:rsList.select(list, replace=True) 不选择项目?您的循环本身毫无意义,您没有项目变量。对象名称是否有可能在两者之间发生变化。
  • @joojaa 对象名称没有变化。情况是这样的:rexShaderSrf - 它们是自定义着色器,但由于某些原因,除非我手动选择每个着色器,否则我会得到黑色渲染。如果我使用上面的代码,尽管它会在 hypershade 中打印并突出显示所有 3 个,但在再次重新渲染时,它只会渲染列表中的最后一个选择。因此,除非我必须手动重新选择其他 2 个,否则我将能够获得正确的渲染。因此,我认为可能有一些方法可以对列表中的所有项目再次进行强制选择
  • 听起来更像是影响网络的问题。在这种情况下,刷新的不是选择,而是他 gui。由于 gui 不会在您的循环中刷新,因此它什么也不做。重新设计节点初始化。
  • @joojaa 你是什么意思?自定义着色器本身不是我创建的。有什么方法可以在 Maya 中或通过脚本解决它?
  • 或者是否有任何类型的文档可以让我阅读更多相关信息?

标签: python maya


【解决方案1】:

如果您尝试只选择每个项目:

import pymel.core as pm
for i in pm.ls(sl=True):
    i.select()

但这应该对您的渲染没有影响

【讨论】:

    【解决方案2】:

    我认为,对于我来说,这是一种特殊情况,在我可以复制之前,我需要添加 mm.eval("autoUpdateAttrEd;") 来创建我的着色器。

    显然我需要这个命令才能让它工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 2013-01-23
      • 2014-09-01
      • 1970-01-01
      相关资源
      最近更新 更多