algorithmic modeling for Rhino
when I'm creating huge GH definitions, they sometimes take a while to calculate. From time to time the calculation takes so long, that windows tells me that the application is "not responding". As an experienced GH user, I know that I probably just have to wait for another minuten (or 10 minutes) until GH is vailable again.
Some of my colleagues and customers however tend to play around with sliders in definitons done by me and get frustrated that "GH is alway breaking"
So I was wondering if a progress bar could be implement to give freedback to the user if the calculation time is longer than x seconds. That is probably quiet hard to implement (espcially if people use their own Scripting componentes), but it would be greate to hear the communities oppinion on this topic. Do you think it would be useful?
a progress bar is not possible, as it is not known ahead of time how long it will take to compute everything (in fact not even how many components will need to be solved, although I could write an algorithm that made a good guess at that number).
Also the solution runs in the Rhino UI thread, which is the same thread in which the interface of Rhino and Grasshopper run. Therefore, when a solution runs there are no cycles left over for Rhino and Grasshopper which is why they become unresponsive.
Fixing this means one of two things; either the solution must run a separate thread, which introduces a massive amount of synchronization problems or the solution must yield control back to the UI every now and again which would slow down the solution. I imagine it's not that big a deal if a long running solution lasts a tiny bit longer. I'll see if I can put an updating message on the canvas when the solution takes more than second or so.
Is your answer still relevant or do you know today how to forecast the rate of completion of a Grasshopper definition?
I agree it would be useful. Just like it would be useful to have a magic mirror to tell you who the fairest of them all is. :)
But like the magic mirror, a progress bar in grasshopper is pure fantasy. The computations of a grasshopper definition at the time of commencement are unknown. So how can you quantify something that you have no concept of its final size.
David has answered this question much better than me in the past with more scientific fact to support his argument. It would be a good FAQ topic for him to put together as you are not the first with this problem and you will definitely not be the last.
EDIT: he's already beaten me to it this time anyway.
Thank you both.
I guess my main wish was to let the user know that something is still happening. So I think an "Updating" message would be great. How long it takes, is probably not so important.
The option to cancel the solution is one step closer to this. Always useful when you have started a 10 minute calculation, and realise you actually needed to adjust a variable.... Possible?
In version 0.9 there will be more opportunity to abort, but once you get into a lengthy process it has to complete that block before it looks for the escape command.
Yes! Now that I am experimenting with really complicated solutions, it would be nice to hit escape, instead of crashing rhino/gh every time.
Instead of a progress bar, is it possible to make GH faster? E.g. use of all processors.