Exporting accurate print meshes from FreeCAD: tessellation tolerance versus file size

FreeCAD’s “Create mesh from shape” command turns a shape into a non-parametric mesh object. The documentation describes surface deviation, angular deviation, and relative mode; FreeCAD 1.1.3 source code shows how the task-panel angle is passed to the API. This page explains those settings and offers a blank grid for comparing exports on your model, without recommending a universal value or claiming that a test was performed here.

The short answer

FreeCAD’s mesh-from-shape command creates a non-parametric mesh object. For the Standard mesher, the documentation defines surface deviation as a linear deviation and angular deviation as an angle; relative mode multiplies the first value by the current segment length. In FreeCAD 1.1.3, source code converts the task-panel angle to radians before the API call. Compare settings on your model and record file size; the sources prescribe no print setting.

What surface deviation and angular deviation actually control

The Mesh workbench’s “Create mesh from shape” command creates a non-parametric mesh object from a shape object. The documentation says it can be used on any object that has a shape, including PartDesign objects. The Tessellation panel provides a tab for each mesher. The definitions below concern Standard mesher settings, not a printer tolerance.

Surface deviation is the maximum linear deviation of a mesh section from the object surface. Angular deviation is the maximum angular deviation from one mesh section to the next and is used when meshing curved surfaces. These criteria describe tessellation, not the dimensions of a printed part.

The settings describe different criteria, and the documentation does not say that one compensates for the other. For a given model, compare the meshes and inspect the areas that matter to your design. The FreeCAD for 3D printing page covers the software; this page stays with tessellation.

Relative mode changes what the number means

When “Relative surface deviation” is checked, a mesh segment’s maximum linear deviation is the surface-deviation value multiplied by that segment’s length. The entered value therefore acts relative to the segment rather than as the same distance for every segment. In non-relative mode, the option does not apply that factor. Check the checkbox state before comparing exports.

The documentation defines the relative calculation; it does not recommend relative mode for broad faces, miniatures, or mating parts. Choose cases to compare for your model and record whether the box is checked. A blank grid can log settings and file size without presenting results as universal values.

In FreeCAD 1.1.3’s Tessellation.cpp, LinearDeflection, AngularDeflection, and RelativeLinearDeflection are read from and saved to the Mesh Standard preferences. The code therefore shows they can persist between sessions in this version. It does not prove that a changed setting caused a file-size difference in another project.

Degrees on screen, radians in the script

In FreeCAD 1.1.3’s GUI code, the angular-deviation field value is converted to radians before forming the meshFromShape call. This matters if you reproduce the setting through the API: do not assume its expected unit matches the panel display. The repository explicitly shows these two steps for version 1.1.3.

FreeCAD 1.1.3’s AppMeshPartPy.cpp documents a meshFromShape signature with Shape, LinearDeflection, AngularDeflection, Relative, Segments, and GroupColors; that signature gives AngularDeflection=0.5 and Relative=False by default. If you use another signature or version, check the corresponding code before transferring arguments. This is not a recommended print value.

AppMeshPartPy.cpp also lists several signatures, including MaxLength, MaxArea, LocalLength, and Deflection; further signatures are available when FreeCAD is built with Netgen. The documentation says the signature determines the mesher. To compare a GUI export with a script, record the version, named arguments, units, and Relative state; the STL vs 3MF guide covers formats separately.

How to compare tolerance and file size on your own model

The command examined first creates a mesh object in the document. The documentation also notes that Std Export can export a shape directly to a mesh format; do not assume every export route uses identical settings. For your comparison, choose and retain one route: a created mesh object then saved, or direct export to examine in your version. Record the model, mesher, settings, and size of each resulting file. The table is a suggested record, without results produced by this site.

For a comparison, keep the model fixed and change one parameter at a time. Record surface deviation, angular deviation, relative mode, and exported file size separately. Choose variations that answer your question; this page recommends no increment or ratio. Use the same document units and note the software version.

