Hello everyone,
this is my first post here and I am quite new to Rhino / Grasshopper. I have hit a wall with my problem and do not know where to further look to solve it as I am missing a good overview of all features in Grasshopper. In essence I am asking for a way to do things the best way that will give me the least headaches down the road. This post is quite long as I try to explain where I am right now. So please bear with me.
I am designing lightweight structural parts that will in part be 3D printed. To achieve maximum stiffness per weight I use internal lattices (via Crystallon) and surface patterns such as IsoGrids (basically equilateral triangles). Those will be created in Grasshopper, while the geometry (BReps) is created in external CAD tools for now. This means I don’t have absolute control over the created surfaces as I would have in Rhino.
The surface patterns and how to connect them to the lattice are giving me trouble. When created they should achieve the following:
- conform to the given geometry (either precisely or to a given tolerance)
- span seamlessly over the whole BRep or polysurface and not just a single surface
- deform the pattern minimally
- create a continuous pattern
- be able to move pattern on surface (to conform to hard edges or similar important geometry)
I have come up with a few methods. To better show their effect I am using a mockup of a bicycle fork, especially the left blade.
1. Contours
Using contours in Grasshopper that dissect the entire BRep into curves that always intersect at an 60° angle yields the IsoGrid pattern. But it isn’t continuous (the contour “rings” end with no further connection (the pattern is not closed) e.g. on the fork blade) and can get warped beyond recognition.
2. Surface Morph
Using Surface Morph I can morph a 3D pattern onto a surface. This works fine for a single surface. I could repeat this for all other surfaces, but the IsoGrid would not merge precisely at the surface seams (at least not without rebuilding all surfaces to have the UV count I guess). The pattern looks good and I can directly define the strut geometry before morphing. But I do get non-manifold-edges in the resulting BRep and can’t select where the pattern should start on the surface (although those problems could be fixed I guess). This approach seems viable to me if surfaces do not need a continuous pattern (e.g. blade and shaft are connected by the crown, which is too small for a printable IsoGrid and thus will be made solid, which enables blade and shaft to have independent patterns).
3. Meshing
Kangaroo’s MeshMashine tries to produce equilateral triangles over the BRep surface. If I could map the created mesh edges to follow the shape of the BRep, this could be a viable solution. It also seems to me that very coarse meshes can’t be generated.
Spiral Curves
I like the approach of #2. The pattern could be created directly on the surface (maybe spanning even multiple surfaces?) by two spiral curves with opposite turn direction that are then repeated and offset in z direction and additional vertical curves. Could this be a feasible solution?
Connecting Lattice and IsoGrid
To thicken wireframe lattices I use Dendro (Mesh / Cuves -> Voxel -> Mesh) and CytoSkeleton (Curves -> Mesh). To create the final part I need to connect multiple lattice / skin components together. Doing this with Dendro in the voxel stage is quite easy. Although I think using meshes directly would produce more accurate results (and smaller meshes!) as there would be one less conversion between formats. I don’t know if it is possible to connect touching meshes together, though.
To break this whole thing down into a single question: What approach would you take given the listed requirements?
I hope I made myself clear and would like to thank you for reading through all of this.
Kind regards,
Mo.
contours.gh (116.6 KB)
surfacemorph.gh (118.4 KB)