algorithmic modeling for Rhino



Welcome to Metahopper - a tool for controlling Grasshopper with Grasshopper :)

This library contains a number of components and commands for querying and manipulating Grasshopper components dynamically. You can retrieve components and objects based on their type, their library, the group they're in, or by selecting them directly - or even get all the objects in a document at once. You can then retrieve information about these components + parameters, the libraries they belong to. You can also manipulate objects directly: enabling/disabling, turning preview on and off, changing the color of groups, the text and size of scribbles, and the shape of sketch objects.

MetaHopper also adds a new menu to the Grasshopper document editor, that wraps up several functions:

BestPracticize Selection lets you pick a group and auto-insert params for all the inputs and outputs coming into/out of the group. This makes for nice, tidy functional groupings that make your Grasshopper code easier to read. 

Save Snippet improves on an earlier script I released - it lets you select any group of components + objects and save them as a single user object - without needing to cluster them. This is useful when you want things saved that have internal UI elements - like a graph mapper or slider for instance - that you want to be able to manipulate with the reusable chunk of code you're saving.

Bottleneck Navigator opens up a window that lets you see all the components in your definition, sorted by their "Runtime" - how long it took them to execute. You can click on any item in the list and zoom to it instantly - so that you can find opportunities for optimization in your definition.

Download it here!

Members: 215
Latest Activity: Jun 5

Component Listing


Set Group Properties

Set the name, color, and style of a group.

Control Wire Display

Control the display of wires for parameters and components.

Set Scribble Properties

Set the text, size, and font of a Scribble.

Hide/Show Object Preview

Programmatically control the preview visibility of specified objects

Rename Object

Programmatically set the nickname of specified objects

Enable/Disable Object

Programmatically enable/disable solving for specified objects

Set Sketch

Modify the form of an existing sketch object.

Bake Object

Programmatically bake the geometry of specified objects

Wire Display Toggle

Switch all document wires between hidden and faint.



Converts a standard GH Slider into a variable input to the Batch Driver

Batch Animator

Saves a screenshot of every state of the model in the batch to a folder.

Batch Variable from List

Converts a list of values such as a series or range into a variable input to the Batch Driver


Run a batch analysis across a range of variable parameters


Param Info

Gets information about param objects

Object Info

Gets basic information from any DocumentObject

Assembly Info

Gets information about an assembly

Component Info

Get information about a component object. Retrieve components with Document Info, Get Attached Component, or Get Selected Component.

Document Info

Get information about the GH document and its components

Object Retrieval

Get Groups

Get all groups in the document

Get Connected Objects

Gets all components and params connected to this component

Get Objects of Same Library

Gets all components and params that are from the same library as the attached.

Get Selected Objects

Get the objects currently selected on the canvas

Get Scribbles

Get all Scribbles in the document

Get Objects of Same Type

Gets all components and params that are of the same type as the attached.

Get Objects in Group

Gets all components and params in the same group as this component (or the specified group if supplied)


Best Practicizer

Takes a selected group and inserts input and output params at both edges for any data that goes outside the group.

Highlight Objects

Highlight objects by adding them a new group

Set Object Value

Tries to set the value of an object. What value it sets varies by type - it sets a slider’s numeric value, a panel or scribble’s text contents, etc

Relative Path

Appends the directory this definition is saved in to a file path. Auto-converts the contents of a text panel containing an absolute path

Discussion Forum

Internalise data

Hello,It would be usefulll to be able to activate "Internalise data" function in parameters.Is it possible to get it in a further version of Metahopper ? Or to use it with some VB/C# component ?JLContinue

Started by Jean-Louis Herman Dec 13, 2017.

enable disable component error

nothing much to say.   turn off is working but turn on not at alli have noticed it for a while.* will this be the platform maybe to ask for a "refresh component" component?this way i dont need to…Continue

Started by AJ Nov 3, 2017.

Enable/Disable inside of clusters

Hi Andrew,I am attempting to use your Enable/Disable toggle inside of a cluster and it does not appear to work.  Is it possible I am doing something wrong or is this a known issue?Your plug-in is…Continue

Started by Ben Pearce Oct 3, 2017.

Clear values for multiple params and objects

Hi Andrew, great plugin!Is there a way to clear referenced geometry in multiple params?i.e. I've selected some params with the 'Select Object' component, is there a way to use these references with…Continue

Started by Ian Shepherd Sep 15, 2017.

Comment Wall


You need to be a member of MetaHopper to add comments!

Comment by Martin Siegrist on January 28, 2016 at 12:31am

Yes, that's exactly what my friend and I were looking for. Will this be available in the next update of metahopper?

Comment by Andrew Heumann on January 27, 2016 at 10:38pm

made it a little cuter. 

Comment by Andrew Heumann on January 27, 2016 at 9:53pm

Hi Martin - something like this?

Comment by Martin Siegrist on January 27, 2016 at 2:07am

It would be great to have a one click possibility in order to enable / disable whatever is inside a group. Your plugin is a great work around but I wish to have this as a standard option in the next GH version. A flip flop button would be even better. Same as the boolean toggle, however one click instead of double click.

Any thoughts?

Comment by Andrew Heumann on January 26, 2016 at 4:00pm

@philip you've given me an idea though - what might work is if I check from each new param both backwards and forewards - if it's mesh going in, and it feeds into another mesh input, chances are it's safe for me to make it a mesh param. 

Comment by phillip on January 26, 2016 at 3:54pm

Now I see. Only thought of it "from inside the cluster looking out". Totally clear in that way. Thanks.

Comment by Andrew Heumann on January 26, 2016 at 3:43pm

@phillip - I thought about interpreting the type from the param it comes from. My only frustration with this - mostly in the context of clusters - is that maybe I'm doing some generic operation on geometry, and I'm testing it on meshes - now because the cluster input thinks it only accept meshes, I get an error feeding in surfaces where I wouldn't have if I haven't clustered. With that said, it might be nice to just do it anyway and let the user handle it... especially for those users who live in icon-land instead of text-land :D

Comment by Martin Siegrist on January 26, 2016 at 2:50pm

Thanks, this works now.

Comment by Andrew Heumann on January 26, 2016 at 2:40pm

Good catch Martin - this is now fixed. I've updated this and fixed a couple other bugs in the latest release - available from the link above!

Comment by Martin Siegrist on January 26, 2016 at 2:25pm

Great idea, unfortunately I can't get the Enable / Disable to work. It does fade a component but data is still going through


Members (215)






  • Add Photos
  • View All

© 2018   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service