100% found this document useful (1 vote)
243 views49 pages

Cris

Cris Doc

Uploaded by

Elvio Junges
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
243 views49 pages

Cris

Cris Doc

Uploaded by

Elvio Junges
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 49

CRYSTALLON

Lattice structure tools for Grasshopper3D


Crystallon
noun

A crystal fragment dropped into a saturated solution to provide a nucleus


around which the solution may crystallize: also called seed crystal.

The word "crystallography" derives from the Greek words crystallon


"cold drop, frozen drop", and graphein "to write".
CRYSTALLON V1.0 -- Lattice structure tools for Grasshopper3D

Copyright (C) 2018 Aaron Porterfield

www.studiofathom.com
www.fequalsf.com

This program is free software: you can redistribute it and/or modify


it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Contents

1. Abstract
2. Terminology
a. Key words
b. Anotomy of a lattice
3. Overview of tools
a. Voxelize
1. Voxelize
2. Morph Between Surfaces
3. Voxel Morph Value
4. Voxel Morph Attractor
5. Mesh Offset
6. Mesh Offset Value
7. Mesh Offset Attractor
8. Surface Offset Value
9. Surface Offset Attractor
b. Populate
1. Cell Type
2. Cell Selector
3. Cell Fill
4. Cell Shell Fill
5. Tween Cell Fill
6. Cell Morph Value
7. Cell Morph Attractor
8. Voronoi Fill
c. Clean Up
1. Trim Lattice
2. Trim Shell
3. Remove Floating
4. Remove Short
5. Remove by Valence
6. Remove Duplicate Curves
d. Modify
1. Lattice Connections
2. Morph Lattice to Skin
3. Morph Shell to Skin
e. Thicken
1. Lattice Thickness Value
2. Lattice Thickness Attractor
3. Shell Thickness Value
4. Shell Thickness Attractor
4. Examples
a. Uniform Beams
b. Uniform Shells
c. Conformal Shells
d. Confroma Beams
Abstract

Crystallon is an open source project for creating lattice structures using Rhino and Grasshopper3D. It was
developed at FATHOM (www.studiofathom.com) by Aaron Porterfield (www.fequalsf.com) as an alternative to
commercially available software for lattice design. The obvious advantage is the ability to generate lattice
structures within Rhino’s design environment without exporting to 3rd party software, but the extended
advantages include the modularity and ability to combine other powerful tools available for Grasshopper3D. The
decision to release it as open source was not only to share it with the community, but to further the development
through it’s users. We realize not all users will have the same applications and needs, so we hope to receive
feedback and improvements from users with unique case studies. Each tool is left as a cluster which can be
opened and modified at will, in the spirit of open source. We hope the community will continue to develop and
contribute through the use of the Grasshopper forums and Github.

V1.0 -- This is the first initial release and we will begin bug fixes immediately as they are reported. Future plans
are to include utilities for import and export between more robust simulation software packages which will be
included in the next release. Enjoy :)
Key Words

Voxel
noun

(In computer-based modeling or graphic simulation) an array of elements


of volume that constitute a notional three-dimensional space, which a
representation of a three-dimensional object is divided. The word voxel
originated by analogy with the word "pixel", with vo representing "volume"
and el representing "element".

Unit Cell
noun

(In crystallography) the smallest group of atoms of a substance that has


the
overall symmetry of a crystal of that substance, and from which the entire
lattice
can be built up by repetition in three dimensions.

Lattice
noun

(In material science) a regular repeated three-dimensional arrangement


of atoms, ions, or molecules in a metal or other crystalline solid.
Anatomy of a Lattice Structure

Unit Cells

Beams (curves) Shells (meshes)

Node Vertice
Beam Face

Voxels

Voxel Populated Voxel

Lattice Skin

Solid Skin

Lattice
Overview of Tools
Voxelize

This group of tools is for generating and and modifying the set of
voxels which will be used to populate with unit cells to create a lattice
structure.
Voxelize

Description:

Fill a volume with equal sized voxels.

Inputs:

Geometry (G) - [geometry] - Geometry to voxelize

Voxel Size X (X) - [number] - Size of voxels in X direction

Voxel Size Y (Y) - [number] - Size of voxels in Y direction

