Three new GH1 components in Rhino 8 WIP

User Text - This new component lets you add, modify, or delete user text (ie. key/value pairs) from model objects. Look for this under the Rhino tab and Object Attributes category. There are three different operating modes:

  • Merge: When selected, the key/value pair(s) will be merged with the existing user text collection. If a key already exists in the collection, the value will be updated.
  • Set: When selected, all existing user text items in the collection will be removed before setting the new key/value pair(s).
  • Delete: When selected, any key/value pair(s) matching the input key will be removed from the user text collection

Custom Curve Display - Drawing curves in Grasshopper has always been limited. Now, you have much greater control over the look and feel of all of your curve geometry. Using the newly upgraded Model Linetype component, you can manage the line widths, taper values, dashed patterns, and cap and join styles attributes for each of your curves. Look for this new component under the Display Tab and Preview category.


ShrinkWrap - One of Rhino 8’s coolest new features is ShrinkWrap - a command which wraps most geometry types, including malformed objects or objects with self-intersections, with a valid water-tight mesh. And now, you can perform this same ShrinkWrap operation in Grasshopper. Simply connect some geometry and tweak the input parameters to achieve meshes that, among other things, are ideal for 3D printing. Look for this under the Mesh tab next to the Quad Remesh component.


@AndyPayne Hi Andy, does the components now support modifying the object attribute in the rhino space?

Can you be more specific? If you reference some geometry which already contains user text, then those key/value pairs will show up as outputs. You add or delete pairs to that collection depending on the mode you’re in. When you bake the User a text component, that new user text collection will be added to that new object.

Please see the snapshot below, what I expect is how to write/update the new attributes into the existed circular curve in Rhino space if I do not want to bake the new ones.

Ah. Right now that isn’t possible. We are working on a baking solution where it updates an existing object rather than making a copy, but it’s not quite ready. Nevertheless, we hope it’s something that will solve the issue you’re talking about.


Oh, I see. Thanks for your hard working.

1 Like

So, would this re-baking work similarly to how Rhino Inside Revit treats Revit objects? Could I for example control the position of native Rhino object by Grasshopper without losing any of its data (named selections, texture mapping, render mesh settings etc.) or control object visibility from Grasshopper?

example of RiR component for changing object location

Jakub, These are still in development and we can add these as a feature request, but in general the relationships you are implying are better suited for a relational database (like Revit), where there are many layers of connectivity built-in from the ground up. There is a lot of potential in what is being developed but its not going to connect everything all at once.

Some of what you’re looking for is already exposed, such as render mesh settings and object visibility. However, named selections and texture mappings are not available yet.


Some feedback about this:
(+) great to have a native GH component for that!
(-) missing a “linetype scale” input, “object properties” in Rhino does have it
(-) “cap style” setting has no effect in GH
(-) “join style” setting: only “miter” works, but at “bevel” setting
(-) a continuous non-tapered line thickness can only be reached by setting both “start width” and “end width” to the same value. I would expect to just use “start width” to control the overall thickness, but that’s a minor issue
(-) “restart pattern at kinks” is not there (was “PatternBySegment” in the “fancy_curves.gha” example from here: (11.8 KB) (12.6 KB)

thanks for your work


The purpose of the Model Linetype component was to wrap the native Rhino data type for Linetypes. This link doesn’t show all of the Rhino 8 attributes that are available for linetypes, but scale is not an attribute for this class. The linetype scale property that you’re referring to is currently in the Object Attributes (not the linetype class itself). I need to have some internal discussions about this and where this property resides… but yes, I think we should be able to add this.

This is a known issue and I have filed a YouTrack item for this.

You should be able to control the linewidth if it has no taper simply by using the Start Width and no other values (see below from your example). Alternatively, I made it so that you can also just add a number slider to the Custom Curve Display component instead of a Linetype and it will just make a continuous linewidth of that size… so you could do that as well.

I think this could be added. Let me look.

Looking forward to try it out. And please make sure the pattern looks nice around the kinks like in R7.

Ok. I’ve brought this up to Steve (who wrote most of the code for this) and this issue is now on his list. That said, I don’t think we’ll need to have new input parameter on the model linetype component, as I think it should match the V7 output automatically.

Secondly, I misspoke earlier about the Linetype Scale. It’s already available, I had just forgotten that I had already added it :slight_smile: As I said earlier, the Linetype Scale property doesn’t exist on the Linetype class… instead it exists as part of the Object Attributes. As such, you have to set that parameter in the Drafting Attributes, which then get assigned to the object itself. Have a look at this example. (12.5 KB)

Also, the only thing the Linetype Scale is doing is adding a multiplier to the pattern segment values. So, you could also simply multiply the segment patterns when passing those into the Model Linetype component to achieve the same result. Hopefully this makes sense.

Okay, that would work for baking. Is there a way to pass the “LinetypeScale” value or “Drafting” attribute to the “CustomCurvePreview” component? Now it only accepts the “ModelLinetype” parameter.

Not at the moment (although it could possibly be made to do so). If you wanted it to work with the Custom Curve Display, I would recommend just multiplying the pattern segments before assigning it to the Model Linetype… as this achieves the same result.

Thanks, I will play this. Starts to get confusing: multiply here and there, divide over there, and override on another location. :wink:

I am having issues with inconsistency between ShrinkWrap in Rhino vs Grasshopper. Same settings produce different meshes, and what is available with the Rhino Mesh is closer to what I am looking for. There seem to be two main takeaways with Shrink wrap so far that I found. It works better with larger objects, and it works better closer to 0,0,0. Typically I work on objects that tend to be small (less than 10x10x10" volume, and they are normally very far from the 0,0,0. In the case below, the project is on top of the 0,0,0 in order ruling that out.



I am relatively new to Grasshopper so this could come down to user error. I cannot find any documentation about what grasshopper wants to feed into the ShrinkWrap categories. The grasshopper input also seems to be missing the point cloud option. Not sure if that is in development.

Thank you!

Hi @caseyn. My apologies for the delay on this question. Do you have a test file that we can use to compare on our side? Secondly, from the screenshots that you posted, I’ve noticed that there is a discrepancy in the values you are using in your GH definition and the values you use in the Rhino command. It looks like you’re using a target edge length of 0.21 in the Grasshopper definition, but 0.12 in the Rhino command. Can you verify that you indeed get different results when you use the exact same values for both shrink wrapping methods?

Thanks Andy for the response. Settings were identical despite what my screen shot showed (shrinkwrap auto defaulted to .12 edge length when I took the image)

*If * I had used the .12 0 0 10 settings, the results would have given me this mesh:

Updated Rhino WIP

I went back in to recreate this in the new WIP update I installed yesterday. I cannot produce the same outcome as I did previously using the same settings. However, the Rhino and Grasshopper Shrink wraps are now identical, which solves the main concern I had:

The new Grasshopper based result is similar to what Grasshopper first produced, but not identical:

The results for the new Rhino based Shrinkwrap are completely different than the old.

Ultimately this seems to have been solved with the new update. I just don’t know what had caused it in the first place.


1 Like