Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Вы также сможете получать наборы цветов с помощью
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 были удалены с помощью операции удаления истории
Вы можете использовать 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.