I have an object which is to be 3D printed. This object will then be assembled with other objects. However, due to the 3D printer being not very exact, I need to add a small tolerance to the object (i.e. make the object a bit thinner) so it will fit with the other objects. I would also like the base of the object to be slightly thinner than the middle and top, to offset the object being fatter at the base where the first few layers are printed.

Here is a screenshot of the object:


Specifically, I would like to move all horizontal edges at the top of the object slightly "inward" on the XY-plane by a constant amount, and move all horizontal edges at the bottom in a similar way by another (larger) constant amount, while preserving the height of the object on the Z-axis. All edges that are currently parallel to each other should remain so.

The effect would be that all points inside the modified object are also inside the original object, and the hole in the middle becomes slightly larger.

Note: The Alt-S command does something similar to what I want, but it doesn't seem to allow me to lock the Z-coordinates. I do not want the height to decrease.

EDIT: Here is my .blend file.

  • $\begingroup$ To lock the "Z" axis choose only the "X" & "Y" axis. For example if you are scaling press "S" then press SHIFT + "X" & "Y" this will constrain the action to the x and y axis. $\endgroup$ – Dontwalk Apr 18 '17 at 13:58
  • 1
    $\begingroup$ @Dontwalk Shift+X does not work for the Alt+S (Shrink/Fatten) command. $\endgroup$ – Bernard Apr 18 '17 at 15:01
  • $\begingroup$ As a workaround, I did something like "Loop Cut and Slide" to create rings around my object, and slide one ring to almost the top and one ring to almost the bottom. Then, use the Shrink/Fatten tool on the bottom-most set of side faces to shrink them to size. I needed to press the "Alt" key while doing the shrinking to preserve parallel lines (as stated in my question). $\endgroup$ – Bernard Apr 18 '17 at 15:51
  • $\begingroup$ Can you provide the .blend so I could try doing what you described? $\endgroup$ – Tooniis Apr 18 '17 at 16:47
  • $\begingroup$ @Tooniis I have added a link to the .blend file in the question. $\endgroup$ – Bernard Apr 19 '17 at 3:27

Here's how I did it (and I think this is the cleanest method):

0. Original object

Image 0.1

1. Loop cut the original object twice

As the object has a hole, the Loop Cut and Slide (Ctrl+R) tool doesn't loop cut both the internal and external sides together. A better way is to use the Extrude Region (E) tool.

Rotate view totally horizontal, and with the face select mode enabled, select all the bottom faces:

Image 1.1

Use the Extrude Region tool to extrude the bottom faces by 1 mm (this will be the height of the bevel at the bottom). Use the Extrude Region tool again to extrude by another 1 mm (this value is arbitrary, and will be removed later):

Image 1.2

2. Reduce the thickness of the object

Select all the side faces:

Image 2.1

Using the Shrink/Fatten (Alt+S) tool, shrink the object by 0.2 mm (this is the tolerance of the object). Hold down the Alt key while pressing the Enter key to enable the Even Thickness option. This is the result:

Image 2.2

3. Make the bevel at the bottom

Select the side faces nearest to the bottom of the object:

Image 3.1

Use the Shrink/Fatten (Alt+S) tool to shrink the faces by 1 mm (the width of the bevel). Again, hold down the Alt key while pressing the Enter key to enable the Even Thickness option. This is the result:

Image 3.2

4. Remove the the part of the object below the bevel

Select the bottom faces:

Image 4.1

Translate the faces upwards by the arbitrary amount chosen in Step 1 (in this case, it is 1 mm):

Image 4.2

Switch to vertex mode, and re-select all the bottom vertices:

Image 4.3

Use the remove doubles tool to remove the double vertices:

Image 4.4

5. Reduce the extra height from the bevel

Select the vertices at the bottom two layers (encompassing the whole bevel region):

Image 5.1

Translate the vertices upward by the height of the bevel (1 mm in this case):

Image 5.2


Image 6


I hope that this is the answer you are looking for:

Reducing the thickness of the object

  1. Activate Length under Edge Info in the right 3D view menu

  1. Measure the height of your object. In this case it is 4mm.

  1. Select the whole model and use ALT+S with Length in Edge Info activated so you can shrink it to your desired thickness, and do not worry about it shrinking in the Z axis as we will fix it in the next steps (that's why we measured the height of the object).

  2. Measure the height after shrinking (you can do this in the next step so it is not very important). In this case it is 3.285mm.

  1. Select all of the upper faces and press G then Z to constrain the movement to the Z axis only. Now in order to know how much you will have to move the upper faces, you have to subtract the height after shrinking from the original height. In this case it will be 4.000-3.285=0.715 Now type the value you got, press ENTER, and its height will return back to original (4mm in ths case).

Here is the final result:

Making a bevel in the base

Using the bevel tool (CTRL+B) results in this big mess, so we are not going to use it.

I found these vertices that were not in the place they are supposed to be in. That was probably caused by the Shrink/Fatten tool (ALT+S), so I copied the X and Z position of the vertices behind them and pasted them into the location fields (in the right 3D view menu) of those vertices.

  1. Loop cut the whole object as shown below:

  1. Move the loop cut you made using G then Z to the height of the base layer, or the height of the last layer that you want to get affected (depends on the layer height you choose in your slicer software). I moved it -1mm for demonstration.

  1. Select all bottom faces, then use the Shrink/Fatten tool to reduce their thickness, which will result in a nice clean bevel.

And here is the final result:

enter image description here

Here is the modified version of your .blend

  • 1
    $\begingroup$ This somewhat works, but some the lines that were originally parallel are now not parallel. The error is minor, but my method still seems cleaner. I'll probably write about my method in detail later. $\endgroup$ – Bernard Apr 19 '17 at 13:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.