Part RefineShape

From FreeCAD Documentation

Part RefineShape

Menu location
Part → Create a copy → Refine Shape
Default shortcut
Introduced in version
See also
Part SimpleCopy, Part TransformedCopy, Part ElementCopy, OpenSCAD RefineShapeFeature


The Part RefineShape produces a non-parametric copy with a refined shape, that is, with certain edges and faces cleaned up.

After certain boolean operations, like Part Fuse, some lines from the previous shapes may remain visible. This tool produces a copy of that boolean result, and cleans up those seams.

Alternatively, to produce other non-parametric copies use Simple Copy, Transformed Copy, and Element Copy

Original boolean result with 11 faces (left), and refined shape copy with 7 faces (right).


  1. Select an object that you wish to clean and copy.
  2. Go to the menu Part → Create a copy → Refine shape.
  3. A cleaned, independent copy of the original object is created; the original object is hidden.

As of version 0.19 and above the result defaults to a parametric (linked) copy.

This behavior can be changed in the Parameter editor:

  1. Go to the subgroup: BaseApp/Preferences/Mod/Part
  2. Change ParametricRefine of type Boolean to false to get the old behavior (independent copy).

See other parameters in Fine-tuning.


  • This function can be used as the last step in the modelling work to clean up shapes in a traditional constructive solid geometry workflow.
  • This function may help to clean up the model before applying another feature, such as a Fillet.
  • This clean up may stop 3D printers from printing unwanted edges once the solid model is exported to a mesh format.
  • This function can also be used after converting a mesh to a shape (ShapeFromMesh) to clean up the residual edges on flat faces.
  • Some interesting information about what is happening with placement and how to access by Python can be found in this forum post.


  • The refinement algorithm only works on shells. Therefore it iterates over the shells of the input shape and then for each shell it creates a new shell with joined faces wherever possible. This means that if your input shape is only a face, wire, edge or vertex then the algorithm does nothing.
  • Unlike the OpenSCAD RefineShapeFeature command, Part RefineShape won't update when the preceding shapes are changed.


The Python command for refining a shape is the following: