Skip to content

🧩 Create Design

This section shows how to turn your brick molds β€” the Types and Variants you’ve defined β€” into real, usable building blocks 🧱

As explained in [Think in Semio], a Type is just a blueprint. It defines how a brick should look and behave β€” but it’s not a brick yet πŸ“

To actually build a design, you need to create Pieces β€” the bricks made from your molds, ready to place, connect, and assemble 🧩


πŸ”– Place Your Bricks (Model Pieces – Pcs)

Now it’s time to turn your molds into actual bricks β€” called Pieces 🧩
These are the elements you’ll place, move, and connect in your design 🎯

πŸ“€ sketch drawing

When you create a Piece, you’re telling Semio:
β€œTake this specific mold (Type + Variant) and make a real, usable brick from it.” 🧱


Each Piece automatically includes everything from its mold:

  • Geometry (Representation) β€” the shape defined by the Variant’s geometry file 🧱
  • Ports β€” the snap points and their directions from the Type βš“
  • Semantic Data β€” the Type name, Variant identity, and design role 🧠
  • Metadata β€” any extra info like function, material, or tags πŸ“„

In short: a Piece is a fully formed brick, based on the rules and shape you defined earlier πŸ”


πŸ†” Name the Pieces

Each Piece needs a unique name β€” its ID β€” so Semio can 🧭 track, πŸ”— reference, and 🧩 connect it later on. Think of it as giving your brick a personal label 🏷️

In this example, we name the Pieces based on the Semio logo β€” using both color and position for clarity 🎨

  • 🟨 Yel β†’ yellow piece on the left
  • πŸ”΄ Red-T β†’ red piece at the top
  • πŸ”΄ Red-R β†’ red piece on the right
  • πŸ”΅ Blu-T β†’ blue piece at the top
  • πŸ”΅ Blu-B β†’ blue piece at the bottom

As always in Semio, naming is flexible πŸ”€
But a clear and consistent system makes your design easier to understand, build, and share 🧠

πŸ’‘ It’s like putting a sticker on each LEGO brick so you always know which one goes where 🧱


To model a Piece, Semio needs to know which mold it’s made from πŸ”—
That means linking it to a specific Type and Variant:

  • 🏷️ Type name β†’ e.g. 'Profile'
  • πŸ”’ Variant number β†’ e.g. 2, 4, or 5

πŸ‘‰ Without this reference, the Piece has no identity β€” it won’t know what shape to take or how to connect ⚠️


πŸ“ Example from the Sketch

In our example, the final Design includes five Pieces, built from three different Variants:

  • 2Γ— Variant 2
  • 1Γ— Variant 4
  • 2Γ— Variant 5

We’ll give each of these Pieces a unique ID, like so:

VariantPiece IDs
4Yel
5Red-T, Red-R
2Blu-T, Blu-B

These are the actual bricks you’ll be placing into your model 🧱


πŸ› οΈ In Grasshopper

Now that you understand what a Piece is, let’s learn how to cast them using the Semio plugin in Grasshopper πŸ¦—

As shown in the image, you’ll use the Model Piece Pce component and provide three key inputs:

  1. πŸ†” Piece IDs β†’ Unique names for each brick (e.g. Yel, Blu-B)
  2. πŸ”’ Variant Numbers β†’ Tell Semio which Variant of the mold to use (e.g. 2, 5)
  3. 🏷️ Type Name β†’ The shared name of the mold (e.g. 'Profile')

Each row becomes a new Piece, named by its ID β€” like Pce(Yel) or Pce(Red-R) β€”
each one inherits geometry, ports, and semantic logic from its Type and Variant πŸ”

🧱 Let’s start by modeling the first two Pieces from the sketch

Model Piece Component

Once all five Pieces are created, your model will look like this:

Model Piece Component

βœ… Your bricks are now cast and ready
Next step: placing and connecting them to build your final model πŸ”—


πŸ”— Connect the Bricks (Model Connections - Con)

Now that you’ve placed your Pieces, it’s time to tell Semio how they connect πŸ”—
Think of this like writing the assembly instructions for snapping bricks together 🧲

Each Connection says:
πŸ‘‰ β€œConnect this Port on one Piece to a Port on another Piece”


πŸ“€ sketch drawing

🧭 Set the Connection

To create a connection, you need to define four values:

  1. πŸ†” Connected Piece ID (CdPc) β†’ the Piece you’re connecting from
  2. βš“ Connected Piece Port ID (CdPo) β†’ the Port you’re connecting from
  3. πŸ†” Connecting Piece ID (CgPc) β†’ the Piece you’re connecting to
  4. βš“ Connecting Piece Port ID (CgPo) β†’ the Port you’re connecting to

