algorithmic modeling for Rhino

The first beta of a Grasshopper plug-in version is now included in the StructDrawRhino tool.

Initial components to sweep profiles on curves, generate geodesic domes, fillet curve networks or polygons and some easy to use force density routines to relax meshes are included.

There are many other ideas and suggestions under development (let me know if you have any requests).  There is also progressed development of generating structural models (for analysis or exchange in formats such as SDNF).  But the use of these tools is not restricted to structure.

The plug-in is included in the installer for StructDrawRhino which can be downloaded from , and you can find examples using these components at

Don't hesitate to get in touch if you wish to learn more.



Views: 18688

Replies to This Discussion

nice !!
Cool... just want more time (24h not enough)

Thanks for more and more tools...
THX Jon!!
Great tools. Thank you Jon.
Hi Jon, if I combine sdrGeoDome with sdrNetworkFillet not all cells are filled. Is there a way go get a fillet in every cell?

Nice test case, and I'll take a look to get it working.

The reason it isn't yet, is because it fits a plane to the curves to work out the orientation or ordering of the curves. I can always sort them locally rather than use a global plane, and it will work just fine. I'll let you know when I've implemented the fix.

Thanks to everyone else for their encouragement and positive feedback. I look forward to seeing what can be produced from the tools.


I really like the 'Repeal Mesh Vertics' command. Can you please explain the options like 'Freedom' and 'Resolver'?

Hi Wieland, nice images again.

If you refer to my blog post, I originally wrote this command as a means of calculating a balanced mesh state for a diagrid such as the British Museum Great Court Roof. In this example, Chris Williams had determined his surface profile, but to get the mesmerising curves of the members, he relaxed the mesh but restrained it to the surface profile. I added an option to that routine to nominate a surface.

If the mesh is not planar, the force density of the vectors will pull the node out of plane. I know the soap film form finder in Oasys GSA has the ability to restrain the movement of the nodes within a local plane, so they basically glide over the starting mesh surface. The routine calculates a vertex plane (fit from the neighbouring mesh vertex but passing through the active vertex) and restricts the movement in plane when calculating the updated position. This means it effectively reduces the out of plane movement in each iteration. The option isn't particularly well named vertLocalPlane, but it is short for VertexLocalPlane (I'll rename it for two characters). If you try running the Great Court Roof without a restraining surface, you'll see with the VertexLocalPlane it will gradually lose it's shape. If you have the Freedom option, it will pull down into a linear sweep quite quickly. Does that make sense?

The Resolve option dictates the priority. The routine tries to balance the forces along each mesh edge. For a node with unbalanced edges, you might have one longer edge, and multiple short edges balancing the force on the opposite side. If you are after equal length mesh edges, it will use a factored force dependent on length to try and achieve more equal edge lengths.

Happy to explain further if this isn't clear.


I just uploaded a new version that enables you to generate curve network fillets for closed curve arrangements. If the surface overlaps itself relative to the bounding box centroid, it might have problems, but it will work for the Geodesic dome. I haven't had time to determine a technique for automatically deciding if a curve network is closed or not (if anyone knows one and is happy to share, I'd be grateful), so for the time being you have to alter the boolean input to inform the algorithm. Note you will have to replace existing components on your definition canvas to see the boolean input to define if there is a perimeter or not.

I'm looking at immediate and short term improvements for the min-shape mesh files in the next day or two.


Looking great! Thanks for this Jon.
Could you explain what inputs are needed for the buckyball geodesic dome ? Everything I tried so far gives the error "The type intializer for 'b3' threw an exception"
Did you try the example at ? I'm also sending you an email.
Hey Jon, very nice. Congratulations.

I gave it a quick try this morning, and was not able to sweep a profile along a line, kept getting 'null' breps all the time, no matter the index I chose. I'll check this tut you just posted.






  • Add Photos
  • View All


  • Add Videos
  • View All

© 2023   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service