Volume between two surfaces

I have a 3D printer that builds layer-by-layer. If a model has overhangs, the printer builds a support structure below to hold it up. I want to find the orientation that minimizes the amount of support material required.

I've used Grasshopper to find the projection of the mesh onto the floor plane, and used Galapagos to minimize the area of this shadow. It's my first time using Galapagos, and I'm amazed at its power.

But I don't want to minimize the shadow of the mesh, I want to minimize the volume contained between the shadow and the lower surface of the mesh.

Any elegant ways to do this?

  • up

    David Rutten

    Interesting problem. I can't think of a good solution to this using Solid Booleans. However the following may work as an approximation:

    1. Create a Grid (regular or random, doesn't really matter) of points definitely above your shape.
    2. Create vertical lines from the points in this grid to the projection of those points on the groundplane.
    3. Intersect the shape with the vertical line.
    4. If there are no intersections, disregard the line.
    5. If there are intersections, ignore the topmost segment, then ignore every other segment, starting at the first.
    6. The sum of the length of all remaining segments is an approximation of the volume you're looking for:

    A is the point in the grid, guaranteed to be above the shape.

    B is the point directly underneath A on the ground plane.

    X0..X1..Xn are the intersection points. You're looking to add together the lengths of segments X1-X2, X3-X4, X5-X6, ...., Xn-B

    --

    David Rutten

    david@mcneel.com

    Tirol, Austria

    4
  • up

    martyn hogg

    Are you trying to work this out because support material on reprap style 3d printers is usually not great and you want to minimise how much of the model ends up with the rough and/or distortion effects from the support?

    Grasshopper might actually be a good tool for generating support structures but I don't know how this could be then included in the slicing software that creates the g-code for the printer.

    I experimented a bit with the hexagonal support vs the square grid support and got mixed results... I found best results with the hexagonal support but sometimes it looked like it would work better if I could dynamically change the size, orientation and position of the hexagons to get the best support but minimum effect on the surfaces.

    One day, maybe, there will be a grasshopper 3d printer slicer!

    1