Voxel Size Z (Z) - [number] - Size of voxels in Z direction

Fill Completely (FC) - [boolean] - If true, Voxels will fill entire volume. If false, only Voxels
with their centroid within the volume will be kept.

Outputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells


Morph Between Surfaces

Description:

Conformal fill of voxels between two or more surfaces. Creates equal divisions between
any number of surfaces with voxels lofted between them.

Inputs:

Surfaces (S) - [surface] - At least 2 surfaces to morph voxels between

Voxel Number X (X) - [number] - Number of voxels in the U direction

Voxel Number Y (Y) - [number] - Number of voxels in the V direction

Voxel Number X (X) - [number] - Number of voxels in the Z direction

Outputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells


Voxel morph value

Description:

Morph voxels with a point cloud and corrosponding values.

Inputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Points (S) - [point] - List of points (flattened)

Values (Va) - [number] - List of values that correspond to points (flattened)

Distance Influence (DI) - [boolean] - If true the distance between the points
and voxels will affect the magnitude

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Magnitude of the morph (minimum)

Magnitude (max) (Ma(max)) - [number] - Magnitude of the morph (maximum)

Outputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells


Voxel Morph Attractor

Description:

Morph voxels with attractor(s).

Inputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Attractor (A) - [geometry] - Any geometry to use as attractor(s)

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (Ma) - [number] - Magnitude of the morph

Outputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells


Mesh Offset

Description:

Offset mesh triangles into voxels. This subdivides a trangulated mesh so that each
triangle becomes (3) 4-sided polygons, then offsets each point normal to the mesh
surface to create a voxel on the surface.

Inputs:

Mesh (M) - [mesh] - Mesh to offset

Distance (D) - [number] - Distance to offset mesh

Outputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Quad Mesh (M) - [mesh] - Quad mesh generated from the input mesh

Offset Quad Mesh (M) - [mesh] - Offset quad mesh generated from the input mesh
Mesh Offset Value

Description:

Offset mesh triangles into voxels with a point cloud and corrosponding
values.

Inputs:

Mesh (M) - [mesh] - Mesh to offset

Points (S) - [point] - List of points (flattened)

Values (Va) - [number] - List of values that correspond to points (flattened)

Distance Influence (DI) - [boolean] - If true the distance between the points
and voxels will affect the magnitude

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Magnitude of the offset (minimum)

Magnitude (max) (Ma(max)) - [number] - Magnitude of the offset (maximum)

Outputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Quad Mesh (M) - [mesh] - Quad mesh generated from the input mesh

Offset Quad Mesh (M) - [mesh] - Offset quad mesh generated from the input
mesh
Mesh Offset Attractor

Description:

Offset mesh triangles into voxels with attractor(s).

Inputs:

Mesh (M) - [mesh] - Mesh to offset

Attractor (A) - [geometry] - Any geometry to use as attractor(s)

Lower Limit (Li) - [number] - Smoothing of the surface closest to the attractor

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Magnitude of the offset (minimum)

Magnitude (max) (Ma(max)) - [number] - Magnitude of the offset (maximum)

Outputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Quad Mesh (M) - [mesh] - Quad mesh generated from the input mesh

Offset Quad Mesh (M) - [mesh] - Offset quad mesh generated from the input
mesh
Surface Offset Value

Description:

Offset a surface with with a point cloud and corrosponding values.

Inputs:

Surface (S) - [surface] - Surface to offset

Resolution U (Re(u)) - [number] - Number of surface divisions in the U direction

Resolution V (Re(v)) - [number] - Number of surface divisions in the V direction

Points (S) - [point] - List of points (flattened)

Values (Va) - [number] - List of values that correspond to points (flattened)

Distance Influence (DI) - [boolean] - If true the distance between the points and
voxels will affect the magnitude

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Magnitude of the offset (minimum)

Magnitude (max) (Ma(max)) - [number] - Magnitude of the offset (maximum)

Outputs:

Surface (S) - [surface] - Offset surface


Surface Offset Attractor

Description:

Offset a surface with attractor(s).

Inputs:

Surface (S) - [surface] - Surface to offset

Resolution U (Re(u)) - [number] - Number of surface divisions in the U direction

Resolution V (Re(v)) - [number] - Number of surface divisions in the V direction

Attractor (A) - [geometry] - Any geometry to use as attractor(s)

Lower Limit (Li) - [number] - Smoothing of the surface closest to the attractor

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Magnitude of the offset (minimum)

Magnitude (max) (Ma(max)) - [number] - Magnitude of the offset (maximum)

Outputs:

Surface (S) - [surface] - Offset surface


Populate

This group of tools is for populating voxels with specific unit cells
(beams or shells) or an entire volume with a voronoi (stochastic)
lattice.
Cell Type

Description:

Preset unit cells. There are currently 21 preset unit cells to choose from. 6 are shell
unit cells (3 open and 3 closed cell) and 2 examples of ‘tween’ cells that can morph
between each other.

Inputs:

Unit Cell Selector (US) - [curves / mesh] - Unit cell selection

Outputs:

Unit Cell (U) - [curves / mesh] - Single unit cell to populate voxels
Cell Selector

Description:

Choose preset unit cell using the drop down menu.

Outputs:

Unit Cell Selector (US) - [curves / mesh] - Unit cell selection


Cell Fill

Description:

Fill voxels with unit cells. Use the Unit Cell Selector and Cell Type to choose from preset
cells or create your own (as long as it has cubic symmetry).

Inputs:

Unit Cell (U) - [curves / mesh] - Single unit cell to populate voxels

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Outputs:

Lattice (L) - [curves] - List of curves that make up the lattice


Cell Shell Fill

Description:

Fill voxels with shell unit cells. Use the Unit Cell Selector and Cell Type to choose
from preset cells or create your own (as long as it has cubic symmetry).

Inputs:

Unit Cell (shell) (U(s)) - [mesh] - Single unit cell to populate voxels

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Outputs:

Lattice (shell) (L(s)) - [mesh] - Joined mesh that makes up the lattice
Tween Cell Fill

Description:

Fill voxels with morphed unit cells. Use one of the ‘Cell Morph’ tools to create values for
each voxel then use two ‘tween’ type unit cells to morph betwen. Values range from 0
(unit cell 1) to 1 (unit cell 2).

Inputs:

Unit Cell 1 (U) - [curves] - Single unit cell to populate voxels

Unit Cell 2 (U) - [curves] - Single unit cell to populate voxels

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Values (Va) - [number] - List of values from 0-1 (flattened) corresponding to each voxel

Outputs:

Lattice (L) - [curves] - List of curves that make up the lattice


Cell Morph Value

Description:

Morph unit cells with a point cloud and corrosponding values.

Inputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Points (S) - [point] - List of points (flattened)

Values (Va) - [number] - List of values that correspond to points (flattened)

Distance Influence (DI) - [boolean] - If true the distance between the points and voxels
will affect the magnitude

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Outputs:

Values (Va) - [number] - List of values from 0-1 corresponding to each voxel
Cell Morph Attractor

Description:

Morph unit cells with attractor(s).

Inputs:

Voxels (V) - [twistedbox] - Voxels to be filled with unit cells

Attractor (A) - [geometry] - Any geometry to use as attractor(s)

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Magnitude of the morph (minimum)

Magnitude (min) (Ma(min)) - [number] - Magnitude of the morph (minimum)

Outputs:

Values (Va) - [number] - List of values from 0-1 corresponding to each voxel
Voronoi Fill

Description:

Fill a volume with randomized voronoi cells. Use attractors to vary the density.

Inputs:

Geometry (G) - [geometry] - Geometry to fill

Number of points (N) - [number] - The initial number of random points to fill the volume

Use Attractor (UA) - [boolean] - If true, points will be filtered by distance to attractor(s)

Attractor (A) - [geometry] - Any geometry to use as attractor(s)

Magnitude (Ma) - [number] - Magnitude of the random filtering

Number of filtered points (N) - [number] - The number of points to filter

Enable Voronoi (EV) - [boolean] - If true, voronoi cells will be generated (can be very
slow)

Outputs:

Voronoi Lattice (L) - [curves] - List of curves that make up the voronoi lattice

Voronoi Lattice Skin (L) - [curves] - List of curves that make up the voronoi skin

Preview Points (P) - [points] - Preview of points that will make up the voronoi lattice
Clean Up

This group of tools is for clean up of the populated lattice by trimming


to a specific volume and removing unwanted beams.
Trim Lattice

Description:

Trim lattice with a closed volume (mesh or brep). This will trim the lattice curves to within
the boundary of a closed volume.

Inputs:

Geometry (G) - [brep / mesh] - Geometry to trim with (closed brep or mesh)

Lattice (L) - [curves] - Lattice curves to trim

Outputs:

Trimmed Lattice (L) - [curves] - Lattice curves that have been trimmed

Untrimmed Lattice (L) - [curves] - Lattice curves that have not been trimmed (Typically
removes curves with valence 1)
Trim Shell

Description:

Trim shell lattice with a closed volume (mesh or brep). This will trim a shell by
removing the mesh vertices that are outside of the boundary of a closed mesh or
brep. Subdividing the mesh of the shell to add more vertices before trimming will
make a more accurate trim but will take longer.

Inputs:

Lattice (shell) (L(s)) - [mesh] - Lattice shell to trim

Geometry (G) - [brep / mesh] - Geometry to trim with (closed brep or mesh)

Outputs:

Lattice (shell) (L(s)) - [mesh] - Trimmed lattice shell


Remove Floating

Description:

Remove disconnected curves. This will remove curves that have no connections to other
curves. To reduce time, use this tool on only the ‘Trimmed Lattice’ output of the Trim
Lattice tool.

Inputs:

Lattice (L) - [curves] - Lattice curves to filter

Outputs:

Lattice (L) - [curves] - Filtered lattice curves


Remove Short

Description:

Remove curves by length. To reduce time, use this tool on only the ‘Trimmed Lattice’
output of the Trim Lattice tool.

Inputs:

Lattice (L) - [curves] - Lattice curves to filter

Length (N) - [number] - Minimum length of lattice curves

Outputs:

Lattice (L) - [curves] - Filtered lattice curves


Remove by Valence

Description:

Remove curves by number of connections (this can be very slow). If only removing
valence 1, the ‘Untrimmed Lattice’ output of Trim Lattice will have the same result.

Inputs:

Lattice (L) - [curves] - Lattice curves to filter

Valence Number (N) - [number] - Minimum number of connections each curve has

Outputs:

Lattice (L) - [curves] - Filtered lattice curves


Remove Duplicate Curves

Description:

Remove curves that share the same midpoint. This is a simple and fast method of
removing duplicates by searching for common midpoints rather than common endpoints.
Since all lattice curves should connect end-to-end, none should have common midpoints
unless they are duplicates.

Inputs:

Lattice (L) - [curves] - Lattice curves to filter

Outputs:

Lattice (L) - [curves] - Filtered lattice curves


Merge Curves

Description:

Merge endpoints of curves by distance.

Inputs:

Lattice (L) - [curves] - Lattice curves to merge

Max Distance (D) - [number] - Maximum distance to merge

Outputs:

Lattice (L) - [curves] - Merged lattice curves


Modify

This group of tools is for modifying the lattice by connecting exterior


beams to a “skin” or another lattice.
Lattice connections

Description:

Connect two adjascent lattices by adding struts between the closest nodes.

Inputs:

Lattice A (L) - [curves] - First lattice to make connections between

Lattice B (L) - [curves] - Second lattice to make connections between

Number of Connections (N) - [number] - Number of connections to make from each node

Distance (D) - [number] - Maximum distance for each connection

Outputs:

Lattice (L) - [curves] - Lattice connections


Morph Lattice to Skin

Description:

Morph lattice to connect to skin. This will move the nodes of the lattice within a set
distance from the skin to the nearest node of the skin.

Inputs:

Lattice (L) - [curves] - Lattice to morph to skin

Geometry (G) - [geometry] - Geometry to morph to (usually the geometry (mesh or brep)
that makes the skin)

Distance (D) - [number] - Maximum distance from geometry

Geometry (G) - [geometry] - Geometry to morph to (usually the nodes or vertices of the
skin)

Distance (D) - [number] - Maximum distance to morph

Outputs:

