Worked without any problems on another version of Nuke. Thanks :). 2012/5/3 Simon Björk <[email protected]>
> Thanks for taking a look at it Nathan, I will see if I can give it a try > in a newer version. Thanks for the code clean-up as well, great help. > > 2012/5/2 Nathan Rusch <[email protected]> > >> Hmm, I still can’t get it to crash... >> >> Is there any way you can try this with the latest version of Nuke to see >> if it’s possibly related to a past bug? >> >> As far as your code goes, it works fine. The only changes I would be sure >> to make (without getting too picky) are some order-of-operations things and >> some re-use of variables. >> >> >> from __future__ import with_statement >> import re >> import nuke >> >> blurPrefix = 'sg_blur' >> mergePrefix = 'sg_merge' >> nameRE = re.compile('^(%s|%s)' % (blurPrefix, mergePrefix)) >> >> def test(): >> tn = nuke.thisNode() >> >> for name, knob in tn.knobs().iteritems(): >> if nameRE.search(name): >> tn.removeKnob(knob) >> >> with tn: >> for a in nuke.allNodes('Blur') + nuke.allNodes('Merge2'): >> if nameRE.search(a.name()): >> nuke.delete(a) >> >> for i in range(1, tn['number'].value() + 1): >> blurName = '%s%d' % (blurPrefix, i + 100) >> nuke.createNode('Blur', 'name %s' % blurName, inpanel=False) >> >> k = nuke.Link_Knob('%s%d' % (blurPrefix, i), 'blur %d' % i) >> k.makeLink(blurName, 'size') >> tn.addKnob(k) >> >> mergeName = '%s%d' % (mergePrefix, i + 100) >> nuke.createNode("Merge2", 'name %s' % mergeName, >> inpanel=False) >> >> k = nuke.Link_Knob('%s%d' % (mergePrefix, i), 'merge %d' % i) >> k.makeLink(mergeName, 'mix') >> tn.addKnob(k) >> >> >> -Nathan >> >> >> *From:* Simon Björk <[email protected]> >> *Sent:* Wednesday, May 02, 2012 1:08 PM >> *To:* Nuke Python discussion <[email protected]> >> *Subject:* Re: [Nuke-python] Re: Adding/Removing knobs and crashing >> >> Hi Nathan, >> >> attached is a Nuke script that contains a group node with a python button >> and a sticky-note that contains the Python script. Just save it in your >> Nuke path. >> >> This seems to work a little bit better than my full script, but it still >> crashes a lot. It crashes for example if I set it above 10 and also often >> when I set it back to 1. In my full script I have a couple of more loops >> that does other things (set inputs, moves node around to x,y pos). I'm >> pretty new to Python so I would very much appreciate a nod in the right >> direction on this (the only reason I got this far is because of this list). >> Thanks. >> >> #! C:/Program Files/Nuke6.3v2/Nuke6.3.exe -nx >> version 6.3 v2 >> define_window_layout_xml {<?xml version="1.0" encoding="UTF-8"?> >> <layout version="1.0"> >> <window x="0" y="22" w="1680" h="1024" screen="0"> >> <splitter orientation="1"> >> <split size="1052"/> >> <splitter orientation="1"> >> <split size="40"/> >> <dock id="" hideTitles="1" activePageId="Toolbar.1"> >> <page id="Toolbar.1"/> >> </dock> >> <split size="1008"/> >> <splitter orientation="2"> >> <split size="480"/> >> <dock id="" activePageId="Viewer.1"> >> <page id="Viewer.1"/> >> </dock> >> <split size="479"/> >> <dock id="" activePageId="DAG.1"> >> <page id="DAG.1"/> >> <page id="Curve Editor.1"/> >> <page id="DopeSheet.1"/> >> </dock> >> </splitter> >> </splitter> >> <split size="608"/> >> <dock id="" activePageId="Properties.1"> >> <page id="Properties.1"/> >> <page id="Script Editor.1"/> >> </dock> >> </splitter> >> </window> >> </layout> >> } >> Root { >> inputs 0 >> name C:/Users/Simon/Desktop/to_nuke_list.nk >> fps 25 >> format "1920 1080 0 0 1920 1080 1 HD" >> proxy_type scale >> proxy_format "1024 778 0 0 1024 778 1 1K_Super_35(full-ap)" >> } >> StickyNote { >> inputs 0 >> name StickyNote1 >> label "from __future__ import with_statement\nimport os\nimport >> nuke\nimport nukescripts\nimport re\n\ndef test():\n\n n = >> nuke.thisNode()\n blur_name = \"sg_blur\"\n merge_name = >> \"sg_merge\"\n blur_reg = re.compile(blur_name)\n merge_reg = >> re.compile(merge_name)\n\n # Delete knobs\n for b in >> n.knobs():\n if blur_reg.match(b) or >> merge_reg.match(b):\n n\[b].setValue(0)\n >> nuke.message( str(n\[b].value()) )\n >> n.removeKnob(n.knobs()\[b])\n\n # Access nodes inside group:\n with >> n:\n\n # Delete old nodes.\n for a in >> nuke.allNodes():\n old_name = a\[\"name\"].value()\n >> if blur_reg.match(old_name) or merge_reg.match(old_name):\n >> if a.Class() == \"Merge2\" or a.Class() == \"Blur\":\n >> nuke.delete(a)\n\n # Set up values.\n num = >> n\[\"number\"].value()\n\n for i in range(num):\n\n # >> Create blur\n b = nuke.createNode(\"Blur\")\n >> b\[\"name\"].setValue(blur_name + str(i + 100)) \n\n # Create >> blur knobs\n k = nuke.Link_Knob( blur_name + str(i + 1) >> )\n k.makeLink(str(b\[\"name\"].value()), \"size\" >> )\n k.setLabel( \"blur\" + str(i + 1) )\n >> n.addKnob(k)\n\n #Create merge node.\n m = >> nuke.createNode(\"Merge2\")\n m\[\"name\"].setValue(merge_name + >> str(i + 100))\n\n # Create merge knobs\n e = >> nuke.Link_Knob( merge_name + str(i + 1) )\n >> e.makeLink(str(m\[\"name\"].value()), \"mix\" )\n e.setLabel( >> \"merge\" + str(i + 1) )\n n.addKnob(e)\n " >> xpos 216 >> ypos -253 >> } >> Group { >> inputs 0 >> name Group1 >> xpos -32 >> ypos 7 >> addUserKnob {20 User} >> addUserKnob {3 number l "number of loops"} >> number 3 >> addUserKnob {22 run_script l "run script" T "import >> to_nuke_list\n\nto_nuke_list.test()" +STARTLINE} >> } >> Input { >> inputs 0 >> name Input1 >> xpos 132 >> ypos -89 >> } >> NoOp { >> name NoOp1 >> xpos 132 >> ypos -49 >> } >> Output { >> name Output1 >> xpos 132 >> ypos 51 >> } >> Blur { >> inputs 0 >> name sg_blur100 >> } >> push 0 >> Merge2 { >> inputs 2 >> name sg_merge100 >> } >> Blur { >> name sg_blur101 >> } >> push 0 >> Merge2 { >> inputs 2 >> name sg_merge101 >> } >> Blur { >> name sg_blur102 >> } >> push 0 >> Merge2 { >> inputs 2 >> name sg_merge102 >> selected true >> } >> end_group >> Viewer { >> frame 1 >> viewerProcess rec709 >> input_process false >> name Viewer1 >> xpos -107 >> ypos 430 >> } >> StickyNote { >> inputs 0 >> name StickyNote2 >> label "Save this script in your Nuke-path. Name: to_nuke_list.py" >> note_font_size 21 >> xpos 128 >> ypos -327 >> } >> >> >> _______________________________________________ >> Nuke-python mailing list >> [email protected], http://forums.thefoundry.co.uk/ >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python >> >> >
_______________________________________________ Nuke-python mailing list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
