节点创建覆盖导致错误
Node creation overriding causing error
我一直在尝试学习一些 Python 来改进我使用 The Foundry NUKE 时的工作流程。我一直在进行各种覆盖,以在创建时更改节点。其中之一是 StickyNote
我之前有这个覆盖:
def setColor(R,G,B):
return int("%02x%02x%02x%02x" % (R,G,B,1),16)
def StickyNoteOverride():
nuke.thisNode()["tile_color"].setValue(setColor(R=(255*.298),G=(255*.298),B=(255*.298)))
nuke.thisNode()["note_font_size"].setValue(60)
nuke.thisNode()["note_font_color"].setValue(setColor(R=(255),G=(255*.624),B=(255*.0)))
nuke.thisNode()["note_font"].setValue("Deja Vu Sans Bold")
它给了我预期的结果,但后来我试图让它在创建时清除标签为空。
所以我在底部添加了这一行:
nuke.thisNode()["label"].setValue("")
并且它没有将标签的值设置为空。
所以我将其更改为:
def StickyNoteOverride():
noteNode = nuke.createNode("StickyNote")
noteNode["tile_color"].setValue(setColor(R=(255*.298),G=(255*.298),B=(255*.298)))
noteNode["note_font_size"].setValue(60)
noteNode["note_font_color"].setValue(setColor(R=(255),G=(255*.624),B=(255*.0)))
noteNode["note_font"].setValue("Deja Vu Sans Bold")
noteNode["label"].setValue("")
现在,此脚本创建的节点的值设置符合预期,但对我而言,它创建了大约 200 个节点,直到出现错误。所有这些都在我的 menu.py
文件底部的 addressed/called 中:
nuke.addOnUserCreate(StickyNoteOverride, nodeClass = "StickyNote")
我正在寻找一些帮助来找出在创建时将标签添加为空的方法。
谢谢,希望这是可以理解的。
试试这个(它绝对适用于 Script Editor
):
import nuke
import nukescripts
m = toolbar.addMenu("Other", "ToolbarOther.png")
m.addCommand("StickyNote", "nukescripts.toolbar_sticky_note()", "#n", icon="StickyNote.png")
def toolbar_sticky_note():
sticky = nuke.createNode("StickyNote")
sticky.knob("label").setValue("")
sticky.knob("selected").setValue(False)
toolbar_sticky_note()
然后试试这个(在 menu.py
中有效):
m = toolbar.addMenu("Other", "ToolbarOther.png")
m.addCommand("StickyNote", "nuke.createNode('StickyNote')", "#n", icon="StickyNote.png")
或此语法:
m = toolbar.addMenu("Other", "ToolbarOther.png")
m.addCommand("StickyNote", "nuke.createNode('StickyNote', 'label <H6>test</H6> note_font Phosphate')", "#n", icon="StickyNote.png")
我一直在尝试学习一些 Python 来改进我使用 The Foundry NUKE 时的工作流程。我一直在进行各种覆盖,以在创建时更改节点。其中之一是 StickyNote
我之前有这个覆盖:
def setColor(R,G,B):
return int("%02x%02x%02x%02x" % (R,G,B,1),16)
def StickyNoteOverride():
nuke.thisNode()["tile_color"].setValue(setColor(R=(255*.298),G=(255*.298),B=(255*.298)))
nuke.thisNode()["note_font_size"].setValue(60)
nuke.thisNode()["note_font_color"].setValue(setColor(R=(255),G=(255*.624),B=(255*.0)))
nuke.thisNode()["note_font"].setValue("Deja Vu Sans Bold")
它给了我预期的结果,但后来我试图让它在创建时清除标签为空。
所以我在底部添加了这一行:
nuke.thisNode()["label"].setValue("")
并且它没有将标签的值设置为空。
所以我将其更改为:
def StickyNoteOverride():
noteNode = nuke.createNode("StickyNote")
noteNode["tile_color"].setValue(setColor(R=(255*.298),G=(255*.298),B=(255*.298)))
noteNode["note_font_size"].setValue(60)
noteNode["note_font_color"].setValue(setColor(R=(255),G=(255*.624),B=(255*.0)))
noteNode["note_font"].setValue("Deja Vu Sans Bold")
noteNode["label"].setValue("")
现在,此脚本创建的节点的值设置符合预期,但对我而言,它创建了大约 200 个节点,直到出现错误。所有这些都在我的 menu.py
文件底部的 addressed/called 中:
nuke.addOnUserCreate(StickyNoteOverride, nodeClass = "StickyNote")
我正在寻找一些帮助来找出在创建时将标签添加为空的方法。
谢谢,希望这是可以理解的。
试试这个(它绝对适用于 Script Editor
):
import nuke
import nukescripts
m = toolbar.addMenu("Other", "ToolbarOther.png")
m.addCommand("StickyNote", "nukescripts.toolbar_sticky_note()", "#n", icon="StickyNote.png")
def toolbar_sticky_note():
sticky = nuke.createNode("StickyNote")
sticky.knob("label").setValue("")
sticky.knob("selected").setValue(False)
toolbar_sticky_note()
然后试试这个(在 menu.py
中有效):
m = toolbar.addMenu("Other", "ToolbarOther.png")
m.addCommand("StickyNote", "nuke.createNode('StickyNote')", "#n", icon="StickyNote.png")
或此语法:
m = toolbar.addMenu("Other", "ToolbarOther.png")
m.addCommand("StickyNote", "nuke.createNode('StickyNote', 'label <H6>test</H6> note_font Phosphate')", "#n", icon="StickyNote.png")