Lattice (L) - [curves] - Morphed lattice


Morph Shell to Skin

Description:

Morph shell to connect to skin. This will move vertices of the mesh shell within a
set distance from the skin to the closest point on the skin. Subdividing the mesh of
the shell to add more vertices will have a smoother result but will take longer.

Inputs:

Lattice (shell) (L(s)) - [mesh] - Lattice shell to morph

Geometry (G) - [geometry] - Geometry to morph to

Distance (D) - [number] - Maximum distance from geometry

Outputs:

Lattice (shell) (L(s)) - [mesh] - Morphed lattice shell


Thicken

This group of tools is for applying a thickness value to the lattice


which can be used for simulation or generating a solid mesh for
manufacturing.
Lattice Thickness Value

Description:

Apply thickness values to lattice curves with a point cloud and


corrosponding values. The output will be one value for each curve.

Inputs:

Lattice (L) - [curves] - Lattice to thicken

Points (S) - [point] - List of points (flattened)

Values (Va) - [number] - List of values that correspond to points (flattened)

Distance Influence (DI) - [boolean] - If true the distance between the points
and voxels will affect the magnitude

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Lattice beam thickness (minimum)

Magnitude (max) (Ma(max)) - [number] - Lattice beam thickness


(maximum)

Outputs:

Values (Va) - [number] - List of beam thickness values corresponding to


each lattice curve
Lattice Thickness Attractor

Description:

Apply thickness values to lattice curves with attractor(s). The output will be
one value for each curve.

Inputs:

Lattice (L) - [curves] - Lattice to thicken

Attractor (A) - [geometry] - Any geometry to use as attractor(s)

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Lattice beam thickness (minimum)

Magnitude (max) (Ma(max)) - [number] - Lattice beam thickness (maximum)

Outputs:

Values (Va) - [number] - List of beam thickness values corresponding to


each lattice curve
Shell Thickness Value

Description:

Apply thickness values to shell vertices with a point cloud and corrosponding
values. The output will be one value for each vertice of the mesh (useful for
Weaverbird’s ‘Mesh Thicken’ tool).

Inputs:

Lattice (shell) (L(s)) - [mesh] - Lattice to thicken

Points (S) - [point] - List of points (flattened)

Values (Va) - [number] - List of values that correspond to points (flattened)

Distance Influence (DI) - [boolean] - If true the distance between the points
and voxels will affect the magnitude

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - shell thickness (minimum)

Magnitude (max) (Ma(max)) - [number] - shell thickness (maximum)

Outputs:

Values (Va) - [number] - List of thickness values corresponding to each shell


vertice
Shell Thickness Attractor

Description:

Apply thickness values to shell vertices with attractor(s). The output will be
one value for each vertice of the mesh (useful for Weaverbird’s ‘Mesh
Thicken’ tool).

Inputs:

Lattice (shell) (L(s)) - [mesh] - Lattice to thicken

Attractor (A) - [geometry] - Any geometry to use as attractor(s)

Influence (I) - [number] - Smoothed range of attractor influence (0-1)

Magnitude (min) (Ma(min)) - [number] - Lattice shell thickness (minimum)

Magnitude (max) (Ma(max)) - [number] - Lattice shell thickness (maximum)

Outputs:

Values (Va) - [number] - List of beam thickness values corresponding to each


shell vertice
Examples

The included examples are just a few demonstrations of particular applications, using different modeling
approaches. They also incorporate other powerful plugins available for Grasshopper. To use the full example,
please consider installing the latest versions available:

Kangaroo Physics (by Daniel Piker):


http://www.food4rhino.com/app/kangaroo-physics

“Kangaroo is a Live Physics engine for interactive simulation, form-finding, optimization and constraint solving.”

Weaverbird (by Giulio Piacentino)


http://www.giuliopiacentino.com/weaverbird/

“Weaverbird is a topological modeler that contains many of the known subdivision and transformation operators,
readily usable by designers. Instead of doing the work repeatedly, or sometimes using complicated scripts, this
plug-in reconstructs the shape, subdivides any mesh, even made by polylines, and helps preparing for
fabrication.”

Millipede (by Panagiotis Michalatos):


