View/Document Properties (or something similar)
Got it, thanks.
The answer in my case is 1200.
Edit: found one with 1807.
I still cannot imagine how to navigate efficiently in this file - don’t you spend half your day panning and zooming?
Hi Furtonb
Not really a hassle, this script is built to scale:
-
All the controls/parameters are listed on the left hand side and grouped and labelled into useful sets. To use the script there is no need to leave the left hand side of the canvas.
-
I’ve been very disciplined in building the whole system as well ordered subroutines. These are grouped and labelled as well making it easy to track down where a change is needed if required.
-
All subroutines are built so they could be turned into clusters. All data in on the left, all data out on the right. All data connections in and out via sensibly named parameter blocks (no function block has a direct connection out of its group)
-
All inter subroutine wires are hidden to keep the screen mess down.
Tho I only orginally started the project for my own amusement it’s now becoming quite a full featured tool. I kind of look at it as a compliment to @DavidRutten and the rest of the McNeel team that hack developer like myself can build such tools in Rhino/GH.
Cheers
DK
thanks for the insight!
do you collapse them into clusters for everyday work and expand only when some tweaking is needed?
I’m not following you here, what do you mean by “no function block has direct connection out of its group”?
haha, I think quite a lot of us could find this relatable!
I mainly use GEO and NUM datatypes to pass information out of and into my functions. No block that actually uses/changes data has a connection out of subroutines. If I need say another parameter in a function I’ll pass it in with data block renamed to tell me what it is.
Where this becomes very powerful is in rewriting subroutines. I can copy a subroutine, rewrite its contents and then have a easy to swap over set of outputs which are connected to everything that needs that data.
Tho everything is built to be easy to convert to clusters I find trouble shooting is easier if everything is flat on one canvas.
How do you get each group of components to be within their own tabbed window like that?
@TheCyclist I figured out its a blob-style group around another group. nice @jonahhawk
Yes! Metahopper by @andheum helps style out the groups quickly. I also heavily hide wires using Metahopper as well. I follow Andrew Heuman’s standard of always adding input and output params to each group and name them. Another fantastic tool to take things up a notch is Telepathy by @marcsyp
Here are 2 pretty large ones that I found. It’s kind of remarkable what these files can grow to when you start adding lots of features and options. Recently - also thanks to the Sunglasses plugin - they are a lot more clean and split into sections where all inputs and outputs into a section have to have named and correctly typed parameters, which helps immensely. I am still hoping some day we get something a bit better than just clusters with nested files, so that I can just reference a .gh file as a cluster. Right now you can only save as a user object, but its not updateable.
A script to build laser cut screens with drawings, automatic connectors and much more. 2218 components:
A script to build grids and fill them with blocks according to various input data types like text, images or midi data. 2674 components:
Most of them have been developed over many months with I would say around 100 hours spent on each.
Last one of mine, ca. 2.5k of components and growing.
I like when clusters are spread and clearly divided and really flow left to right. Takes lots of screen space but it’s easier to navigate and backtrack within. Most of the wires are faint.
For sure faint wires is the way to go. I have this little script from somewhere in all my patches where you can change all the wires of selected items or even all. It uses the component from Metahopper and a VB script for global.
change_wires_metahopper.gh (7.1 KB)
Gotta say that these are fine examples of unintelligible spaghetti…
Anything large that cannot br broken into smaller modules is badly designed as I found out in my monster project.
How long does the project take to load when opening the file and crawling thru thousands of modules?
How do you scroll across yards of that spaghetti? Its crazy
Some of my files are small but perform thousands of surface boolean operations that can take 30 minutes. These dont need to be redone often and certainly dont want to wait that long to open one monster file
I broke my project into multiple files which input data from file and output to file.
They are mostly sequential in operation and manageable in size
Good points.
Actually these are already patches that are broken in several distinct steps. Lots of baking to layers with User Keys/Values that are then referenced again in the next file. So yes, good point about breaking into separate files if you can. Once you get the hang of how to save data into Rhino, bake stuff from GH automatically and attach User Keys/Values then it becomes quite easy to do.
Most of the files I build I try to keep under 10s. If it takes longer than it has to be split up or at least use loops, which can be more easily controlled or stopped rather than feeding a node a large tree of data. It also makes a lot of files easier to just use loops where you then have simpler logic inside the loop as you have simpler trees.
The “distance” to scroll is not really an issue. By the way, if you select a component and then press Ctrl - right arrow it goes to the next connected components or Ctrl - left arrow goes back to the parent. That can be very handy. And of course using large scribbles to name sections.
My cleanup up files now all look more like this:
Every section has a name and each section has properly named input and output parameters. No connection outside of a section that isn’t going through a named parameter. Only wires between adjacent sections are normal wires, all other connecting wires are faint. It really helps with connecting sections across large distances.
This is the way.
7126 after removing 1/3 as it needed to be redone and a bit of clustering, I think it hit 10k at some point.
when I’m done with this segment of upgrades, the script will be reorganised to use the yellow grid as a sort of set of rules to control wires.
plan it to split the script in 6 months time once a few more features are added.
We have a winner!
Seems i am stil learning new tricks…
I watched YouCube video the other day in which he zoomed into the ITEM module and added outputs! damn! Why didnt I think of that!
"attach User Keys/Values " what does this mean pls?
For soem reason, I tend to go down the page one “sentence” at a time
I work to the right until I reach a goal (usually a surface) then go down and back to the left margin and build the next block. Kinda like hitting the return level on an old typewriter