Питон в Nuke: кроме СтопИтэйшн
В основном то, что я сейчас пытаюсь сделать, это настроить скрипт в Nuke, используя python, который берет узлы, выбранные пользователем, и добавляет к ним перемешанные узлы для упрощения процесса компоновки. Однако я застрял на том, чтобы заставить Nuke добавить перемешивание на выбранные узлы. Он работает на 1 узле, когда выбран, но если выбрано несколько, он работает только на первом выбранном. Я спросил об этом подругу, и она сказала попробовать цикл while, поэтому этот код выглядит следующим образом:
while True:
if n in nuke.selectedNodes():
name = n.name()
node = nuke.toNode(name)
blue.setInput(0,node)
green.setInput(0,node)
red.setInput(0,node)
except StopIteration :
break
Это все работает хорошо, кроме как часть. Я запустил сценарий, пока не было исключения, и он заморозил Nuke, который показывает, что он работает бесконечно, но мне нужно его остановить. Nuke говорит мне, что исключение - это неверный синтаксис. Кто-нибудь знает, как я могу это исправить или создать лучшую работу для моего процесса, на который я пытаюсь пойти?
2 ответа
Возможно, вам следует подумать о том, что вы делаете, вместо того, чтобы просто бросать синтаксис на проблему и надеяться, что она исчезнет. except
не имеет смысла без try
блок, и вы не назначаете n
в любом месте. Предположительно, вы имели в виду что-то вроде этого:
for n in nuke.selectedNodes():
name = n.name()
node = nuke.toNode(name)
blue.setInput(0,node)
green.setInput(0,node)
red.setInput(0,node)
Там нет необходимости ловить StopIteration
если вы используете итераторы, как это.
Правильный синтаксис для отлова исключения с именем <exception_name>
является:
try:
#code here...
except <exception_name>:
#code here...
РЕДАКТИРОВАТЬ:
Это швы ваш код имеет и другие проблемы...