π§© 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 π―
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 π§±
𧬠Link to the Mold
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
, or5
π 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:
Variant | Piece IDs |
---|---|
4 | Yel |
5 | Red-T , Red-R |
2 | Blu-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:
- π Piece IDs β Unique names for each brick (e.g.
Yel
,Blu-B
) - π’ Variant Numbers β Tell Semio which Variant of the mold to use (e.g.
2
,5
) - π·οΈ 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
Once all five Pieces are created, your model will look like this:
β 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β
π§ Set the Connection
To create a connection, you need to define four values:
- π Connected Piece ID (
CdPc
) β the Piece youβre connecting from - β Connected Piece Port ID (
CdPo
) β the Port youβre connecting from - π Connecting Piece ID (
CgPc
) β the Piece youβre connecting to - β 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 ofYel
- Connect it to the
w
(west) Port ofRed-T
So the connection looks like this:
Con(Yel:w β Red-T:w)
This tells Semio:
Snap the west Port of Yel
to the west Port of Red-T
Once this first connection is in place, you can continue snapping all remaining bricks together using similar logic π§©
π This Tells Semio:
-
Con(Yel:w β w:Red-T)
π Snap the west Port ofYel
to the west Port ofRed-T
-
Con(Red-T:e β e:Red-R)
π Snap the east Port ofRed-T
to the east Port ofRed-R
-
Con(Red-R:n β w:Blu-T)
π Snap the north Port ofRed-R
to the west Port ofBlu-T
-
Con(Red-R:n β w:Blu-B)
π Snap the north Port ofRed-R
to the west Port ofBlu-B
π― 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
π 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
As we can see, the two Pieces we connected earlier donβt align exactly as shown in the sketch π§©
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 π
β 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 π«
ποΈ 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:
-
Design Name (
Dn
) π·οΈ
A unique name for your model β like"Logo Example"
or"Spaceship"
. -
Pieces (
Pcs
) π§±
A list of the Pieces youβve created β each one linked to a Type, Variant, and unique ID. -
Connections (
Con
) π
A list of the snapping rules β telling Semio how the Pieces are connected through their Ports.
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 aTy
(Type)Model Piece
β outputs aPc
(Piece)Model Connection
β outputs aCn
(Connection)Model Design
β outputs aDs
(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
_
π 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.
π§± 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 π§±