Assembler logo

Assembler

Announcing Assembler!

Assembler is a Grasshopper plugin that helps you construct and manage assemblages of parts, conceived with (but not limited to) the architectural scale in mind.

With Assembler, you can create assemblages from parts and rules for their connection, manage the criteria for the assemblage growth and its interaction with environmental geometries and data, and perform local (part) and global (assemblage) level computation on the results for analysis or post-processing.

Assembler is the result of 2 years of research and teaching. Developing it was, and still is, a learning journey: it taught me so much already about ways of thinking and making, and, at every turn, there’s always something new and unexpected (and not always pleasant, but still part of the process), new possibilities open up and demand to be explored (I file them in a “wild ideas” note).

There is a philosophy behind the tool, broadly illustrated in the documentation. Feel free to skip it, I believe a tool shouldn’t be restricted to the sole purpose it was intended for, but its affordances must be explored also through peruse, misuse and abuse (without harming anyone of course).

Now, it’s your turn. I look forward to seeing what you can do with it, and what I can learn from you.

Happy exploring!

PS: don’t forget to tag us and use the #madewithassembler hashtag!

Links

. Assembler on food4Rhino
. Documentation
. Example Files
. GitHub page

Here’s a gallery showcasing (some) Assembler features:

  • An AssemblyObject setup. Handles are displayed with their type, weight and rotations
  • Heuristics Display with geometric XData
  • curve used to generate a scalar field, and a box container geometry
  • The generated Assemblage
  • Assemblage with AssemblyObjects colored by type. Colored outlines show zones in which different heuristics (involving only one of the types) are applied. The "buffer zone" applies heuristics involving both types to enable the transition between zones.
  • Assemblage with AssemblyObjects colored by type. Colored outlines show zones in which different heuristics (involving only one of the types) are applied. The "buffer zone" applies heuristics involving both types to enable the transition between zones. Indexes for the heuristics set used in each zone are highlighted.
  • Assemblage with AssemblyObjects colored by type. Colored outlines show zones in which different heuristics (involving only one of the types) are applied. The "buffer zone" applies heuristics involving both types to enable the transition between zones. Vector field and indexes for the heuristics set used in each zone are highlighted.
  • scalar distance field from a group of lines (pink), an obstacle (light blue) and a void (brick red)
  • Assemblage developed along the lines, orientation following a vector field, respecting the container, the obstacle and the void
  • The same assemblage, visualizing geometries contours (black) and collision meshes contour (gray)
  • Collision meshes, colored by AssemblyObject type
  • Actual geometries, colored by AssemblyObject type
  • Actual geometries, colored by occupancy (white = available, light green = unreachable, dark green = saturated)
  • Actual geometries, colored by placement sequence (darker = older, brighter = younger)
  • Actual geometries, colored by Z-level height
  • Actual geometries, colored by connectivity (number of occupied handles - green = fewer)
  • Actual geometries, colored by direction vector orientation (faux-normal colors)
  • Actual geometries, colored by Reference plane Z-vector angle with World Z vector (faux-normal colors)
  • Actual geometries, colored by local density
  • Actual geometries, colored by receiver value: in this case, the closeness to the scalar field threshold value (white = closest, red = farthest)
  • section of assemblage along two of the field lines
  • Collision meshes displayed by AssemblyObject type
  • Actual geometries inside the collision Meshes, displayed by AssemblyObject type. Notice the red type has different geometry according to its orientation (horizontal-vertical)
  • Collision meshes displayed by AssemblyObject connectedness (number of occupied or occluded Handles, green to red in increasing order)
  • Actual geometries inside collision meshes displayed by AssemblyObject connectedness (number of occupied or occluded Handles, green to red in increasing order)
  • (PP) Shortest path between 2 points in the assemblage, using a circulation path designed for each part and associated as XData
  • (PP) Circulation frequency for a given circulation path inside the assemblage
  • (PP) Circulation clusters (independent networks) formed inside the assemblage
  • (PP) Handle connectivity display
  • Handle compatibility override: stair blocks (gray) only connect with themselves in vertical stacking order, while horizontally they spawn slab-wall elements that can proliferate maintaining Z-up orientation
  • (PP) AssemblyObject inspector - show index, rule used and neighbours for a given AssemblyObject index
  • (PP) Clustering components by distance - useful for services and function distribution and logistics studies
  • (PP) Independent clusters display - shows independent clusters of connected objects. In case your assemblage starts from more than one source, it is a diagnostic tool to check if initially separated clusters join into larger ones.
  • (PP) Extracting horizontal surfaces form an assemblage - for plan and circulation studies
  • Face orientation recognition (wall, ceiling, slab) and corresponding block assignment