Put simply:
➑️ Connect this Port on this Piece β†’ to that Port on that Piece


🧩 Example: Connecting Two Pieces

🧱 Before snapping the full model together, let’s start small β€” by connecting the first two bricks.
We’ll connect Piece Yel to Piece Red-T, using their west-facing Ports.

From the sketch, we can tell:

  • Use the w (west) Port of Yel
  • Connect it to the w (west) Port of Red-T

So the connection looks like this: Con(Yel:w β†’ Red-T:w)

Connection Example

This tells Semio:
Snap the west Port of Yel to the west Port of Red-T

Set Connection

Once this first connection is in place, you can continue snapping all remaining bricks together using similar logic 🧩

Set Connection

πŸ”— This Tells Semio:

  1. Con(Yel:w β†’ w:Red-T)
    πŸ‘‰ Snap the west Port of Yel to the west Port of Red-T

  2. Con(Red-T:e β†’ e:Red-R)
    πŸ‘‰ Snap the east Port of Red-T to the east Port of Red-R

  3. Con(Red-R:n β†’ w:Blu-T)
    πŸ‘‰ Snap the north Port of Red-R to the west Port of Blu-T

  4. Con(Red-R:n β†’ w:Blu-B)
    πŸ‘‰ Snap the north Port of Red-R to the west Port of Blu-B


Set Connection

🎯 Adjust Snap (Optional Step)

When two Pieces are connected through Ports, Semio gives you control over how the attached geometry is positioned β€”
without changing the Port itself.

These adjustments are applied relative to the orientation of the Port, based on how it was defined in the mold (Type).

πŸ“Œ Use this when the geometry needs to be slightly offset β€” to float, shift, or align more precisely.


πŸ” Move (Translation)

You can move the geometry in three local directions:

  • Gap β¬…οΈβž‘οΈ β†’ Creates a space between two connected elements by pushing the Piece forward or backward along the Port’s axis Ideal for separating elements or creating breathing room between parts

  • Shift ↔️ β†’ Moves the Piece side to side, across the plane of the Port
    πŸ“ Like nudging a LEGO brick left or right to line it up with studs underneath

  • Raise ⬆️⬇️ β†’ Lifts or lowers the Piece vertically, perpendicular to the face it connects to
    πŸͺœ Like lifting a brick slightly higher or lowering it onto the studs

    Connection Adjustment


πŸ”„ Rotating (Orientation)

  • Rotate πŸ”ƒ β†’ Rotates the Piece flat, around the Port’s main vector 🧭 Like spinning a round LEGO tile in place

  • Turn πŸ”„ β†’ Turns the Piece sideways, rotating it horizontally πŸŒ€ Like twisting a LEGO hinge side to side

  • Tilt 🀸 β†’ Tilts the Piece forward or backward, around a vertical axis 🎒 Like tilting a ramp or slope brick up or down

    Connection Adjustment


As we can see, the two Pieces we connected earlier don’t align exactly as shown in the sketch 🧩


πŸ“€ sketch drawing


This is where the optional step of adjusting the snap comes in πŸ› οΈ

Semio lets you fine-tune the position of a connected Piece after snapping 🧲
You’re not changing the Port itself βš“
Instead, you’re offsetting the geometry that comes with it πŸ“


Set Connection


βž• Connecting the Rest of the Pieces

Once i and L1 are correctly aligned ➑️
you can continue connecting the remaining Pieces one by one βž•

πŸ“Œ Just follow the sketch:
Each new Piece is snapped to the previous one using their matching Ports βš“
β€” and adjusted as needed to match the layout.

πŸŒ€ If a connected Piece isn’t facing the right way,
you can rotate it individually β€” Semio allows per-piece rotation without breaking the connection logic πŸ”„

πŸ”— And thanks to Semio’s chain behavior,
when you move or rotate one Piece, all the connected Pieces after it will update automatically πŸ’«

Set Connection

Set Connection



πŸ—οΈ Build the Design (Model Design - Dsn)

Now that you’ve created your Pieces and defined their Connections, it’s time to bring them all together into a final Design 🧰

🧩 What is a Design?

A Design in Semio is your full model β€” created by snapping together specific Pieces 🧱 using their Connections πŸ”—

It doesn’t just describe geometry πŸ‘οΈ β€” it defines how each part fits, aligns, and works within the system 🧠
You’re building not just a shape, but a smart, modular structure 🧬

🧱 Think of it like a finished LEGO build:
You’re not just stacking bricks β€” you’re creating a model where every part has a role 🎭, a position πŸ“, and a purpose 🎯


πŸ› οΈ Assembling the Design

