Scale, preparing for 3D print - rhino, grasshopper

Hi, I need help with scaling down my model (from cm to mm)
and prepare it to 3d printing since I don’t have any experience with it. Thanks in advance! It needs to be around 10 cm tall.
smalllamp.3dm (6.4 MB) (12.9 KB)

(upload:// (12.9 KB)
d://q8vMMRRmRwtxI6tWwBNZDqzcTAY.3dm) (1.6 MB)

and it should be around 10 cm tall, thank you!


Why use Grasshopper for this? In Rhino, go to ‘View | Display Options… | Units’:

Select ‘Millimeters’ and click OK to get this prompt:
Click ‘No’.

So you want to thicken these shapes? Or cap their ends to make them solids?

P.S. (6.4 KB)

It all depends on what you mean by “scale”. If you want to scale all dimensions of an object before printing the easiest way to do that is to use the slicer’s scale function. That lets you scale any combination of X, Y,and Z by any amount you like.

The lamp shape you made is just a surface - it has no thickness. You can’t print something that has no thickness; consequently when you slice your lamp shape you’ll get a solid object that has a top and bottom surface. What I’d do in your case is the following:

  1. Center the lamp shape on the origin (it’s always best to build geometry for 3D printing at the origin.)
  2. Use ScaleNU to scale the surface to maybe 95%. This will give you an inside surface that is a few mm away from the original shape.
  3. Use BrepEdges to get the top and bottom edges of each surface
  4. Use Ruled Surface to make a ruled surface from the top 2 and bottom 2 edge curves. You will now have 4 surfaes.
  5. Use Brep Join to join all 4 surfaces into a single Brep. It should be a Closed Brep - Open Breps result in errors when you export the shape as an STL file.
  6. Export the closed Brep as an STL file and load that into your slicer program. Then you can use the slicer’s scaling function to scale it any way you want.

Note, however, that the devil is in the details. If you scale your STL file by 25% in all directions it will get 25% smaller. But that means the walls will get 25% thinner too, which may not be what you want. What that means is if you want to maintain the same wall thickness, but have the whole thing 25% smaller, you will have to re-do the model in Rhino to be that size and thickness.

So does Scale NU. The problems with scaling as opposed to Offset Surface are:

  • Thickness will vary depending on the shape of the surface.
  • You are approximating a thickness with scale factor instead of using a specific value.

On the other hand, the problems with Offset Surface are:

  • It works only on surfaces, not polysurfaces. (not a problem in this case)
  • The top and bottom edges are not guaranteed to be co-planar with the original shape. This is why I used Loft instead of Boundary Surface to make top and bottom surfaces.

P.S. This example demonstrates the issue. The ends are “thicker” than at the top and bottom:

smalllamppattern.3dm (4.1 MB)
Thank you, yess something like this, however I lofted the curves with the grasshopper file attached so it also has a pattern and a thickness already but somehow it doesn’t work, I resend the things now. Maybe it makes more sense like this. (12.9 KB)

Thank you so much!

I guess you don’t understand that without your plugins, there is very little of your file that works for me.

Did what I posted work for you? Do you have questions about it?

P.S. This is what works from your GH file (purple group) copy/pasted into my GH file: (15.4 KB)

You can if you use ‘vase mode’ in your slicer, and it’s the quickest way to print objects like this!

Agreed, but…vase mode produces a surface that is one layer thick. That’s pretty flimsy in the real world.

Since slicing an .stl produces closed polylines, and polylines are relatively easy to offset successfully, it’s not to hard to imagine that the slicers nowadays can produce an object with a wall thickness from an .stl that has none.

Here’s a little quickie that shows the difference between Scale and Offset.
To quote an old comic strip character: “You pays your money and takes your choice.” (7.0 KB)