# I/O Modifier

icon name

The I/O modifiers can be applied to the inputs and outputs of a compononent by right clicking on it. By the exception of “Principal” and “Reparameterize” all items in the context menu have a dedicated Grasshopper component, which work in the same manner. Hovering over a modifier will give you a tooltip explaining its function.

While most functions might be clear, some are more obscure.

# Degrees

The Degrees input modifier indicates that the numbers received are actually measured in [Degrees] rather than Radians. Think of it more like a preference setting for each angle input on a Grasshopper Component that state you prefer to work in Degrees. There is no output option as this is only available on Angle inputs.

# Expression

The Expression I/O modifier allows you to change the input value by evaluating an expression such as -x/2 which will have the input divided by 2 and made negative. If you hover over the tag a tooltip will be displayed with the expression. On some components it can also be used as output modifier, but it is uncommon to actually do that. (Note that you always use x instead of the input parameter name.)
Works like the [Expression] component.

# Flatten

The Flatten I/O modifier will collapse a multi-path tree down to a single list on the {0} path, excatly like the [Flatten Tree] component.

# Graft

The Graft I/O modifier will create a new branch for each individual item in a list (or lists), exactly like the [Graft] component.

# Invert

The Invert input modifier works in a similar way to a [Not Gate] in boolean logic negating the input. A good example of when to use this is on [Cull Pattern] where you wish to invert the logic to get the opposite results. There is no output option as this is only available on Boolean inputs.

# Principal

The Principal input modifier is possibly the most obscure in this set. An input set to Principal is designated the major input of a component for the purposes of path assignment. This is important if you need to preserve the tree structure.

# Reparameterize

The Reparameterize input modifier will only work on lines, curves and surfaces forcing the domains of all geometry to the [0.0 to 1.0] range, which is very helpful if you want to work in generalized manner; e.g. 0.5 should always yield the midpoint of a curve.

# Reverse

The Reverse I/O modifier will reverse the order of a list (or lists in a multiple path structure), similiar to the [Reverse List] .

# Simplify

The Simplify I/O modifier will remove the overlap shared amongst all branches, like [Simplify Tree] (Note that a single branch does not share any overlap with anything else.)
Simplifiy does not seem to work? You might encounter a “bug” here, which can’t be changed for the life of Grasshopper 1: Some components will graft their ouput and even throwing the Simplify modifier on it will result in a tree of {0;0} – not what we expected! Instead use the [Suirify] component residing under Params > Util.
See also this post.