Rhino WIP Feature: Linetypes With Shapes

The Rhino WIP now supports creating linetypes that position text and curve shapes at intervals along a curve.

What are Linetypes With Shapes?

Linetypes With Shapes are new linetypes that can include text and shapes. These linetypes are often called “complex” linetypes. They incorporate text and shapes alongside traditional dashes, dots, and spaces.

Why Linetypes With Shapes?

These linetypes are used to represent specialized elements, such as utility lines: water, gas, fencing, wall types, and more.

In previous versions of Rhino, the shapes or text were simply duplicated on the curve with commands like array along curve, or scripted with Grasshopper or Python.

If the original curve was edited, stretched, moved, or rotated, additional work was required to update the text and curves that were now disassociated from the resulting edited curve.

This was time-consuming and very frustrating to have to rework because of a simple edit.

More on Linetypes With Shapes

The LinetypeWithShapes command or the Linetypes panel generates a linetype based on the text or glyph selected and other important parameters.
With the special Linetypes With Shapes created, it can be assigned to existing curves or layers.
Modification to the linetype, either updating the text or curves (glyph), the spacing, the gap, and the baseline.

When the linetype definition is updated, the objects or layers that are assigned this linetype also update.

In addition, if the geometry that the linetype is assigned to gets edited with control points or gumball, gets moved, stretched, scaled, rotated, or undergoes other transformations, the resulting geometry is updated with the new linetype.
Gif Edits

Linetypes can be created in a template and imported with existing geometry.

How It Works

The LinetypeWithShapes command or the Linetypes panel generates a named linetype based on text and curve selected, prescribes the interval it will be repeated, and the base point from which to be oriented.

The Linetypes With Shapes can then be applied to curves or to layers.
Configuration parameters are:

  1. Name for the linetype
  2. Shapes: Select text or curves to be used in the linetype.
  3. Spacing (interval)
  4. Gap or margins
  5. Basepoint that will be used to locate the text on the curve
  6. Assign the new linetype to a curve object or layer.

Commands:

  • LinetypeWithShapes: This command is used for both creation and edits of existing LinetypeWithShapes.
  • Linetypes panel will display the Linetypes With Shapes configuration in the section on the Linetype definition with the heading Shapes. You can create new linetypes with shapes and edit existing linetypes with shapes all from the panel.

What Else to Know:

  • Linetypes With Shapes are part of the 3DM file and can be assigned to a curve or to the layer the curve is assigned. They can also be added to a file that acts as a Rhino template.
  • Linetypes With Shapes are affected by the Linetype Model Scale and the Object Property Linetype Scale.
  • The Object Property Linetype Scale can be an effective way to scale a linetype like insulation or metal decking to fit in an area like a wall or ceiling.
  • Linetypes with Shapes that are text objects are scaled to the layout unit when Layout Space Scaling in Options → Annotation → Enable Layout Scaling is enabled.
    For example, if the text that you select to be part of the Linetype With Shapes that you are created is 1" unit high on the model, it will be 1" high on the layout.
  • Linetypes with Shapes that are text objects are scaled to the model unit when Layout Space Scaling in Options → Annotation → Enable Layout Scaling is disabled. For example, if the text that you select to be part of the Linetype With Shapes that you are created is 1" unit high on the model, it will be 1" high on the detail in model units.

Download the Rhino WIP and Try It Out!

Try it:

  1. Download and open
    Try It-Linetype Start with Shape 2.3dm (382.5 KB) in the Rhino WIP.
  2. Run the Linetypes command to open or make active the Linetypes panel.
  3. In the Linetypes panel, pick the New button.
    This will make a new linetype.
  4. Configure the linetype with shapes as instructed in the sections below.
  5. Assign the newly created linetype with shapes to the corresponding layer.
    (If you have any issues, the completed file is available to download at the at the bottom of this page.)

Standard Text Linetypes: Storm Drain, Gas Line, Fence1 and Fence2

  1. Name the new linetype Storm Drain.
  2. Scroll down the Linetypes panel to the Shapes area.
  3. Spacing: 10 and Gap: Bounding Box will be used.
  4. For the Base Point, pick the button “0.00, 0.00, 0.00” and set the base point to the center of the red rectangle.
  5. For the Select, pick the “Select Shapes…” button and pick the SD text. Enter.
  6. Assign the Storm Drain linetype to the Storm Drain Layer.
  7. One of the curves is already assign to the Storm Drain layer. You will see it update.
  8. Do the same with the Gas Line, Fence1, and Fence2.

