2013-06-07 8 views
2

Я пытаюсь установить тени луча в майя вкл/выкл через функцию, эта функция читает из списка прокрутки текста (который является огнем в сцене), однако его давая мне следующую строку ошибки 106: объект «NoneType» не является итерабельным #Maya useRayTraceShadows - ошибка Python Объект NoneType не является итерабельным

wird thing Я использовал тот же код для установки атрибутов света (ов) и его работы, но не для этого, код ниже, любая помощь будет оценена по достоинству.

Ubuntu 12,04 & Python 2.7

Защиту RT_ShadowsOff():

selectedLights = cmds.textScrollList ("lgtList", query = True, selectItem = True) 

for lgt in selectedLights: 
    cmds.setAttr(lgt+".useRayTraceShadows", False) 

ответ

1

Nonetype не итерацию почти всегда означает, что вы попросили список и Майя дал вам обратно 'None' вместо пустой список. Вы можете обойти ошибки в приведенном выше коде с

selectedLights = cmds.textScrollList ("lgtList", query = True, 
             selectItem = True) or [] 

Который всегда будет возвращать список, хотя этот список будет пустым, если ничего не выбрано в вашем пользовательском интерфейсе.

Более подробную информацию о том, как обрабатывать возвращает список типа в Maya, см мой ответ на this thread

+0

Большое спасибо за быстрый ответ, ваша модификация кода работала отлично ... так что это плохая практика, чтобы сделать это так для остальной части кода? ... я имею в виду, должен ли я вернуться и изменить другие функции, даже если они работают? – John

+0

Я стараюсь делать это повсюду, так как он делает намного более чистый код: каждый 'или []' сохраняет вас хотя бы один, если 'в другом месте, и (как я упомянутый в другом сообщении), он упрощает обработку переменных аргументов последовательно. OTOH - если он не сломался ... :) Если это решило проблему, то вы помните, чтобы отметить ее, так что другие видят ее в будущем – theodox

+0

еще раз ... спасибо большое чувак ... Я отметю, что это ответили наверняка :) – John