algorithmic modeling for Rhino



Exoskeleton is a free plug-in for creating meshes. It is currently comprised of two components: Exo Wireframe and Cytoskeleton.

  • Exo Wireframe thickens line/node into watertight meshes. It solves the nodes using a convex hull and stitches the hulls together with polygonal struts.
  • Cytoskeleton thickens the edge network of any existing mesh into a thickened mesh. The topology of the base mesh enables the production of a clean quad meshes whose vertices are all of even valence. Because It uses the half-edge mesh library developed by Daniel Piker and Will Pearson, it also requires the installation of the Plankton dll's and gha.

Exoskeleton remains a work in progress, and as bugs are fixed and new components and features introduced, updates will be placed here. Furthermore, Exoskeleton is an open-source library.

Download the most recent version here:

This has been updated to also include Plankton version 0.3.4

This library is distributed under the terms of the GNU Lesser General Public License (LGPL).

(The source is available on GitHub here)

Please use this discussion forum to post questions, describe issues, and provide feedback (and examples!).

Copyright 2014 Daniel Piker and David Stasiuk

Thanks to Will Pearson, for his work on Plankton and who also has given some invaluable contributions to Exoskeleton in terms of project organisation. Thanks also to Giulio Piacentino for Weaverbird, and for general knowledge and support, and Mateusz Zwierzycki for the same, as well as for sharing his code for convex hulls, which although not used explicitly here, was very helpful in many regards for the development of Exoskeleton.

Members: 437
Latest Activity: yesterday

Discussion Forum

Thickness gradation

Hi, I'm pretty much a noob to Grasshopper and for product design project, i made this wireframe generator and I'm having hard time to manage the thickness of the exoskeleton:I want it ti be thick at…Continue

Started by RIPON anton Oct 28, 2021.

Exoskeleton meshes not joining??

Hi,I have just started using Grasshopper for university so please excuse my ignorance.I am trying to use Exoskeleton to thicken lines to use in an architectural rendering.  My first few attempts did…Continue

Started by Deanne Neilson Sep 10, 2018.

Can't get Cytoskeleton to load.

Rhino 6.I have Plankton v0.4.2 from (I also tried Plankton v0.3.0). Using…Continue

Started by Mike May 15, 2018.

Problem Using ExoW

Hey Guys,I am having a problem when joining two wireframes into one Exoskeleton Mesh. As you can see in the Pic#1 I was able to thicken the wireframe while having a problem after mirroring the…Continue

Started by Xiaojiao Xu Apr 16, 2018.

Comment Wall


You need to be a member of Exoskeleton to add comments!

Comment by Nick Tyrer on May 14, 2014 at 3:12am

To be honest, i like the current method of showing which lines cause a problem, maybe including indices of offenders would also help.

But if there is some kind of method that deviates from original line geometry then it should be an opt-in action. Like using 'topologizer', maybe a toggle

1. standard

2. remove offending strut

3. collapse points for supernode

Comment by Tudor Cosmatu on May 14, 2014 at 2:36am

Hi Dave,

The super node was where i was hinting at indeed. I was actually suggesting to get the midpoint of those struts which length deviates from the average length of the struts with a certain degree or maybe a more relyable logic for designating the struts which could result in an error, and treat those as 'simple' or 'super' nodes.

Comment by Aidan K on May 13, 2014 at 5:40pm

Hi David,

I'm super impressed with the new release, huge thanks to you and daniel for making this work public (and open-source!). This is awesome.

Comment by Josh Draper on May 13, 2014 at 4:00pm

I'm getting "object reference not set to an instance of an object" when using Exoskeleton 2 on a molecular bond model. None of the curves seem to be at too close an angle. I did a quick test on a triangle to see what kind of close angle might cause a problem.

I was able to make it work with angles smaller than 4 degrees. I'm also finding that if you have very close angles, you need very small radii values to make it work. When I started small like this I stopped getting the "object reference" error.

However, if you increase the radii values you tend to get the error "One or more struts is engulfed by its nodes"

Comment by David Stasiuk on May 13, 2014 at 2:17pm

Hi Harrison-

Yes it can find a more detailed explanation of the features here:

One other issue that has come to my attention is if two struts are at too close an angle to each other, the component may return an "object reference not set to an instance of an object" error. I will try to include a test for this in an upcoming release.


I'm not sure if I know what you mean exactly, but I am open to treating engulfed struts differently. One approach I had thought of would be to simply extract offending struts from the solution and give the component a warning message that would show the indices of the failing elements. Another, more complex approach, would be to collapse the ends of offending struts into a "super node"...but this would make the component run quite a bit heavier, particularly if there were several failures in a try, and one fix could cause another failure, etc.

Comment by h on May 13, 2014 at 11:30am

Does this new version fix the bug which results in (seemingly) random mesh vertices to be placed at the origin (i.e., [0,0,0])?

Comment by Tudor Cosmatu on May 13, 2014 at 5:52am

Just thinking out loud here,

could it for example treat an engulfed line as if it would be an endpoint, so for example take its midpoint instead of the line? Not quie sure if it makes sense. Other then that seems to work just fine!

Thanks again!


Members (437)






  • Add Photos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service