GH Large project Canvas Management

Thank you for that. I suspected as much. Can I deduce from your explanation that the sudden increase in lag times when connecting wires must be from the upstream search, since downstream there are few lightweight components usually?

You can’t deduce that because it could happen somewhere else, like when registering the undos or not deleting the unnecessary memory correctly somewhere, I don’t know. It could be that something is wrong in the context of controlling the computation of the components, but I don’t think so.

I really hate that lag. :upside_down_face:

.

This was true until recently. A few weeks/months ago I improved cluster expiration to be more efficient. Rhino 7 only though.

1 Like

No, it may well be due to autosaving. Try disabling autosave in the preferences to see if your lags go down.

1 Like

Yes! Problem fixed. Thank you for that.
However, I have bitten the bullet and begun breaking up this huge document which needed to be done anyway. Even with the endless scrolling capability (nice feature) my mouse is half way across the table to get up and down the document.

I can probably make the INPUT and OUTPUT work. I have yet to determine if changing a CLUSTER definition in one document will update it in another. I am assuming not.

If I may make a suggestion, GH needs PROJECT status, such that multiple canvi may be part of a project in the same way large code projects are comprised of multiple files. This would imply a PROJECT folder with a name that is a global identifier for things like data files, CLUSTERs and multiple canvi that comprise the project.

Since large code projects have a compile step, which JIT projects like Javascript and GH dont, there needs to be a way to cache data between the canvi when they are not loaded into the editor such that upstream components are not recalculated. This would imply an INCLUDE capability that permits xfer of data between canvas files that are both loaded into the editor and not loaded. This should be transparent with #INCLUDE, and utilize the connection models of wireless connections like INPUT/OUTPUT.Double clicking on the INCLUDE module would open the file in the editor.

I was asurprised that Telepathy did not include a way to connect canvi loaded into the editor since they could access the memory of the current canvas. This would be a huge step toward a PROJECT containing multiple files.
CLUSTERs needs to be a little more robust with naming inheritance. It works ok but changing or adding inputs without a named parameter primitive on the way in/out is not friendly. Outputs of some modules like ITEM are not able to be changed. If an output is not connected it is not created.

Anyway, consider all that feedback. GH is an amazing work even without any documentation the bain of any developers life, tho I would think hiring someone from India or even offering an free copy to a willing party would get 90% of that done.

While on the topic of feedback, the ability to change tollerance on a per file basis would be very useful. In my case, I have tollerance set to .0001 to facilitate and accurate fillet, one component amongst 3k. The remainder would be happy with .001 or even .01. Obviously this would impact the speed of the recompute. The minimum tollerance wouldbe taken from Rhino, but could be down set different documents. I suspect this is a limitation of Rhino which is probably only able to route all calculations through one tolerance setting or another, but this is a limitation.

With that said, GH is an incredible feat. The depth and breadth is astonishing. Thank you.

ADDED
For OUTPUT to be used without encapsulation in a CLUSTER, it would need to detect the name of the input when each input wire is connected (like CLUSTER detects the names of the inputs when it is invoked). This would be a huge IMPROVEMENT and save the step of naming these inputs by hand, in this case hundreds of tedious copy paste operations.

Added
I am assuming that operations like connecting a wire and moving a slider (moving geometry) DOWNSTREAM of an INPUT module will NOT trigger a read from disk in that INPUT module?

1 Like

I think the definition of “too big” depends way too much on what you are trying to build. We have a few definitions with this magnitude of components and there are perfectly good reasons for it. We usually don’t build a GH script that does one thing, but we build tools that have many different functionalities and options. As you say, a lot of the components are just there for data management in combination with all the options, but I don’t see any way around that. If you were coding the same tool you would still have similar issues. If you want to change/add anything to your 50 encapsulated modules the complexity you have is just the same, its just hidden in 50 modules that look nice and neat on the GH canvas, because they have their logic hidden inside them.

What I would instead do is just make sure you use groups and scribbles to label sections in your canvas using different colors and leaving comments. I found a little script on here where you can change the display type of ALL wires, which is really helpful.

Be careful with clustering big sections of your definition - clusters always recompute completely. So even if just a small part inside the cluster would need to be recalculated it recalculates the whole thing.

1 Like

Yep, I did this as well on my team projects, and it clearly helped to get an overview on whats going on for my coworkers. I was actually quite messy with my definitions but others in my team spend great effort on how to wire definitions up. Preventing wire crossings etc. I just modified Grasshopper in a way, that each wire has a unique color. That worked for me :slight_smile:

Sure, in the end its also a matter on what you do. By the way, I was also a big fan of doing several things manually and not doing things in one big definition. Instead I spend great effort in writing sorting algorithms to read already baked data back in the right order. Sometimes baking in between helped me to micro adjust a pattern. But of course the use case matters. I was mainly doing patterns on car parts, which may differ to architectual tasks.

@Proterio Sorry for my last post. The last part was not well written.

1 Like

Welcome. FYI, take a trip to https://www.malwarebytes.com/
There is a free version available
You have a browser trojan injecting snippets into the middle of your text (g r a d e s f i x e r dot c o m)