所以为了简单起见,我在 NUKE 中编写了一个脚本,它将节点图中的选定节点对齐到 Y 轴上的一条直线上。我在编写elif
语句时遇到问题,该语句要么没有按我想要的方式运行,要么给我一个语法错误。
所以函数的基础是:
ELSE STATEMENT
- 当只选择一个节点时 - 弹出错误消息说用户必须选择多个节点
ELIF STATEMENT
- 选择两个或多个在相同y轴的节点 - 消息显示它们已经对齐
IF STATEMENT
- 当在不同的y轴中选择两个或多个节点时 - 它应正确对齐直线中的所有节点
# Getting selected nodes and making them into a list
selNodes = nuke.selectedNodes()
list = []
for node in selNodes:
n = node['ypos'].value()
list.append(n)
# Defining the actual function
def alignY():
# Aligning the selected nodes using average position of every node.
# Must select more than one node in order to get an average.
if len(selNodes) > 1:
total = sum(list)
average = total / len(selNodes)
for node in selNodes:
n = node['ypos'].setValue(average)
# Getting the position of a single node from the list
firstNodePostion = list[0]
# Checking position of the single node is equivalent to the average
# To prevent nodes aligning again)
elif average == firstNodePostion:
nuke.message("Nodes already Aligned")
# When no nodes or only one node is selected this message pops up
else:
nuke.message("Select Two or more Nodes")
alignY()