I ended up doing exactly like Frank suggested. Used a CurveTool to force a refresh.
*John Vanderbeck* *2D Pipeline TD* *T:* +1 604 733 7030 1205 Melville Street, Vancouver, B.C, V6E 0A6, Canada. primefocusworld.com <http://www.primefocusworld.com> On Fri, Nov 8, 2013 at 5:41 PM, Dennis Serras <dennis.ser...@bydeluxe.com>wrote: > Did you ever come up with a solve for this? I’m creating a tool to > evaluate the bbox of a read node over the entire range of a shot, and I > haven’t found a way get it to give me the correct result without running an > executable (ps, what’s the fastest executable?). > > > > > > *den serras * > > @ stereoD > > > > *From:* nuke-python-boun...@support.thefoundry.co.uk [mailto: > nuke-python-boun...@support.thefoundry.co.uk] *On Behalf Of *Frank Rueter > *Sent:* Wednesday, October 30, 2013 11:42 AM > *To:* nuke-python@support.thefoundry.co.uk > *Subject:* Re: [Nuke-python] Trying to script O_Solver > > > > I'm not aware of one, but I have been doing lots of other things besides > nuke scripting recently, so I might be missing something. > > On 31/10/13 01:05, Steve Newbold wrote: > > Hi Frank, > > Weirdly, coming to this thread doing the exact same thing with the > O_Solver. I've used this work around a while back and its been ages since > I've done any proper Python scripting, but I do vaguely remember someone > (Ivan???) saying there was going to be a better method of forcing a UI > update. I guess this didn't happen? > > Cheers, > Steve > > > On 26/10/13 08:48, Frank Rueter wrote: > > I remember having to deal with this sort of thing in the past and using a > nasty workaround like creating a dummy node that can be executed (e.g. > CurveTool), changing to the frame in question, executing the dummy node on > that frame (to force nuke to refresh the frame context), then doing what > you actually want to do on that frame, move to the next frame, rinse and > repeat, and in the end just delete the dummy node. > > There is probably (hopefully) a more elegant way now but this is how I > remember getting around the problem quickly. > > On 26/10/13 4:52 PM, John Vanderbeck wrote: > > Right but the problem is i'm not actually moving through the frames. > Just using nuke.frame() to set 3 frames. Maybe a tight loop trying to > verify the frame has taken. Worth a try. > > > > This is an automated script that is supposed to 1) set three keyframes on > then 2) o_solver (first, middle, last), and then render. Problem is that > #2 is happening before #1 is finished :) > > > - John Vanderbeck > - http://www.johnvanderbeck.com > > > > On Fri, Oct 25, 2013 at 8:14 PM, Richard Bobo <richb...@mac.com> wrote: > > > > On Oct 25, 2013, at 7:01 PM, John Vanderbeck < > john.vanderb...@primefocusworld.com> wrote: > > > > Thanks for the thoughts Rich, but I don't think its a solution. > > > > Sleeping is one of the first things I tried, but it blocks Nuke so the > functions don't actually happen. Nuke races to try and do them all at once > after the sleep and just drops most of them. > > > > As for using a conditional, i'm not sure how I would set that up, but i'm > fairly certain it isn't an option because these keys need to be set, so > that Ocula can do its thing BEFORE rendering begins. > > > > Unless I misunderstood you? > > > > I'm probably not getting the whole drift of what's happening, but what I > was suggesting was, just before the execute, doing the test… > > …… > > …… > > …... > > if nuke.frame() == firstFrame: > > addKeyKnob.execute() > > > > It sounds too easy, so I'm sure that's not what the problem is. > > > > Rich > > > > > > - John Vanderbeck > > - Prime Focus World, Vancouver > > - 2D Pipeline / Comp TD > > > > > > > > On Oct 25, 2013, at 1:29 PM, Richard Bobo <richb...@mac.com> wrote: > > > > John, > > > > This may be to simplistic, but didi you try making a condition for the > execute to be something similar to nuke.frame() == firstFrame ? > > Maybe use a try: statement with some number of tries or with a sleep time > in-between…? Just thinking…. > > > > Rich > > > > > > On Oct 25, 2013, at 1:41 PM, John Vanderbeck < > john.vanderb...@primefocusworld.com> wrote: > > > > Hey all, > > > > Been going out of my mind the last few days and hoping one of you geniuses > might be able to help ease my pain. > > > > Basically I need to script the use of O_Solver to set three keyframes. > > > > I'm running into issues though because of the way Nuke handles threads. > If I do something like this all in the main thread: > > > > solverNode = nuke.toNode("O_Solver1") > > addKeyKnob = solverNode.knob("addAnalysisKey") > > print "Jumping to frame %d" % firstFrame > > nuke.frame(firstFrame) > > print "Setting Key" > > addKeyKnob.execute() > > > > Then what happens is the key gets set, but NOT on the proper frame. Nuke > doesn't seem to have finished setting the frame before the next call, so > the key ends up being set on whatever frame the playhead happened to be on. > > > > So I then reworked things to do it all in a subthread. This worked > perfectly, but then I had the problem of knowing when it was done. If I > tried to block the main thread while waiting on the subthread, then Nuke > again wouldn't properly set the keyframes. Unfortunately it is vital that > I be able to wait and not return until all keyframes are set :( > > > > Any thoughts? > > > > -- > - John Vanderbeck > > - Prime Focus World, Vancouver > > - 2D Pipeline TD > > > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > > > > _______________________________________________ > > Nuke-python mailing list > > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > > > _______________________________________________ > > Nuke-python mailing list > > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > > > _______________________________________________ > > Nuke-python mailing list > > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > This e-mail and any attachments are intended only for use by the > addressee(s) named herein and may contain confidential information. If you > are not the intended recipient of this e-mail, you are hereby notified any > dissemination, distribution or copying of this email and any attachments is > strictly prohibited. If you receive this email in error, please immediately > notify the sender by return email and permanently delete the original, any > copy and any printout thereof. The integrity and security of e-mail cannot > be guaranteed. > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > >
_______________________________________________ Nuke-python mailing list Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python