I've tried and tried to 3D print models that I have created, and I need them in .stl format. When modeling in Blender, I change the units in Blender to Imperial - Inches. However, whenever I try exporting it, it becomes super small. I don't even know that checking "Scene Unit" helps. I figured out that if I scaled it by 100, it would appear as corrects scale in Fusion 360, but then I try printing it and it's way bigger than it should be. How can I know for sure that it's gonna print at the right size? Is there a way I can double-check?
2 Answers
By default Blender uses 1 unit = 1 meter even if you change the units in Blender to Imperial - Inches. That change only affects the GUI display, not the internal representation. According to Wikipedia, STL is unitless so use a scale of 39.37 to convert from meters to inches when you export, or tell the program you import into the file is in meters.
Basically, in Blender's Scene tab, set the Unit System to whatever you're comfortable with, choose whatever length you like, but leave "Unit Scale" set to 1.0. This leaves Blender internally using Meters, this is a good thing, because the unit system is a little strange sometimes.
When exporting your STL, set the Transform Scale to 39.37 (to convert meters to inches) and don't bother with "Scene Units" check box, it multiplies by the value in "Unit Scale" which we purposefully left at 1.0.
-
$\begingroup$ I tried this method out, and it looks like it will work. I will find out soon. Thanks! $\endgroup$ Aug 26, 2020 at 3:49
-
I think it depends on what software you are using to print, and how it interprets .stl files. (I don't really have an answer but i hope my example helps and/or gives some insight)
First, if you open a new Blender file and measure the starting cube with the MeasureIt add-on it is 2 x 2 x 2 meters. If you set MeasureIt to Imperial Units, MeasureIt will no longer indicate 2 meters but (for instance) 6.56 ft. If you set Blenders Unit System (under Properties > Scene Properties > Units) to Imperial, only the grid in the 3d Viewport will change. So the geometry of you model does not change or scale. Using either metric or Imperial in Blender, or switching between them, does not matter.
Secondly: I regularly covert .step files or part files from NX or Solidworks to .stl and import them into Blender. In order to get the right scale in Blender I set the Scale (when selecting the file in Blender) to 0.001.
So if I export the 2x2x2m cube from the Blender start file to one of these programs, I set the scale (when selecting the file in Blender) to 1000. If I do this the measurement tool in the engineering program (i.e. Solidworks) gives the same value for the size of the cube, which is 2x2x2m.
I would have advised you to do the same, but since you stated that a scale of 100 already yielded a result that was to big, I'm afraid you have to figure out (or try to look up) the conversion ratio between Blender and the specific program you use to print.
-
$\begingroup$ If you're using 0.001 and 1000 to go to and from Solidworks, I would assume Solidworks defaults to millimeters? $\endgroup$ Aug 26, 2020 at 0:53
-
$\begingroup$ I would say that an arbitrary distance between two points (two sets of coordinates in virtual 3D space) is (always) given a 1000 times higher value (in terms of units of distance) by Solidworks than it is by Blender. In other words: the coordinates (in the .stl file) are the same but Blender says (for instance) the distance between them is 2m and Solidworks says it's 2000m. $\endgroup$ Aug 26, 2020 at 1:23
-
$\begingroup$ Nearly all slicers default to millimeters. The STL file format does not contain provisions for storing units so you have to set the size in the modeling program $\endgroup$– JaySep 27, 2020 at 0:02