Питон в 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...

РЕДАКТИРОВАТЬ:
Это швы ваш код имеет и другие проблемы...

Другие вопросы по тегам