How to Create SketchUp Dynamic Components: Shelf Tutorial

Wall Shelf Resizable Sketchup Dynamic

This Dynamic Component tutorial uses a simple wooden wall shelf to demonstrate resizing without changing the proportion of the details, scaling correctly. This is the most basic lesson of Dynamic Components in SketchUp. It also shows how to reduce the number of anchor points (grips) for the Scale command.

How to Create Dynamic Components in SketchUp: Video Tutorial

Watch the full walkthrough below. The shelf model is a beginner-friendly example — two fixed side panels and a resizable middle shelf span. Every technique shown applies to any furniture or architectural component you want to make resizable.

Download Example Models

Dynamic-Wall-Shelf.skp

What You Need Before Starting

To create dynamic components in SketchUp you need SketchUp Pro or Studio (paid desktop subscription). The Dynamic Components authoring tools — the Component Attributes dialog and the Component Options dialog — are only available in the desktop Pro app.

  • SketchUp Pro / Studio: full authoring access. You can add attributes, write formulas, and publish options.
  • SketchUp Go (web, paid): can interact with existing dynamic components but cannot create or edit them.
  • SketchUp Free (web): dynamic components do not work at all — no viewing, no interacting.
  • SketchUp Make 2017 (old desktop free): can view and interact, but the authoring dialogs are locked.

Dynamic Components are powered by a built-in Ruby API that runs only in the desktop application. There is no workaround for web editions.

Lesson Objectives

  • Understand the Component Attributes dialog and how to add custom attributes to a component.
  • Write basic formulas that link child component dimensions to a parent size value.
  • Control which grips appear when a user scales the component — removing the ones that would break proportions.
  • Expose a single “Width” option in the Component Options dialog so end users can resize the shelf without touching attributes.

Step 1 — Build the Geometry First

Before you add any attributes, model the shelf as a normal SketchUp component. Structure matters: the scaling formulas reference named sub-components, so get the hierarchy right before opening the attributes dialog.

  • Create three sub-components: Left Panel, Right Panel, and Shelf Board.
  • Name each sub-component clearly. Spaces are allowed but avoid special characters — they will appear as attribute names.
  • Position the origin of each sub-component at its bottom-left-front corner. Consistent origins make position formulas predictable.
  • Make the parent component a wrapper around all three. Do not group geometry and components together at the same level.

Clean geometry now saves debugging time later. Every face should be on layer/tag “Untagged”. Hidden geometry that leaks outside the component bounding box will skew the LenX/LenY/LenZ values that SketchUp reads automatically.

Step 2 — Open Component Attributes and Add a Width Variable

This is the core step to make a dynamic component in SketchUp. Select the parent component, then go to Window > Component Attributes.

  • Click the + button to add a new attribute on the parent. Name it Width.
  • Set a default value — for example 600 (millimeters, if your model is in mm).
  • Check Display in Component Options. This exposes the value to end users via the Component Options dialog (Window > Component Options).
  • Optionally set a label (“Width”) and units so the options dialog shows a clean input field.

The Width attribute on the parent is now the single source of truth. All child formulas will reference it. Changing this one number will resize the entire assembly.

Step 3 — Write Formulas for Child Components

Switch to each sub-component in the attributes dialog and write formulas for its position and size.

Shelf Board

  • LenX (width): =Parent!Width - (2 * Left_Panel!LenX) — the board fills the gap between the two fixed panels.
  • X position: =Left_Panel!LenX — starts right where the left panel ends.
  • LenY and LenZ stay fixed (the board thickness and depth do not change).

Right Panel

  • X position: =Parent!Width - Right_Panel!LenX — pinned to the right edge.
  • All dimensions stay fixed — the panel itself does not scale, only its X position moves.

Left Panel

  • X position: 0. No formula needed — it sits at the origin.
  • All dimensions fixed.

Test the formulas immediately: select the parent, open Component Options, and change Width. The board should stretch and the right panel should slide. If nothing moves, check that sub-component names in formulas exactly match the names in the attributes dialog (case-sensitive).

Step 4 — Control Scale Grips

By default SketchUp shows 26 scale grips (corners, edges, faces). For a shelf that should only resize horizontally, most grips are misleading. You can hide them using the ScaleTool attribute on the parent.

  • Add attribute ScaleTool on the parent component.
  • Set value 1 to allow only the left/right face grips (X-axis scaling). Values 1–26 each correspond to a specific grip; combine them with addition or use the specific bitmask values from the SketchUp DC documentation.
  • A value of 0 hides all grips — useful if you want users to resize only via the Component Options dialog, not by dragging.

Limiting grips prevents users from accidentally squashing the shelf vertically, which would break the fixed-panel proportions. For this shelf, expose only the horizontal grips.

Step 5 — Publish and Test

Open Window > Component Options with the parent component selected. You should see the Width input field you created. Type a new value and press Enter — the shelf should update instantly without any distortion on the side panels.

  • Test extreme values: very narrow (close to 2× panel width) and very wide. Check that no geometry overlaps or inverts.
  • Use the Interact tool (the hand cursor in the toolbar) to confirm the component responds to clicks if you added any OnClick behaviors.
  • Save the model. Dynamic Component attribute data is stored inside the .skp file — no external files needed.

If you want to share the model, anyone with SketchUp Pro can open Component Attributes to see your formulas. Use Window > Component Options as the end-user interface; the raw attributes dialog is for authors.

Notes

  • Attribute names are case-sensitive. Width and width are two different attributes.
  • Formulas use = prefix. Without the equals sign, the value is treated as a static number or string, not a formula.
  • Units depend on your model units. If your model is in inches, write values in inches. Mixing units in formulas causes silent errors.
  • The LenX, LenY, LenZ attributes are auto-populated by SketchUp from the bounding box of the component geometry. You can override them with formulas, but the override applies only during regeneration — the bounding box recalculates after each change.
  • Dynamic Components do not work with Parashape library components unless you manually add attributes after placing them.

Going Further with Dynamic Components

The shelf is intentionally minimal. Once you are comfortable with the basics, try these techniques to create more advanced dynamic components in SketchUp:

  • Visibility formulas: use the Visible attribute on a sub-component to show or hide parts based on a parent option. Useful for toggle features — a door with or without a handle, for example.
  • Copies attribute: repeat a sub-component N times automatically. Set Copies on a shelf-peg component and drive N from the shelf width — more pegs appear as the shelf grows.
  • OnClick behavior: add animated state changes triggered by the Interact tool. Drawers that open, lids that flip — all driven by OnClick and a state attribute.
  • Nested dynamic components: a parent DC can contain child DCs. Each level has its own attributes. Keep nesting shallow (2–3 levels max) to avoid formula debugging complexity.

For a library of ready-made dynamic furniture components you can study and adapt, see Parashape for SketchUp. The components use the same Component Options / Interact Tool system — no extra plugin needed to use them.

Common Issues & FAQ

Nguyen Huu Khanh

Architect turned developer