Many times when I’m working with a program like Grasshopper I’ll be working mostly by myself, at least within GH. There may be multiple people working in other software, whether it’s the Rhino file(s), or some other CAD/BIM platform, but multiple people working on the same project in GH has been uncommon around here. A few times, including recently, I have found myself in the situation where I get thrown onto a project to help out for a deadline and I’ll have to work in GH using data that’s dependent on someone else’s GH file that itself is in flux. Typically what I’ve done is make a copy of the other person’s file and continue adding my own content to it, but try to keep my work segregated so that I can transition it to a more recent copy of the other person’s work. Sometimes this is just grouping and basic parameter components that I just need to copy and reconnect the parameters, or sometimes it’s clusters if I have enough time to think out the process, but it’s always been cumbersome because there’s not really an effective way to link files beyond maybe baking geometry into Rhino and referencing the baked geometry using a geometry pipeline or something similar.
While I had a brief lull in the project I happened to see a post by Andrew Heumann from NBBJ on the Grasshopper forums related to toggling the display of non-default wires from faint to hidden. Just running through that quickly I thought it was also a great basic framework to iterate through components in a file and immediately thought about retrieving data from components in another file. So what this does is let you retrieve data from a file, whether it’s the file you’re currently in or from a separate file that you also have open (sorry, doesn’t read from closed files just yet).
So the Link component is the main piece here. It’s three inputs are Doc for document name, Guid for the Instance Guid (or Nickname if it’s unique) of the component you want to read data from, and Param where you can specify which parameter by index (zero based) or parameter Nickname. If the Doc input is left empty, it will try to find the component within the current document. Guid can either be the InstanceGuid from the component (this is where the second component comes into play) or if you’ve given the component you wish to read from a unique Nickname then you can use that. Param will default to pulling the data from the first output parameter which works for a fair number of components on its own, but you can specify other output parameters either by it’s index or by it’s Nickname.
I’ve only been able to use it on one project so far and I wound up being the only GH person working in it shortly after I put this together, but I still used it to link several different files and gather data into one location.