Как создать список цветовых наборов, получить к ним доступ и удалить их в Maya? - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь перечислить имена наборов цветов, чтобы контролировать, сколько из них у меня есть в данной сетке. Я не могу передать правильную переменную в cmds.ls для распознавания colorSet

Я прочитал, и кажется, что в основном cmds.ls используется для сеток, но с правильными атрибутами он может использоваться для перечисления практически всего

import maya.cmds as cmds

colorList = cmds.ls('colorSet*', sl=True, long=True)
objects = cmds.ls( sl=True, long=True)

if len(objects) > 0:
    if len(colorList) > 0:
        cmds.delete(colorList)

    result=cmds.polyColorSet(cr=True, colorSet='colorSet') 
    result=cmds.polyColorSet(cr=True, colorSet='colorSet')

Код в конечном итоге игнорирует оператор if и продолжает бесконечно создавать наборы цветов. Как заставить мой код удалить старые, прежде чем создавать новые?

Ответы [ 2 ]

3 голосов
/ 08 апреля 2019

Вы можете использовать cmds.listHistory, чтобы получить все входные данные от объекта, затем cmds.ls, чтобы отфильтровать этот результат, чтобы найти любые наборы цветов:

import maya.cmds as cmds

for obj in cmds.ls(sl=True):  # Loop through the selection.
    history = cmds.listHistory(obj)  # Get a list of the object's history nodes, which may include a color set.
    existing_color_sets = cmds.ls(history, type="createColorSet")  # Filter history nodes to only color sets.
    if existing_color_sets:  # If a color set exists, delete it.
        cmds.delete(existing_color_sets)

    cmds.polyColorSet(obj, cr=True, colorSet="colorSet")  # Create a new color set.
2 голосов
/ 08 апреля 2019

Вы также сможете получать наборы цветов с помощью

cmds.polyColorSet( your_object_here, q=True, acs=True ) 

Чтобы избежать дополнительных None проверок, я бы попробовал

def num_color_sets(obj):
    return len(cmds.polyColorSet( obj, q=True, acs=True ) or [])

Это должно работать, даже если фактическоеузлы colorSet были удалены с помощью операции удаления истории

...