Special Curve Linetypes: Metal Roof_1, Metal Roof_2, Batting

  1. Name the new linetype Metal Roof_1.
  2. Scroll down the Linetypes panel to the Shapes area.
  3. Spacing: 4 and Gap: Bounding Box will be used.
  4. For the Base Point, pick the button “0.00, 0.00, 0.00” and set the base point to the center of the red rectangle.
  5. For the Select, pick the “Select Shapes…” button and pick the Metal Roof_1 curve. Enter.
  6. Assign the Metal Roof_1 linetype to the Metal Roof_1 layer.
  7. One of the curves is already assign to the Metal Roof_1 layer. You will see it update.
  8. Do the same with the Metal Roof_2 & Batting.

Special Character Linetypes: Cut Line for Scratch

  1. Zoom in on Grid 7.
  2. Make a new linetype named Cut Line.
  3. For the Base Point, pick the button “0.00, 0.00, 0.00” and set the base point to the center of the text.
  4. For the Select, pick the “Select Shapes…” button and pick text you created with the special character. Enter.
  5. One of the curves is already assign to the Cut Line layer. You will see it update.
  6. Pick one of the curves and assign it to the Cut Line layer.

Special Curve Linetypes: Cut Line from Scratch (Special Character)

  1. Open Windows Character Map application.
  2. Select Wingdings 2 as the Font.
  3. In the fourth column, highlight the scissors.
  4. At the bottom of the dialog, pick the Select button and Copy.
  5. In Rhino, start the Text command and paste the character into the text string.
  6. Place this text on the file. Adjust size.
  7. Make a new linetype named CutLine or edit an existing linetype.
  8. For the Base Point, pick the button “0.00, 0.00, 0.00” and set the base point to the center of the text.
  9. For the Select, pick the “Select Shapes…” button and pick text you created with the special character. Enter.
  10. Assign the CutLine linetype to the Cut Line layer.
  11. Pick one of the curves and assign it to the Cut Line layer.

Completed File

If you have any problems and want to compare your file to ours, you can download
Linetypes with Shapes DONE.3dm (407.9 KB)

Let us know if the new feature works for you.
Thanks for testing!

Mary Ann Fugier

Thank you for implementing this feature! I am curious, when will this functionality be added to the Grasshopper components, specifically for RhinoCommon (C#) with the ability to “Internalize Shape”?

Thanks, @TAB.
We have logged.

RH-95974/Grasshopper-component-for-Linetypes-with-Shapes

Sincerely,
Mary Ann Fugier

@mary Really liking the feature so far, a nice tool to have. I have noticed some balance issues with shapes on closed poly lines.

Would it be possible to add a “Balanced” check box to linetypes? The image below comes from the affinity forum and illustrates my intent.

The shapes would then be centred along each component curve or maybe there could be an options for left / right / centre align?

@stuart.crake
We definitely need this option.

Thank you for the suggestion as well as the recommended terminology and workflow.
We have logged RH-96035/Balanced-and-Non-Balanced-Linetype-With-Shapes.

Sincerely,
Mary Ann Fugier

I like this new feature. I would like to see the gap setting tuned a bit. I understand none and boundingbox, but manual is a little confusing to me. I select manual then click the box next to it and I’m supposed to select 2 points somewhere? Maybe an alternative way is have the user input a numerical value that will offset the bounding box to create a gap/margin that will create space between the text/shape and the line. This can be useful for visual clarity.

Have you considered how we can export this feature to .dxf or other?

I would like to see the gap setting tuned a bit. I understand none and boundingbox, but manual is a little confusing to me.

We’re working on improving that flow this week. The current picker was from the original test command and needs improved. It’ll likely be converted into a simple padding value for the objects bounding box. We’ve also replaced the offset picker with a simple U/V offset as well as added previews in the UI for linetypes that contain shapes. So look for some usability changes here next week.

We also had a meeting yesterday about what shapes will survive the haul to dxf. I think we’re still working on options there for some things that dxf might not support. @mary knows better than I do in this area.