http://www.grasshopper3d.com/group/millipede?

“Millipede is a structural analysis and optimization component for grasshopper. It allows for very fast linear elastic
analysis of frame and shell elements in 3d, 2d plate elements for in plane forces, and 3d volumetric elements. All
systems can be optimized using built in topology optimization methods and have their results extracted and
visualized in a variety of ways.”

Cocoon (by David Stasiuk):


http://www.bespokegeometry.com/2015/07/22/cocoon/

“Cocoon is a fairly straightforward implementation of the Marching Cubes algorithm for turning iso-surfaces into
polygonal meshes.”

KARAMBA (by karamba):


http://www.food4rhino.com/app/karamba

“Karamba is an interactive, parametric finite element program. It lets you analyze the response of 3-dimensional
beam and shell structures under arbitrary loads.”

Octopus (by Robert Vierlinger):


http://www.food4rhino.com/app/octopus

“Octopus is a plug-in for applying evolutionary principles to parametric design and problem solving. It allows the
search for many goals at once, producing a range of optimized trade-off solutions between the extremes of each
goal.”
Uniform Beams

This example uses the GrabCad GE Bracket Challenge as a design space for a uniform beam-based lattice. The
design space is filled with uniform voxels using the ‘Voxelize’ component. The voxels are filled with the ‘BC’ unit
cell and trimmed to the original design space, keeping only the untrimmed beams. A lattice skin is created with
one of two methods: Rhino’s meshing algorithm or Kangaroo’s ‘Meshmachine’ component. The internal lattice is
then connected to the lattice skin using the ‘Morph Lattice to Skin’ component.

The combined internal lattice and lattice skin are simulated and optimized using Millipede. Using the optimization
data, the lattice is simulated again with varying beam thickness to validate the design.

The final mesh is created using Cocoon.

Plugins used: Crystallon, Kangaroo, Millipede, and Cocoon


Uniform Shells

This example uses the GrabCad GE Bracket Challenge as a design space for a uniform shell-based lattice. The
design space is filled with uniform voxels using the ‘Voxelize’ component. The voxels are filled with the ‘Gyroid’
unit cell and trimmed to the original design space.

The gyroid shell is simulated and optimized using Millipede. Using the optimization data, the lattice is simulated
again with varying shell thickness to validate the design.

The final mesh is created using one of two methods: either Cocoon or the ‘Shell Thickness Value’ component and
Weaverbird’s ‘Mesh Thicken’ component.

Plugins used: Crystallon, Kangaroo, Millipede, Weaverbird and Cocoon


Conformal Shells

This example uses a bent cylindrical shape to demonstrate how to design a reinforcing structure for objects under
pressure. The intial shape is meshed using Kangaroo’s ‘Meshmachine’ component to create a uniform
traingulated mesh which is then simulated with 90psi internal pressure. The resulting deflection data is used to
inform two different approaches.

One method uses the ‘Offset Surface Value’ to create an offset surface based on deflection data. Voxels are
created between the offset surface and the original using the ‘Morph Between Surfaces’ component. The ‘Cubic
Center’ unit cell creates a diagrid fin structure on the surface which reduced overall stress on the surface by 47%.

The other method uses the ‘Mesh Offset’ component to create voxels on the surface which vary in height based
on deflection. The fins are created using the ‘Cubic Face’ unit cell which reduced overall stress by 62%.

The final mesh is created using Cocoon.

Plugins used: Crystallon, Kangaroo, Millipede, Weaverbird and Cocoon.


Conformal Beams

This example creates a shoe insert with varying flexibility based on a pressure map image of a foot. The form of a
shoe last is used to create two surfaces to morph voxels between. Then an ‘Image Sampler’ component of the
pressure map is used to manipulate the ‘Cell Morph Value’ component. Custom unit cells are populated using the
‘Tween Cell Fill’ component. The lattice is then trimmed to the shape of the insole and cleaned up. It is modified to
connect to two mesh surfaces, the ‘solid skin’. using the ‘Morph Lattice to Skin’ component. The lattice and solid
skin are simulated together with forces based on the pressure map image.

The final mesh is created using Cocoon.

Plugins used: Crystallon, Millipede and Cocoon.

You might also like