Before posting this I would like to put up a disclaimer that I just recently started using Grasshopper so I am most likely not aware of all the inns and outs of the development and the requests I am posting have been asked for previously (despite having glanced over the forums). Most of my suggestions are UI related and would speed up my workflow.
E: I will continue to compile suggestions in this post once I come across something worth adding.
Colour and visibility
- For groups and components (such as panels) I would like to see a swatch drop-down so I can select any colour that was either there by default or added by the user, much like the way swatches work in Photoshop or Illustrator. This makes colour coding and structuring scripts a breeze.
- Perhaps live swatches where, if the colour of the swatch is changed, the change propagetes to all the groups/ components assigned to the swatch.
- Optionally, a layering system may be beneficial for quickly recolouring any groups by their function (e.g. evaluation, geometry creation, data, etc.) It could also be used to quickly show and hide certain parts/ steps of the script without having to select specific components to show/ hide.
- A colour picker to change the colour of the existing group/ component to that of the selected one could be a first step.
- Global font & size settings, sometimes panels (from different users/ display dpi settings) have different text sizes.
Wires and restructuring
- When dragging a wire into a blank portion of the canvas, allow there to be a menu (possibly a user customisable or context sensitive pie menu with an additional type-in functionality) to select a node to connect to.
- The ability to put a component in between a wire.
- A keyboard combination to delete a component while rewiring the wires to the input the deleted component was attached to.
- Additional selection methods, such as lasso or fence to quickly select a bunch of components.
- While selected, multiple components could be resized similar to resizing objects in Illustrator.
Names & linked data
- If I use an expression component (there may likely be other components), I would like to be able to rename my input parameters from the expression window so I don’t have to do a round trip. I would then like to optionally select the parameter that I am typing in, in order for the names to be linked. If the parameter name were to be changed, the now linked parameter in the formula would change accordingly. This is the way parameters work in Revit, Fusion 360 and Inventor. Renaming the parameters, renames them in the formulas.
- There are some bugs with ‘show full names’ where copied components receive no or an abbreviated name. Switching input method also causes expressions to fail due to their inputs changing back to their default name. Nevertheless, I find full names much easier and quicker to use and understand (like many fellow students), it would be great if sliders would be renamed to the input they are connected to (like when show full names is turned off) in case no user name was set.
- A wireless send/ receive functionality, in which a component/ parameter is linked to another, this allows sending through data across the canvas by selecting the linked component/ parameter. The child component, as this would be called, would inherit its data from the host, while also linking the names of both. Changed names to the child propagate to the parent and vice versa.
Snaps/ component guides and arrangement
- Although the align and distribute functionality work well (apart from the very tiny hitbox that is often missed), I would argue that these are only required due to a lack of snapping/ smart guides between different components. I would prefer there to be guides (like in Indesign, Photoshop, Illustrator, etc.) that show how components allign. These guides could also be used to snap to.
- Other than top,middle and end snaps, there should be snaps for straight alignment of wires. The cleaner the script the better, especially if it takes no additional effort.
- Alt + drag copies should work with shift to constrain the duplicate’s movement orthogonaly.
- Alt + drag copies should be invokable by pressing alt before clicking on the component. This is an industry standard regardless of wether alt, ctrl or shift is used to that end. Seperation division should be invoked in a different manner, alt + drag copies is a very intuitive command that, atleast for me, is useless in the current status.
- A baking component which allows to manually select components to bake to which is wired to existing components. It should include all things that can be generated by Grasshopper (i.e. geometry, dimensions and annotations).
- Alternatively, my proposed layering system could be used to bake certain layers (e.g. only annotation, parts of geometry, etc.).
- A global setting to set a default angle to degree or radians, so you could omit conversion to radians if you prefer to use degrees instead.
- The ability to link min/ max amounts of parameters through formulas. So let’s say the upper limit of ‘number slider A’ can only be half of ‘number slider B’. This may reduce slider induced bugs.
- An alias editor which allows for setting aliases for all components. You should be able to search by alias and by component, as well as have a search bar to test inputs. Best example is found in the 3ds Max Hotkey Editor.. Perhaps also an option to rearrange aliases for any given search string?
In general, I think Grasshopper would benefit from having more user actions to reduce the amount of clicking or worse, clicking into the menus of menus. A (drawing) tablet friendly UI would certainly be much easier to work with for some.