Two tiny gripes



Wow, thanks Tim.
Someone ought to write a “Grasshopper secret tips guide” some day


Here’s more of those things:


Fantastic !
But has proper documentation gone out of fashion ?
Is it just rummaging through forums now ?
Even the Grasshopper “Help” Toolbar points to the old Ning forum.

Excuse the tone, but I find it vexing to find out that stuff like that was out there, after so much time spent on Grasshopper.

(David Rutten) #7

It was never really in fashion for Grasshopper 1. Documentation has always sucked, mostly because the framework I wrote for it was cumbersome and inflexible, making it very difficult for someone other than the developer to provide docs.

I agree with you (as does basically everyone I know) that we need to do a lot better, and in fact the documentation system was the first thing we started writing on for GH2. It’s a bit back-burner now since there’s nothing to actually document as such yet, but I imagine as soon as some of the interface stuff becomes mature enough we’ll start again. We got trained linguists and everything on staff now to help out with this.

In the meantime GH1 will remain essentially one giant easter egg.

Yeah that’s clearly a bug, needs to be updated to link to discourse.



// Rolf


Is this really a thing? I use the //Foo shorthand all the time and panels don’t seem to auto-adjust their size:



Maybe I’m misunderstanding :man_shrugging:


That’s weird. I just tried it out here and it does work on my computer?


Strange, I’m on:



Perhaps this is a later feature @DavidRutten?

(David Rutten) #12

Yeah I think it’s one of the many features added to GH1 for Rhino6.

(Tim Stark) #13

Yes sorry, in GH 1


Many of the Easter Eggs (including the Shortcuts mentioned above) are together on a FAQ page:

Perhaps there could be a more obvious link to this page, like under the “Learn” Dropdown?

I’ve been slowly collecting these Easter Eggs, but more often then not, I discover that @DavidRutten has already mentioned them in answering one question or another on the forum. The use of the “Time” component is pretty nifty.

My favorite (undocumented?) shortcut is in using context menus (RMB over canvas, group, or component) - for any menu selection with a unique first letter, typing that letter will select it. So then turning a wire to “Faint” is <RMB, W, F>. Maybe that solves your second gripe, @osuire?


Hi Jokam,


Thank you so much !

(David Rutten) #16

That must be standard windows menu behaviour, I’m not doing anything special there.


That’s how you recognize true genius…Even when doing nothing, your output is fantastic :slight_smile:

(qythium) #18

Metahopper’s Control Wire Display component is also really useful for quickly changing large numbers of wires all to faint mode:


Yeah, I’m not a big fan of that one.
More often than not, I only need to change the wire display on some of the inputs, and I don’t like dragging this component around to keep it handy.

I organize my components with groups. Any wire going in or out of the group will be faint, and wires inside the group remain standard.
I also tend to separate chunks of definition with panels which I turn black and make into lines.
Between these chunks, I make the wires hidden.

If there was a way to automate this kind of layout, it would save me lots of time.


Default Wire Display mode should be a system settings.

I’d prefer Faint as default.

// Rolf

(qythium) #21

Try this on for automation :slight_smile: (5.0 KB)

var grps = GrasshopperDocument.SelectedObjects().OfType<Grasshopper.Kernel.Special.GH_Group>();

foreach(var grp in grps){
	var objs = grp.ObjectsRecursive();
	var prms = new List<IGH_Param>();

	foreach(var obj in objs) {
		var comp = obj as GH_Component;
		if (comp != null) {
		var prm = obj as IGH_Param;
		if (prm != null) prms.Add(prm);

	var outgoing = prms.Where(p => p.Sources.Any(s => !prms.Contains(s)));
	foreach (var p in outgoing) p.WireDisplay = GH_ParamWireDisplay.faint;


Remove default display of some wires

Holy spaghettis ! This is fantastic !

Thank you so much Qythium !

This makes me think that it would be nice to create buttons and/or keyboard shortcuts in GH to run this kind of tools. In fact, it would make more sense to have a button always available than having to drag around a component.

(qythium) #23

Yup, my workflow for making these command-like objects is to create .ghuser scripting components that automatically “self-destruct” after running once.

// <C# code goes here> 
GrasshopperDocument.RemoveObject(this.Component, false);
# python code goes here
ghenv.Component.OnPingDocument().RemoveObject(ghenv.Component, False)

The attached file above includes one, the tricky part is to disable the solver and enable the component, then save it as a User Object before it has a chance to remove itself from the canvas. Then you can give it any name and category you want, and call it from the search box or menu bar.