I have been doing computer modeling of some sort since around 1989. I’m not great at it; my task was generally making software that real modelers would use.
The software I worked on was BRL-CAD. BRL-CAD is a true solid modeling system. It is based on Combinatorial Solid Geometry (CSG). That is to say, you create solids and then use Boolean logic to get the shape you want.
What this means, in practical terms, is that you represent a sphere with a vector and a scalar. The first is the point in 3 space where the center of the sphere is located, and the other is the radius of the sphere.
The way we viewed the geometry was wireframe for modeling and then ray tracing for 3D rendering.
And we did astonishing things with this software. The visuals were often not the point of the model; often it was analysis of the model. For example, we had code that could be used to analyze the penetration mechanics of one solid impacting another solid, a target.
When we needed to move to the modern graphics processors, we needed a method of converting our solid models into triangles. We used non-manifold geometry instead of the industry standard of winged edges, thanks to some cutting edge research out of Australia.
That’s just backstory; sorry for the interruption.
Here is a case I’m designing for a Banana Pi BPI-M2 board that is running my NTP service.

This doesn’t have any of the cutouts required for the ports, but it is a good generic case. I’ll be adding design parameters for putting in posts for the board and other needed options for the case.
The basic design is parameterized. Which is to say, I have a spreadsheet that has values for width, length, height, shell thickness, and clearances.
The wedges for the snap fit are also derived from those values. It looks good.
Until I started to do the math.
I know what an inch is. I even have a good idea of what a 1/16th of an inch is. And because I’ve been playing with it, I know that 0.062 inches is close to 1/16th of an inch.
I have a feel for all of that.
What is a millimeter, though?
Well, that turns out to be 0.039 inches. Closer to 1/32nd than to 1/16. That’s small.
0.5 mm is 0.0196 inches. This is even smaller. While I strive to hit my tolerances within a few thousandths, and when I’m dialing something in, I’ll always get to a thousandth or less, those are small numbers.
And here is where I started to realize that I was making design mistakes. I had set my shell thickness to 1.5 mm with a clearance of 0.5 mm.
I got the 0.5 mm clearance from several sources talking about 3D printing snap-together cases. When I set the lip to be half the shell thickness, I got a 0.75 mm wide lip. That looked great. Then I remembered the clearance requirements and added allowance for that.
This meant that my lip was only 0.25 mm thick, or 0.0098 inches. That’s not a feature; that’s a burr.
In addition, the nozzle I’ll be using is 0.4 mm in diameter. The smallest feature I can print will be 0.4 mm or larger. I would have to use a different nozzle to get that level of detail.
The image you see above had the shell thickness set to 3 mm. I still want to do the lip, I’ll do a few test prints to dial it in.
There is this place where the mathematically perfect collides with physics, which collides with engineering, which is firmly entrenched in the real world.
The real world always wins.

