Thanks a lot Richard, seems to work great!

I'm not sure I follow the use of two classes and the threading part still
seems like a mystery to me, but I'll study your code and hopefully get a
better understanding of this.

Cheers!



-------------------------------
Simon Björk
Compositor/TD

+46 (0)70-2859503
www.bjorkvisuals.com


2014-04-25 19:31 GMT+02:00 Richard Bobo <richb...@mac.com>:

> Simon,
>
> OK, based on Nathan’s suggestions and a little help from our in-house
> programmer, I have a working version:
>
> http://pastebin.com/Siy8VEV8
>
> There are two classes now — one for the Write node Selection/Render panel
> and one for the threaded nuke.execute command.
>
> In the knobChanged method, when you press the render button, the
> renderWrites class in initialized and started -- with an argument of the
> name of the currently selected Write node from the drop down menu. That is
> passed to the renderWrites class and provided as the argument to the
> nuke.execute function inside executeInMainThread.
>
> Nathan — Is this pretty much what you meant…?
>
>
> Rich
>
>
> Rich Bobo
> Senior VFX Compositor
> Armstrong White
> Email:  rich.b...@armstrong-white.com
> http://armstrong-white.com/
>
> Email:  richb...@mac.com
> Mobile:  (248) 840-2665
> Web:  http://richbobo.com/
>
> “Many of the great achievements of the world were accomplished by tired
> and discouraged men who kept on working.”
> - Unknown
>
> On Apr 25, 2014, at 7:17 AM, Simon Björk <bjork.si...@gmail.com> wrote:
>
> Thanks all for your replys.
>
> I must admit, I'm having a hard time to grasp the solutions. Python panels
> are a black hole for me. Just today I ran into this issue once again when
> trying to add new trackers to a tracker node (node["tracks"].execute()).
>
> Nathan, do you know of any example scripts that uses your suggestions?
>
> Cheers,
> Simon
>
>
>
> 2014-04-24 22:51 GMT+02:00 Richard Bobo <richb...@mac.com>:
>
>> Thanks, Nathan.
>>
>> On Apr 24, 2014, at 3:49 PM, Nathan Rusch <nathan_ru...@hotmail.com>
>> wrote:
>>
>>   A few things if you’re going to use threads:
>>
>> - I would recommend using `threading` instead of `thread`, as it’s more
>> approachable, and joining your thread if you want to block until the render
>> is done.
>>
>>
>> I started by using threading, but then found a different example that
>> used thread, so I went down that road, instead. I’ll read up on the
>> differences...
>>
>>
>>         t = threading.Thread(target=self.renderWrites)
>>         t.start()
>>         t.join()
>> - You may want to consider moving the thread target function off of your
>> dialog class, and just passing the Write node(s) to it via the Thread
>> object.
>>
>>
>> I was wondering about that - if it was a good idea to combine the two or
>> not…
>>
>>  - There’s no reason to use `nuke.executeInMainThreadWithResult` unless
>> you actually need to get a return value.
>>
>>
>> When I was getting nothing at all to work, I wondered if there was some
>> result that I needed to wait for (just poking around in the dark), so
>> that’s why I switched it. Then, when things actually started to work
>> better, I never switched it back…
>>
>> - You need to pass the function and write node through
>> `nuke.executeInMainThread` separately. Otherwise, you’re just calling
>> `nuke.execute(writeNode)` and passing the result of that (which is probably
>> None) to `nuke.executeInMainThread`.
>>
>>         nuke.executeInMainThread(nuke.execute, args=(writeNode,), kwargs=
>> {'continueOnError':True})
>>
>>
>> I’ll have to let that settle into my brain for a bit. Still partly cloudy
>> on a lot of how this is supposed to work…
>>
>>
>> - A more idiomatic way to handle exceptions:
>>
>>         try:
>>             # Something
>>         except Exception as e:
>>             print 'ERROR: %s' % e  # Or whatever you want to do
>>
>>
>>
>>
>> I did have…
>> except (TypeError, RuntimeError) as e:
>> print “ERROR:”, e
>>
>> But, wondered if I could get more info by trying to catch anything and
>> everything… It didn’t help me diagnose anything better, though.
>>
>>
>>  Hope this helps.
>>
>>
>> Yes, I’m sure it will, once I can digest it and try out some more
>> examples.
>>
>> Thanks!
>> Rich
>>
>>
>>
>> -Nathan
>>
>>  *From:* Richard Bobo <richb...@mac.com>
>> *Sent:* Thursday, April 24, 2014 12:22 PM
>> *To:* Nuke Python discussion <nuke-python@support.thefoundry.co.uk>
>> *Subject:* Re: [Nuke-python] Execute Write from Python panel
>>
>>  Simon,
>>
>> Since I’ve never tried to do coding for a separate thread, I thought I’d
>> give it a try:
>>
>> http://pastebin.com/niEV5FPF
>>
>> My version has some of the very same elements as Mitja’s does. And, my
>> code works -- *most* of the time...
>>
>> ...However, sometimes it gets a...
>> "TypeError: expected callable object, NoneType found”
>> ...and sometimes it gets a…
>> “TypeError: ‘NoneType’ object is unscriptable”
>> ...and sometimes it gets a…
>> “RunTimeError: Cancelled”
>>
>> So, not too reliable!!   (8^P
>>
>> If my co-worker Python-guru-friend was here today, I’m sure he could help
>> me debug the problem. Perhaps someone else here could help…?
>>
>> So close, yet, so far...
>>
>> Rich
>>
>>
>> Rich Bobo
>> Senior VFX Compositor
>> Armstrong White
>> Email:  rich.b...@armstrong-white.com
>> http://armstrong-white.com/
>>
>> Email:  richb...@mac.com
>> Mobile:  (248) 840-2665
>> Web:  http://richbobo.com/
>>
>> "What you can do, or dream you can do, begin it; boldness has genius,
>> power and magic in it."
>> - Johann von Goethe
>>
>>
>>
>>
>>
>>  On Apr 24, 2014, at 3:08 AM, Simon Björk <bjork.si...@gmail.com> wrote:
>>
>> Hi Mitja,
>>
>> thanks for the reply. I tested you code, but unfortunately I still get
>> the "I'm already executing something else" error. Does it work for you?
>>
>> Best regards,
>> Simon
>>
>>
>> 2014-04-24 8:19 GMT+02:00 Mtja Müller-Jend <filmk...@gmx.de>:
>>  Hi Simon,
>>
>> try to use 
>> threading<http://docs.thefoundry.co.uk/nuke/80/pythondevguide/threading.html>to
>>  execute the node:
>> http://pastebin.com/06azNCzx
>>
>> Cheerz,
>>
>> Mitja
>>
>> Am 4/23/2014 11:54 PM, schrieb Simon Björk:
>>    I'm trying to execute a Write node from a Python panel, but I'm not
>> having any luck. As I try to exectute the render I get a RuntimeError: *I'm
>> already executing something else.*
>>
>> One solution would be to use a Nuke panel instead, but I would really
>> need a Python panel for this script. See short example script here:
>> http://pastebin.com/NzStQNhk.
>>
>> I would really appriciate some help on this.
>>
>> Best regards,
>> Simon
>>
>>
>> _______________________________________________
>> Nuke-python mailing listnuke-pyt...@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
>
>
>
> _______________________________________________
> 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

Reply via email to