To build your Design in Semio (e.g. in Grasshopper), you’ll use the Model Design component.
This is where you bring together all the Pieces and Connections to form your complete model 🧩

You’ll provide three main inputs:

  1. Design Name (Dn) 🏷️
    A unique name for your model β€” like "Logo Example" or "Spaceship".

  2. Pieces (Pcs) 🧱
    A list of the Pieces you’ve created β€” each one linked to a Type, Variant, and unique ID.

  3. Connections (Con) πŸ”—
    A list of the snapping rules β€” telling Semio how the Pieces are connected through their Ports.


Example:

Model Design Example


βš™οΈ Workflow Mechanics

Now that we’ve covered the core concepts of Semio, let’s take a closer look at how the components actually work β€”
and explore the key features of the Semio workflow inside Grasshopper

πŸ› οΈ Grasshopper Workflow

Semio doesn’t change how Grasshopper works β€” it changes what you’re working with.
You’re no longer just wiring geometry β€” you’re wiring design intent πŸ’‘

  • Types 🧱 – Brick molds with meaning, not just shapes
  • Pieces 🧩 – Placed bricks that follow system logic
  • Connections πŸ”— – Rules that control how elements relate
  • Designs 🧰 – Full assemblies of smart, connected pieces

This shift lets you create not just geometry β€” but structured, adaptable systems 🧠


Semio components behave just like regular Grasshopper components 🧩

  • πŸ“‹ You still work with lists and data trees
  • πŸ”’ Items are matched by index or branch

Want to set a gap β¬…οΈβž‘οΈ or a rotation πŸ”?
Just provide a matching list of values β€” each one applies to the corresponding item in your list of Connections or Pieces.



πŸ”„ Contruct, Deconstruct, Reconstruct

In Semio, Model components like Model Type, Model Piece, Model Connection, and Model Design follow a shared logic:
they’re not just builders β€” they’re also editors and inspectors.

Each component supports three fundamental actions:


1. πŸ”¨ Construct

Each Model component can create a structured Semio object from your inputs:

  • Model Type β†’ outputs a Ty (Type)
  • Model Piece β†’ outputs a Pc (Piece)
  • Model Connection β†’ outputs a Cn (Connection)
  • Model Design β†’ outputs a Ds (Design)

These are Semio’s core data types β€” they carry geometry, logic, metadata, and relationships.


2. πŸ” Deconstruct

You can also use the same component to inspect or extract the inner structure of a Semio object, and all its inputs will populate with the current values, like unpacking a brick to see how it was made.


3. πŸ” Reconstruct / Modify

In Semio, you can update any modeled object β€” like a Type, Piece, Connection, or Design β€”
by feeding its output back into the first input of the same Model component.

  • Ty β†’ Type 🧱
  • Pc β†’ Piece 🧩
  • Cn β†’ Connection πŸ”—
  • Ds β†’ Design 🧰

When you do this, you can redefine any part of the object (like its name, geometry, plane, or metadata).
Only the inputs you change will be updated β€” everything else stays exactly as it was


πŸ§ͺ Example Use Case


🧩 Modify a Piece

You can modify any aspect of a Piece β€” such as its name, placement, or other construction parameters by feeding its Pc output back into a new Model Piece component 🧩

Semio will only override the inputs you change β€” everything else stays exactly the same 🎯

E.g. In the β€œHello Semio” logo example, rotating the first Piece flips all connected Pieces as well β€” because they’re linked logically
_

Reconstruct Piece

Reconstruct Piece

πŸ”— Adjust a Connection

You can adjust any transformation or rotation parameters of a Connection by
plugging the Cn output back into a new Model Connection component πŸ”

Semio will only update the values you change β€” all other settings will remain as they were πŸ”’
This makes it easy to fine-tune how two Pieces are connected without rebuilding the whole logic πŸ”§

E.g. You can change the gap, shift, or rotation of an existing Connection, and all downstream geometry will update automatically.

Reconstruct Con Reconstruct Con Reconstruct Con

🧱 Update a Type

You can update a Type by feeding its Ty output back into the same Model Type component πŸ”
This lets you modify its Representation, Ports, or metadata β€” without changing anything else.

E.g. Swapping a simplified geometry file for a detailed one, or updating tags like material or category.


🧰 Refactor a Design

To modify a full Design, feed its Ds output into a new Model Design component πŸ”
You can update the Design name, reorganize the structure, or tweak how certain Pieces are connected.

E.g. Renaming a layout, replacing a few bricks, or adjusting a connection β€” without touching the rest.


πŸ–ΌοΈ What Happens Next?

To see your model, plug everything into the Preview Design component πŸ‘€
It displays all your Pieces in place β€” fully connected, correctly oriented, and ready to go 🧱