Inspect the exported mesh in the receiving program, zooming in on details you select. Record what you observe and the file size; do not turn a visual preference into a dimensional-accuracy measurement. The table is a recording grid, not a measured result. Whether a facet count is exposed depends on the version and mesh object.

Mefisto, Netgen and Gmsh: when the other meshers matter

The documentation describes tabs beyond Standard. For Mefisto, a smaller maximum edge length gives a finer mesh; zero or an unchecked box produces a very coarse mesh. The Estimate button suggests a value the documentation calls unreliable when multiple objects are selected.

The documentation lists Netgen fineness levels, user-mode parameters, and options for optimization, second-order elements, and quadrilateral faces. AppMeshPartPy.cpp says some signatures are available only when FreeCAD was built with Netgen. Check your actual build before relying on those options.

The FreeCAD page says the external Gmsh module is required for this mesher on Linux; it describes an executable path and a Kill action if meshing takes too long. These notes do not support a general ranking of meshers by use. Choose a tab whose settings you understand and check that it exists in your installation.

Mesh tolerance and printer tolerance are different problems

Tessellation deviation describes the mesh representation of the source shape; it is not a measurement of a printed part’s dimensions. If a finished part misses a dimension, separate the mesh check from the print check. The dimensional accuracy page covers that second topic; tessellation alone cannot diagnose the cause.

A visible mesh discrepancy may justify reviewing tessellation settings; the documentation says the deflections control surface representation. That does not prove a deflection was the sole cause of a defect after printing. Compare the exported mesh and the resulting part before drawing a conclusion.

Keep the command name, version, values, relative mode, and units stated in the applicable interface or documentation with your trials. Separate these from dimensions displayed after import. The unitless STL guide helps check that second point. A scale mismatch calls for reviewing export and import before drawing conclusions about model geometry or the print.

Blank grid for comparing your tessellation trials on one part

TrialSurface deviationAngular deviationRelative modeWhat to record
FreeCAD stored settingsValue shown in the panelValue shown in the panelCheckbox stateCount if available, file size, selected area in the slicer
Smaller surface deviationYour smaller valueUnchangedUnchangedCount if available, file size, hole look
Smaller angular deviationUnchangedYour smaller valueUnchangedCount if available, file size, selected area
Relative mode flippedUnchangedUnchangedInvertedCount if available, file size, difference between large faces and small details
Mefisto by edge lengthNot applicableNot applicableNot applicableObserved mesh and exported file size, if you measure them

Frequently asked questions

What is the difference between surface deviation and angular deviation in FreeCAD?

The documentation distinguishes maximum linear deviation from the object surface and angular deviation from one mesh section to the next. It says the angular setting is used for curved surfaces. These definitions do not give a facet count or print tolerance.

What does the Relative surface deviation checkbox do?

When checked, the maximum linear deviation of a segment is the surface value multiplied by the segment length. The documentation does not present this mode as finer or more efficient in every case.

Why does my script produce a different mesh than the GUI?

In FreeCAD 1.1.3 GUI code, the angular-field value passes through toRadians before meshFromShape is called. Also compare the AngularDeflection and Relative arguments with the panel settings. This observation is specific to version 1.1.3 source code.

Is there a universal tessellation setting for 3D printing?

The FreeCAD pages describe settings, not a recommended value. Compare exports of your own model and record version, settings, units, and file size; the table provides blank fields, not measurements already made.

Does a finer mesh make a more accurate printed part?

A mesh describes a representation of a shape; the sources do not show that a setting guarantees a printed part’s dimensions. Check the exported file and finished part separately. Tessellation alone does not identify the cause of a final discrepancy.

Sources and limits

  • FreeCAD — Mesh FromPartShape, archived documentation repository
  • FreeCAD 1.1.3 — API meshFromShape
  • FreeCAD 1.1.3 — Tessellation panel

We organize manufacturer and community documentation; we have not measured these products ourselves. The manual for your exact model takes precedence over general guidance.

Keep exploring

A clearer shortlist starts with your projects.

Use the free buying checklist and budget worksheet before comparing offers.

Get the free starter kit