Skip to main content

Reference

As geometry often is replaced by using the Bake component, or by modelling manually, it is important to maintain a robust relationship between the objects in Rhino and your Grasshopper definition. To achieve that, eleFront has introduced Reference Components. These components will read the attributes of all objects present in the current Rhino model and output only the ones that meet specific criteria. These criteria could be the BakeName that was specified for the component with which these objects were created, or for instance the object layer, but also any of the UA. You can reference objects that have a specific Key assigned, or that have a specific Key and Value pair assigned.

There are several modes of Referencing offered by eleFront that will serve their purpose in different circumstances, which will be explored in this section.

Reference components.jpg Reference components available in the "01 Reference" tab

Reference from BakeName

There are several methods to dynamically reference objects using eleFront, but perhaps the first and most robust method that a user may encounter is Reference by BakeName. Within a project’s ecosystem, BakeNames are the main way in which an output is expressed within each file, it can be thought of as an overview of the baked geometry.

Example

Pasted image 20221125155719.png A panelised form split into different layers

In the example above we have a simple, attributed Rhino model containing both surfaces, representing panels, and curves, representing a bottom edge, each panel is on a different layer.

By selecting a range of surfaces and interrogating the eleFront Attributes, we can gather that the BakeName for the surfaces and edges are most likely to be "MyBakeName::Panels" and "MyBakeName::Curves", respectively.

Pasted image 20221125160249.png eleFront attributes from selecting multiple surfaces

Pasted image 20221125160535.png eleFront attributes from selecting multiple curves

To reference the geometry, simply use the Reference by BakeName component and enter the BakeName of the objects that are required.

Pasted image 20221125161622.png Using the BakeName input for the Reference by BakeName component

A key/value pair can be used to filter objects that come under the same BakeName Pasted image 20221125164134.png Using a Key/Value pair in conjunction with the BakeName

Troubleshooting

Even though in this case, there is one BakeName that covers all surfaces, and one for all the edges, sometimes we cannot be certain of exactly what geometry is covered by which BakeNames. Parts of the model may have been baked separately from others if a different bake component was used for whichever reason in the reference model. There are a few different ways of interrogating the model for the BakeNames present:

  • Interrogating the script that produced the reference model can be helpful, however the script may have changed since that geometry was baked, or other geometry may have been merged into the export file
  • Referencing all with a wildcard (tread carefully in large models) and creating a set of all the models - in this example, an asterisk is used to search all the geometry and then all that contains the same stem

bakename set.png A couple of methods to check BakeNames present in the document

Alternative Reference Modes

While Reference by BakeName is often the preferred mode of referencing with eleFront due to the advantages listed above, there may be instances where this is not possible, or another option is advantageous. eleFront offers a variety of options to collect the right

Reference by User Attributes

Refernce by User Attributes return geometry that matches a key/value pair, irrespective of BakeNames - which can be useful when creating assembly models, or other instances where the BakeName is not relevant or present

Pasted image 20221125181754.png Reference by User Attributes

Reference by Layer

In processing geometry without BakeNames or User Attributes present, such as models imported from AutoCAD or Revit and survey data, Reference by Layer can also prove useful. The component will return results that match the layer specfied

Pasted image 20221125182345.png Reference by Layer

The input will also accept wildcards

Pasted image 20221125182441.png Using a wildcard for the Reference with Layer component

Reference by Type

Reference by Type will return all objects present in the Rhino document that match that object type

Pasted image 20221128140817.png Reference by object type

Plugging in a Value List component will autopopulate it with all the possible options for object types. Some of these may overlap - selecting Breps will include both Surfaces and Polysurfaces, likewise Curves and Arcs - so it is worth considering how to be specific with the type specified.

Pasted image 20221128144526.png Using a Value List component will autopopulate with the available options

Reference by Name

Reference by Name will return geometry that matches the object name (as found in the Rhino Objects tab) provided.

Refname.jpg

Interact Rhino Object

Allows users to interact with objects from the Rhino Document. The default interaction is to select; right click to toggle between hide, show or isolate. Provide the component with the GUID of the objects and activate to perform the interaction. IntObj.jpg

Reference from File

Referenced geometry from the Worksession forms the basis of much of the workflows in eleFront, however, there are some helpful exceptions. In some cases, geometry will be made from scratch, either in the active file or within Grasshopper itself. Users may also take advantage of the FilePath input on RefBake (zoom into the component and click the Insert Parameter). We can reference in Rhino files that we know will be static, while using the FilePath input to reference only the files you need in that instance. For example, if a model was split by level, instead of wasting time and slowing down Rhino by loading up every version of that model, we could set the FilePath input only as the specific Level/s that we wish to interrogate. As models get more complex and with a greater number of interactions, Worksession management becomes a key consideration in maintaining usability.

The below image shows two methods of referencing from an external file. The top method is slower (see the processing time on the Reference by BakeName component) since all files in the folder are being searched, but more robust because they are filtered by User Attributes. The second method uses file naming conventions to filter through the files in the folder before passing through the Reference by BakeName component. A robust file naming convention set up project-wide can be helpful for this very reason.

Refbake_Profiler 1.jpg Two methods for referencing geomtry from an external file

Ghost Geometry

In some workflows, it is not always necessary to operate on the geometry of an object. Perhaps you are simply looking to access the object's attributes or filter through your objects before copying them into another file.

For such cases, we have introduced an option called "Ghost Geometry", which allows you to bring an item into Grasshopper that only preserves the information about that object while leaving the geometry behind. It does include a bounding box preview, as a way to give yourself a sense of where your items are.

Ghost Geometry.jpg Previewing Ghost Geometry

In avoiding loading the full preview of the geometry, the Grasshopper file uses far less memory than with regular referencing, see the Memory Management section for more details. %%add a link to the memory section&&%%

Ghost Geometry can still be interrogated in several ways:

  • Since it maintains the attributes of its parent object, Ghost Geometry can be sorted and filtered as normal.
  • The source file and original GUID can be found by using the Deconstruct Ghost component.
  • Once the geometry has been filtered, it may be that you would like to operate on the remaining geometry, this can be done using the Manifest component. You get all the Memory saving advantages of Ghost Geometry with the functionality of all the normal geometry.

Ghost Geometry_Query Attributes.jpg Filtering Ghost Geometry

ghost geo.png

Deconstructing Ghost Geometry

Ghost_Geometry_Manifest.jpg Manifesting Ghost Geometry