And a few things that were made with Assembler (or its ancestor made of scripted components), followed by a gallery of sample images:

. Architectural Machines (Digital Futures 2020 workshop)

. projects from IaaC MAA 2021:
. Urban Promenade
. Urban Eurythmics
. Assembled Flow
. projects from IaaC MAA 2020:
. Block Party
. Building Engine
. Continuity
. Modular Assemblies

  • Sample assemblage made with parts from example files (horizontal clipping plane section)
  • a3 course at Università di Bologna - 2020-21 - CMod - Arianna Bartolotti, Ilaria Deiana, Selene Ghezzi
  • a3 course at Università di Bologna - 2020-21 - CMod - Arianna Bartolotti, Ilaria Deiana, Selene Ghezzi
  • a3 course at Università di Bologna - 2020-21 - CMod - Arianna Bartolotti, Ilaria Deiana, Selene Ghezzi
  • a3 course at Università di Bologna - 2020-21 - CMod - Arianna Bartolotti, Ilaria Deiana, Selene Ghezzi
  • a3 course at Università di Bologna - 2020-21 - CMod - Arianna Bartolotti, Ilaria Deiana, Selene Ghezzi
  • a3 course at Università di Bologna - 2020-21 - CMod - Arianna Bartolotti, Ilaria Deiana, Selene Ghezzi
  • a3 course at Università di Bologna - 2020-21 - CMod - Arianna Bartolotti, Ilaria Deiana, Selene Ghezzi
  • a3 course at Università di Bologna - 2020-21 - CMod - Arianna Bartolotti, Ilaria Deiana, Selene Ghezzi
  • a3 course at Università di Bologna - 2020-21 - Escape City - Claudio Corradini Zini, Giacomo Martini, Nicola Petracci
  • a3 course at Università di Bologna - 2020-21 - Escape City - Claudio Corradini Zini, Giacomo Martini, Nicola Petracci
  • a3 course at Università di Bologna - 2020-21 - Escape City - Claudio Corradini Zini, Giacomo Martini, Nicola Petracci
  • a3 course at Università di Bologna - 2020-21 - Escape City - Claudio Corradini Zini, Giacomo Martini, Nicola Petracci
  • a3 course at Università di Bologna - 2020-21 - Escape City - Claudio Corradini Zini, Giacomo Martini, Nicola Petracci
  • a3 course at Università di Bologna - 2020-21 - Escape City - Claudio Corradini Zini, Giacomo Martini, Nicola Petracci
  • a3 course at Università di Bologna - 2020-21 - Escape City - Claudio Corradini Zini, Giacomo Martini, Nicola Petracci
  • a3 course at Università di Bologna - 2020-21 - P.A.T.H. - Marco Lampati, Lorenzo Modena, Giulio Quaranta
  • a3 course at Università di Bologna - 2020-21 - P.A.T.H. - Marco Lampati, Lorenzo Modena, Giulio Quaranta
  • a3 course at Università di Bologna - 2020-21 - P.A.T.H. - Marco Lampati, Lorenzo Modena, Giulio Quaranta
  • a3 course at Università di Bologna - 2020-21 - P.A.T.H. - Marco Lampati, Lorenzo Modena, Giulio Quaranta
  • Architectural Machines 2020 - work by Jan Pacit & Alexandre Atamian - using line geometry to build a path network and compute shortest paths between target points
  • Architectural Machines 2020 - work by Jan Pacit & Alexandre Atamian - using a container + vector field to constrain and direct assemblage growth
  • Architectural Machines 2020 - work by Jan Pacit & Alexandre Atamian
  • Architectural Machines 2020 - work by Jan Pacit & Alexandre Atamian
  • Architectural Machines 2020 - work by Saraubh Prasadi & Andrea Cancian
  • Architectural Machines 2020 - work by Saraubh Prasadi & Andrea Cancian
  • Architectural Machines 2020 - work by Saraubh Prasadi & Andrea Cancian
  • Architectural Machines 2020 - work by Saraubh Prasadi & Andrea Cancian - table of rule combinations
  • Architectural Machines 2020 - work by Alya Rappoport & Nora Fankhauser
  • Architectural Machines 2020 - work by Alya Rappoport & Nora Fankhauser - topological network of connections in the assemblage
  • Architectural Machines 2020 - work by Wei Gai