Printy3D

Tools

Measurement & analysis

Tools that measure the model or convert it, without reshaping it: distances, wall thickness with heatmaps, mesh figures and format conversion.

All run as {"recipe": "tool", "tool": "<name>", "params": {…}}. The numbers are in job.result.result; see what a tool returns.

measure#

The distance between two points, each snapped to the nearest point of the surface.

params
{ "point_a": [0, 0, 0], "point_b": [10, 0, 0] }
point_a, point_b[x, y, z]required

The two points, in model coordinates (mm).

compute_geodesicbooleandefault false

Also measure the distance along the surface.

Result: euclidean_distance (mm, between the snapped points), geodesic_distance (−1 when not computed), the snapped point_a and point_b, and path_vertex_count (always 0 today). No mesh is returned.

convert#

Converts the uploaded model to another format. To convert the output of a repair or tool job, ask for an export instead.

params
{ "target_format": "3mf" }
target_format"stl" | "obj" | "ply" | "3mf" | "glb"default "stl"

The format to write.

Result: vertex_count, face_count. Artifact: converted, or converted_zip for several pieces or an OBJ with its MTL and textures. Charged as a tool job.

thickness#

Checks every wall against a target thickness on a voxel grid and reports how much of the model is too thin, optionally with a coloured heatmap mesh. It changes nothing; to thicken walls, repair the model.

params
{ "thickness_mm": 0.7, "export_mesh": true }
thickness_mmnumberrequired> 0, ≤ 100

The size of the sphere walls are checked with. A vertex is flagged when too little of that sphere is solid, which happens well below this value. For a measurement in millimetres use medial.

resolutionnumberdefault 100,000,0001,000,000–1,000,000,000

Resolution of the voxel grid the walls are measured on; higher is finer and slower.

flag_atnumberdefault 250–245

On the engine's 0–245 thinness scale, the level from which a vertex counts as below the target. 25 is where the heatmap starts to show colour.

severe_atnumberdefault 1220–245

The level from which a vertex counts as severely thin.

soft_sel_radiusnumberdefault 100–1000

The engine's soft-selection radius for the heatmap.

export_meshbooleandefault false

Also return the coloured heatmap mesh (artifact heatmap, OBJ). It can be 50–70 MB.

support_awarebooleandefault false

Use a per-vertex, process-aware target: a free-standing wall is held to a free-standing wall's minimum instead of one number for the whole model.

profilestringa–z, 0–9, _; ≤ 32

A named wall profile of the engine for support_aware.

Result: threshold_mm, resolution, vertices, below_threshold_vertices, below_threshold_fraction, severely_thin_vertices, severely_thin_fraction, mean_thinness, max_thinness (0–245) and a note.

0.7 mm: 0.0% flagged
1.5 mm: 0.3% flagged
3 mm: 4.3% flagged
Wall thickness heatmap. Green marks adequate walls and thin ones shift towards red, here only as far as olive, against the sphere of thickness_mm: a vertex is flagged when too little of that sphere is solid, which happens well below the threshold: the 1.2 mm gusset is flagged at 3 mm, not at 1.5 mm, and the 6 mm upright's flat faces at neither. For a measurement in millimetres use the medial tool. Model: Bracket with hook, Printy3D (generated), CC0 1.0
support_aware: false
support_aware: true
Support-aware thickness. Off, one threshold everywhere. On, each vertex gets its own target: the process floor, doubled where the wall is unsupported, or the stiffness of its free span when that governs. Here the widest change is a band along the gusset's sloped edge; the beam shows thin streaks along its edges and the hook barely changes. Model: Bracket with hook, Printy3D (generated), CC0 1.0

medial#

Ball wall thickness: at every vertex, the diameter of the largest ball that fits inside the wall, with a voxel flood fill deciding where material is. Report only. A mesh without a real-world scale is refused (basis: refused).

params
{ "threshold_mm": 0.7 }
threshold_mmnumberdefault 1.0> 0, ≤ 100

Walls thinner than this are counted and painted.

exteriorbooleandefault true

Also measure the exterior side; reported in the exterior block.

export_meshbooleandefault true

Return the heatmap mesh (artifact heatmap); grey where a vertex could not be measured.

paint_dilate_mmnumber0–100

How far the painted thin areas spread on the heatmap. Default: threshold_mm.

beamsbooleandefault false

Also analyse thin beams.

selftestbooleandefault false

Run the tool's own self-test (diagnostics).

Result: interior and exterior blocks with thickness percentiles in millimetres, trusted_fraction, open_surface_fraction and material_from, plus below_threshold_fraction, unmeasured_vertices and painted_quantity.

0.5 mm
1 mm
2 mm
Ball wall thickness. medial measures the diameter of the largest ball that fits inside the wall at each vertex and paints the parts under threshold_mm. Grey means the vertex could not be measured. Colours: green = at or above threshold_mm, shifting towards red under it; on this stout figure only small marks on thin rims appear, at 2 mm. Model: Garden Gnome, Poly Haven, https://polyhaven.com/a/garden_gnome, CC0 1.0

analyze#

The engine's mesh figures, for comparing a model before and after other tools. This is not the inspect recipe: it returns no thumbnails, preview or recommendation.

params
{ "volume": true }
volumebooleandefault true

Compute the volume.

volume_resolutionnumberdefault 100,000,0001,000,000–1,000,000,000

Resolution of the volume computation.

Result: vertices, faces, volume. Artifact: analysis_raw, the engine's full analysis JSON.