This project explores the complexity that can be derived from the interactions between a small number of simple components and assembly instructions using Anemone. Connection faces were assigned for simple components consisting of less that 10 voxels and basic assembly instructions were designated using Anemone. Selection of connection faces was based on the subsequent compactness of the overall assembly. The assembly criteria developed produced assemblies that were very dense, with a high number of shared faces between components.

Can complex forms be designed in a controlled manner using simple assembly instructions and even simpler assembly components? This project set out to answer that question, while at the same time providing an introduction to computational design methods. This summary will provide an overview of the project: the design of the components and the recursive assembly instructions used to join them into assemblies; the criteria used to select from the available component connections, including a comparison between random selection criteria, and the criteria specifically designed in this project to select for compactness; the resulting assemblies; and, a summary of intuitions gained throughout the process about this type of design.

Component design

Three components were created from a collection of less than 10 voxels. The forms were chosen because of the potential for interesting interlocking connections.

Three sets of three connection faces were assigned for each component. These faces would enable the selection of component orientation in the assembly instructions.

Component A

Component B

Component C

Assembly instructions

Using Grasshopper Anemone, a process was created that – starting from a single component – would evaluate all the prospective orientations by which the next component could be connected, selecting one based on the available connection faces and a set of selection criteria. The process was looped: once the next component was selected, it became the basis for subsequent connection, and so on, until a designated number of components had been assembled. Also, changing variables such as position of connection handles, rotation of axis of handles and using different configurations of handles provides a variety of assemblages structures.

Selection criteria

Broadly speaking, two types of selection criteria were explored: random and designed, though certain criteria were present in both types. These common criteria included the filtering out of any connections that would cause collisions between components, or any occlusions of available connection faces.

Random selection criteria

Using these criteria all possible connections were evaluated and then one was selected randomly. Random selection was produced using the random component in Grasshopper. In truth, these selections were not truly random since the random functionality simply selects from a series of pseudo-random numbers, which can be identified by a seed number. Nevertheless, unpredictable assemblies could be obtained from this method that were repeatable so long as the same seed number was used. With different seed numbers, one can achieve a varied unpredictable and random assemblies.

Selecting for Compactness

The criteria developed for this project involved three criteria:

  • Alignment along a specific vector: permitted only those components whose axes aligned with a designated vector (either world x, y, or z). This would allow for components with unidirectional performance attributes to be assembled appropriately.
  • Being within a bounding box: permitted only those components that would reside within a designated area once assembled. This allowed for the production of assemblies within predetermined volumes.
  • Compactness: selected each subsequent component such that the assembly would grow in the most compact manner possible. Compactness was determined as surface area over volume, and the component that resulted in the lowest value was selected.
  • These selection criteria resulted in assemblies that were very dense and involved a high number of contact faces between components.

Filtering in Series

Filtering in Parallel

A comparison was made between selecting for compactness in series vs in parallel. Minor variations were noticed, but these can most likely be attributed to several components meeting the selection criteria simultaneously, with the top item of a data list being selected. Careful data management would likely eliminate these variations.

Comparison of Series Sorting vs Parallel Sorting


–        Assembly instructions start with the design of the component to be assembled

–        Compact assemblies can provide characteristics such as high density or high levels of contact between components. Possible results of this are increased stiffness and security of connections, but would result in higher weight or quantity of glue/cement between components.