2
$\begingroup$

I've been trying to learn Blender as an additional tool for 3D printing (to prepare more organic or freeform models that don't lend themselves to a CAD style workflow I'm more used to), and one point of confusion I've hit is that Blender's default unit is meters, not millimeters. Apparently in older versions its default was an abstract unspecified "units" with metric-like base-10 grid, but no inherent association to physical scale, but now the default is "metric" with meters as the unit. I've found some tutorials such as this one for switching to millimeters, but it requires making a number of changes that I'm not sure are in line with what folks consider "best practices" for "modeling for 3D printing with Blender".

Is there any consensus on the right way to do this? Are there reasons I should prefer to switch back to the abstract "units", and just treat them as millimeters, versus using "metric" but switching the base unit to "0.0001" (maybe numerical precision reasons?).

I know this question is only borderline on-topic, but I think it is relevant as I'm looking for what the prevailing practice in communities using Blender as a tool for 3D printing, not for opinions of a larger Blender community.

$\endgroup$
5
  • $\begingroup$ Coming from a graphic design background, I've always been of the mindset of starting with whatever units your output will be. If you start with something different then you will have to do some kind of scaling or conversion that could potentially effect the design. $\endgroup$
    – agarza
    Commented Mar 26, 2022 at 15:10
  • $\begingroup$ @agarza: Well yeah, I want to design in terms of mm. The question is just what the best way to do this with Blender is. Whether to use "unspecified units" and treat them as mm, or leave it in metric mode where the default unit is an unweildy meters, but then work in 0.001 of that. $\endgroup$ Commented Mar 26, 2022 at 15:54
  • 1
    $\begingroup$ Consider also to make use of the 3D features in the newer versions of Blender, especially those related to manifold checking, intersecting planes/edges. Some model makers are creating for visual intent, while constructing non-printable designs. The results can be impossible to correct by non-blender users. $\endgroup$
    – fred_dot_u
    Commented Mar 26, 2022 at 20:18
  • $\begingroup$ @fred_dot_u: I actually do wonder what features Blender has for that, especially for repairing models obtained from other sources that have problems. But that's a different question. $\endgroup$ Commented Mar 26, 2022 at 20:52
  • $\begingroup$ Even very old versions of blender have repair options for finding and fixing holes in non-manifold surfaces. $\endgroup$
    – user10489
    Commented Mar 30, 2022 at 11:29

3 Answers 3

3
$\begingroup$

Make sure to set the scale properly for your use case!

In CAD, you define your measurement space in either Inch or in Millimeter units, and that is your grid. In blender, the native unit is the meter.

This can be easily converted in exporting (remember to set it to scale!), but it is best to just set the measurement scale to actually match what you design: if you want to design a 5 mm hole, set your scale to Millimeters and make sure you export in millimeters. If you want to design in meters (maybe you design a building), then work in meters, and set your export scale in the end so that 1 meter actually is represented as 1 meter - or rather as 1000 millimeters.

The STL in the end will not know the difference: it all is defined in scales of unitary units, and it doesn't even know if it was originally designed in meters, inch or angström. The typical slicer expects the unit to be either millimeters or inch, so any scaling of the exported model that does not result in units equivalent to 1 mm or 24.5 mm is bad procedure - converting between these two types is just scaling the model by 2450%.

Make sure to design closed manifolds made up of triangles!

When working with blender, it is very easy to leave the item in a shape that contains multiple intersecting, non-manifold surfaces and areas of inverted surfaces. While interecting shells is not a problem (the slicers can handle those by unionizing the item), the intersection usually covers up the non-manifold areas, making them hard to spot.

As a result, before finalizing your project, I suggest follow this procedure:

  • In Blender, turn on the visual for the normals of surfaces. If an area does not look like a hedgehog after that, the normals in that area are reversed and you need to flip the surfaces there or re-mesh it.
  • Triangulate the surface using the triangulate modifier. This is to spot artifacts from conversion to STL early and be able to fix them: STL only knows triangles, while blender knows bent n-gons.
  • Add a new object. A cube with side length 1.
  • Do a test export to STL with scale 1, which also contains the 1-unit cube as an extra shell.
  • Import the model into a software such as meshmixer, that has a command to separate shells.
  • Separate the item to all shells. In Meshmixer this is in analyze, separate shells.
  • After separating the shells, measure your 1-unit cube. If it is not 1 mm, calculate your scaling factor. It should be a multiple of 10.
  • Next, you should check each shell for gaps or other errors. In meshmixer, the automatic analyze feature points to these areas with red, blue and magenta lines.
  • Fix the marked errors in blender, then return to the test export. This time use the proper scaling factor. Repeat until no errors remain.
$\endgroup$
0
$\begingroup$

Being realistic, you only need to make sure that your on screen measurements and your export units are set correctly. That way whatever size you set on screen will be reflected in your print.

For example, I use the MeasureIt plugin to tell me the size on screen, and I set the scale to 0.004 and the units to MM, and when I export to an STL file I set the size to 4. That way Cura Slicer always prints to the exact right size.

You can use whatever scale you want so long as you use the equivalent when you export it. I just use this scale because it's the one used when exporting between Hexagon and DAZ Studio, so I did it as a force of habit.

$\endgroup$
-1
$\begingroup$

It doesn't matter, you scale it in the slicer or elsewhere. You're not going to slice the STL file in Blender. You'll probably need to do more work to get things print ready outside blender anyway.

So when I use blender I don't even bother checking what units it's using. I don't use it for parts design or tech drawing.

$\endgroup$
6
  • 2
    $\begingroup$ "You're going to scale it in the slicer" is not reasonable. Especially parts that have real world function and are designed to interface with other things in the real world should have a correct design size where the unit in the STL is assumed to be millimeters. Model sharing sites where the majority of users get this wrong (and get the axes wrong, etc.) are widely derided as low quality, and rightfully so. $\endgroup$ Commented Mar 29, 2022 at 14:58
  • $\begingroup$ @R..GitHubSTOPHELPINGICE obviously you wouldn't then. But organic stuff that isn't a part (as I said in my answer) doesn't matter. I do it all the time. $\endgroup$
    – Kilisi
    Commented Mar 29, 2022 at 16:02
  • 1
    $\begingroup$ Even if the model is organic and intended to be printable at variable sizes, if the units are wrong such that the object is 10 times larger than a typical bed, or smaller than the nozzle, shipping it like that is at best "unfriendly". $\endgroup$ Commented Mar 30, 2022 at 0:59
  • $\begingroup$ Anyone shipping an STL straight from blender of any complexity is asking for trouble. Scale is probably the least of the worries $\endgroup$
    – Kilisi
    Commented Mar 30, 2022 at 11:59
  • $\begingroup$ I didn't come here to argue with you. I came here to ask about best practices for doing something right not an argument that doing things right is pointless. $\endgroup$ Commented Mar 30, 2022 at 12:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .