{
 "measured_on": "2026-10-09",
 "question": "When a 3MF file is converted to STL, what is kept, what is lost, and what comes along that should not?",
 "platform": "Windows 11",
 "tolerance_mm": 0.02,
 "converters": {
  "prusaslicer-cli": {
   "name": "PrusaSlicer CLI --export-stl",
   "version": "PrusaSlicer-2.9.6",
   "run_by": "script",
   "settings": null
  },
  "trimesh": {
   "name": "trimesh (Python)",
   "version": "5.1.0",
   "run_by": "script",
   "settings": null
  },
  "bambu-cli": {
   "name": "Bambu Studio CLI --export-stl",
   "version": null,
   "run_by": "script",
   "settings": null
  },
  "orca-cli": {
   "name": "OrcaSlicer CLI --export-stl",
   "version": null,
   "run_by": "script",
   "settings": null
  },
  "blender": {
   "name": "Blender + 3MF Import/Export extension, every option at its default",
   "version": "Blender 5.2.2, ThreeMF_io 2.7.7",
   "run_by": "script",
   "settings": null
  },
  "lib3mf": {
   "name": "lib3mf (3MF Consortium reference library)",
   "version": "2.5.0",
   "run_by": "script",
   "settings": null
  },
  "blender-mm": {
   "name": "Blender + 3MF Import/Export extension, scene Unit Scale 0.001 set before import",
   "version": "Blender 5.2.2, ThreeMF_io 2.7.7",
   "run_by": "script",
   "settings": null
  },
  "bambu-gui-one-bool": {
   "name": "Bambu Studio GUI, File > Export > Export all objects as one STL, answering Yes to the boolean prompt",
   "version": "Bambu Studio 02.08.02.61",
   "run_by": "hand",
   "settings": "Opened each 3MF as a project (Ctrl+O). On export, Bambu asks 'Negative parts detected. Would you like to perform mesh boolean before exporting?'; answered Yes."
  },
  "bambu-gui-one": {
   "name": "Bambu Studio GUI, File > Export > Export all objects as one STL, answering No to the boolean prompt",
   "version": "Bambu Studio 02.08.02.61",
   "run_by": "hand",
   "settings": "Same as above, answered No."
  },
  "bambu-gui-many": {
   "name": "Bambu Studio GUI, File > Export > Export all objects as STLs",
   "version": "Bambu Studio 02.08.02.61",
   "run_by": "hand",
   "settings": "Answered Yes to the boolean prompt. Writes one file per object, named after the object with .stl appended, so an object imported from body.stl is written as body.stl.stl."
  },
  "imagetostl": {
   "name": "imagetostl.com 3MF to STL converter",
   "version": "web, 2026-10-09",
   "run_by": "hand",
   "settings": "All options at their defaults: Negative Parts = Apply, Texture Adjustments = None, Up Axis Transform = Auto, STL Format = Standard (Binary), Voxelizer off. All eleven fixtures uploaded in one batch."
  },
  "meshy": {
   "name": "meshy.ai 3MF to STL converter",
   "version": "web, 2026-10-09",
   "run_by": "hand",
   "settings": "Single file mode, no options offered. The page converts in the browser. Anonymous use is capped at three conversions; the STL output of plain and inch was captured, the third conversion (rotated) was lost on a page reload. For every other case the page's own pre-conversion readout (triangle count and overall dimensions of what it read from the 3MF) is recorded instead, which shows what the converter will write but not the triangle winding."
  },
  "convert3d": {
   "name": "convert3d.org 3MF to STL converter",
   "version": "web, 2026-10-09",
   "run_by": "hand",
   "settings": "No options offered; conversion starts on upload and runs in the browser. Batch conversion is paid, so the ten fixtures were uploaded one at a time. Output is ASCII STL."
  }
 },
 "fixtures": {
  "plain": [
   {
    "role": "body",
    "extents_mm": [
     40.0,
     20.0,
     10.0
    ],
    "centre_mm": [
     100,
     100,
     5
    ],
    "printable": true,
    "note": ""
   }
  ],
  "inch": [
   {
    "role": "body",
    "extents_mm": [
     40.0,
     20.0,
     10.0
    ],
    "centre_mm": [
     100,
     100,
     5
    ],
    "printable": true,
    "note": "stored in inches; 1.5748 x 0.7874 x 0.3937 in the file"
   }
  ],
  "rotated": [
   {
    "role": "body",
    "extents_mm": [
     20.0,
     40.0,
     10.0
    ],
    "centre_mm": [
     100,
     100,
     5
    ],
    "printable": true,
    "note": "40 x 20 in the mesh, 20 x 40 after the item transform"
   }
  ],
  "scaled": [
   {
    "role": "body",
    "extents_mm": [
     80.0,
     40.0,
     20.0
    ],
    "centre_mm": [
     100,
     100,
     10
    ],
    "printable": true,
    "note": "40 x 20 x 10 in the mesh, scaled by 2 on the item"
   }
  ],
  "mirrored": [
   {
    "role": "body",
    "extents_mm": [
     40.0,
     20.0,
     10.0
    ],
    "centre_mm": [
     100,
     100,
     5
    ],
    "printable": true,
    "note": "item mirrors X; winding must be flipped to keep normals outward"
   }
  ],
  "multi-object": [
   {
    "role": "body",
    "extents_mm": [
     40.0,
     20.0,
     10.0
    ],
    "centre_mm": [
     60,
     100,
     5
    ],
    "printable": true,
    "note": ""
   },
   {
    "role": "cube",
    "extents_mm": [
     15.0,
     15.0,
     15.0
    ],
    "centre_mm": [
     120,
     100,
     7.5
    ],
    "printable": true,
    "note": ""
   },
   {
    "role": "slab",
    "extents_mm": [
     30.0,
     10.0,
     5.0
    ],
    "centre_mm": [
     160,
     100,
     2.5
    ],
    "printable": true,
    "note": ""
   }
  ],
  "components": [
   {
    "role": "cube",
    "extents_mm": [
     15.0,
     15.0,
     15.0
    ],
    "centre_mm": [
     80,
     100,
     7.5
    ],
    "printable": true,
    "note": "component 1 of 2, same mesh"
   },
   {
    "role": "cube",
    "extents_mm": [
     15.0,
     15.0,
     15.0
    ],
    "centre_mm": [
     120,
     100,
     7.5
    ],
    "printable": true,
    "note": "component 2 of 2, same mesh"
   }
  ],
  "prusa-project": [
   {
    "role": "body",
    "extents_mm": [
     40.0,
     20.0,
     10.0
    ],
    "centre_mm": [
     100.0,
     100.0,
     5.0
    ],
    "printable": true,
    "note": ""
   },
   {
    "role": "modifier",
    "extents_mm": [
     12.0,
     12.0,
     6.0
    ],
    "centre_mm": [
     110.0,
     100.0,
     5.0
    ],
    "printable": false,
    "note": "ParameterModifier: triangles 12 to 23 of the same mesh"
   },
   {
    "role": "negative",
    "extents_mm": [
     8.0,
     8.0,
     14.0
    ],
    "centre_mm": [
     88.0,
     100.0,
     5.0
    ],
    "printable": false,
    "note": "NegativeVolume: triangles 24 to 35 of the same mesh"
   }
  ],
  "bambu-single": [
   {
    "role": "body",
    "extents_mm": [
     40.0,
     20.0,
     10.0
    ],
    "centre_mm": [
     100.0,
     100.0,
     5.0
    ],
    "printable": true,
    "note": "normal_part on plate 1, read from the saved file"
   }
  ],
  "bambu-saved": [
   {
    "role": "body",
    "extents_mm": [
     40.0,
     20.0,
     10.0
    ],
    "centre_mm": [
     128.0,
     128.0,
     5.0
    ],
    "printable": true,
    "note": "normal_part on plate 1, read from the saved file"
   },
   {
    "role": "negative",
    "extents_mm": [
     8.0,
     8.0,
     14.0
    ],
    "centre_mm": [
     128.0,
     128.0,
     7.0
    ],
    "printable": false,
    "note": "negative_part on plate 1, read from the saved file"
   },
   {
    "role": "modifier",
    "extents_mm": [
     12.0,
     12.0,
     6.0
    ],
    "centre_mm": [
     128.0,
     128.0,
     3.0
    ],
    "printable": false,
    "note": "modifier_part on plate 1, read from the saved file"
   },
   {
    "role": "plate2",
    "extents_mm": [
     25.0,
     25.0,
     4.0
    ],
    "centre_mm": [
     435.2,
     128.0,
     2.0
    ],
    "printable": false,
    "note": "normal_part on plate 2, read from the saved file"
   }
  ]
 },
 "fixtures_source": "Eight fixtures generated by scripts/measure-3mf-to-stl.py make; the PrusaSlicer project structure follows prusa3d/PrusaSlicer src/libslic3r/Format/3mf.cpp at version_2.9.6. Two fixtures were written by Bambu Studio 02.08.02.61 itself: bambu-single by its command line from one box STL, bambu-saved built and saved in its GUI. All ten fixtures are published at /data/measurements/3mf-to-stl-fixtures/ under the case names used here.",
 "rows": [
  {
   "converter": "prusaslicer-cli",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\plain\\out.stl",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      3.937,
      3.937,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 7999.99
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\inch\\out.stl",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      20.0,
      40.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\rotated\\out.stl",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      80.0,
      40.0,
      20.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      10.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 64000.0
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\scaled\\out.stl",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\mirrored\\out.stl",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "multi-object",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      60.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      30.0,
      10.0,
      5.0
     ],
     "centre_mm": [
      160.0,
      100.0,
      2.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 1500.0
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\multi-object\\out.stl",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "slab",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      80.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\components\\out.stl",
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\prusa-project\\out.stl",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "negative part ignored, hole not cut"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "bambu-single",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "File exported to tmp-3mf\\out\\prusaslicer-cli\\bambu-single\\out.stl",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "prusaslicer-cli",
   "case": "bambu-saved",
   "stl_files": 0,
   "triangles": 0,
   "shells": [],
   "exit": 1,
   "message": "tmp-3mf\\fixtures\\bambu-saved.3mf: Error (Invalid 3MF format) while parsing '3D/3dmodel.model' at line 22",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "plate2",
     "printable": false,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "no output"
  },
  {
   "converter": "trimesh",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "1 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "trimesh",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      1.575,
      0.787,
      0.394
     ],
     "centre_mm": [
      3.937,
      3.937,
      0.197
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.49
    }
   ],
   "exit": 0,
   "message": "1 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     1.575,
     0.787,
     0.394
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "trimesh",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      20.0,
      40.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "1 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "trimesh",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      80.0,
      40.0,
      20.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      10.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 64000.0
    }
   ],
   "exit": 0,
   "message": "1 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "trimesh",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "1 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "trimesh",
   "case": "multi-object",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      60.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      30.0,
      10.0,
      5.0
     ],
     "centre_mm": [
      160.0,
      100.0,
      2.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 1500.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": 0,
   "message": "3 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "slab",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "trimesh",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      80.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": 0,
   "message": "2 geometry nodes",
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "trimesh",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      110.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      88.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    }
   ],
   "exit": 0,
   "message": "1 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: modifier, negative"
  },
  {
   "converter": "trimesh",
   "case": "bambu-single",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "1 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "trimesh",
   "case": "bambu-saved",
   "stl_files": 1,
   "triangles": 120,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      3.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      3.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      3.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      2.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": 0,
   "message": "4 geometry nodes",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [
    [
     40.0,
     20.0,
     10.0
    ],
    [
     8.0,
     8.0,
     14.0
    ],
    [
     12.0,
     12.0,
     6.0
    ],
    [
     40.0,
     20.0,
     10.0
    ],
    [
     8.0,
     8.0,
     14.0
    ],
    [
     12.0,
     12.0,
     6.0
    ]
   ],
   "layout_error_mm": 2.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: negative, modifier, plate2"
  },
  {
   "converter": "bambu-cli",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "bambu-cli",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      3.937,
      3.937,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 7999.99
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "bambu-cli",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      20.0,
      40.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "bambu-cli",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      80.0,
      40.0,
      20.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      10.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 64000.0
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "bambu-cli",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": -8000.0
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": true
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "bambu-cli",
   "case": "multi-object",
   "stl_files": 3,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      60.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      30.0,
      10.0,
      5.0
     ],
     "centre_mm": [
      160.0,
      100.0,
      2.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 1500.0
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "slab",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "bambu-cli",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      80.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "bambu-cli",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      110.0,
      100.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      88.0,
      100.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: modifier, negative"
  },
  {
   "converter": "bambu-cli",
   "case": "bambu-single",
   "stl_files": 0,
   "triangles": 0,
   "shells": [],
   "exit": 3221225477,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "no output"
  },
  {
   "converter": "bambu-cli",
   "case": "bambu-saved",
   "stl_files": 2,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      2.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": 0,
   "message": "result.json: 0 Success.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: plate2; negative part ignored, hole not cut"
  },
  {
   "converter": "orca-cli",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "orca-cli",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      3.937,
      3.937,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 7999.99
    }
   ],
   "exit": 0,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "orca-cli",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      20.0,
      40.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "orca-cli",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      80.0,
      40.0,
      20.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      10.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 64000.0
    }
   ],
   "exit": 0,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "orca-cli",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": -8000.0
    }
   ],
   "exit": 0,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": true
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "orca-cli",
   "case": "multi-object",
   "stl_files": 3,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      60.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      30.0,
      10.0,
      5.0
     ],
     "centre_mm": [
      160.0,
      100.0,
      2.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 1500.0
    }
   ],
   "exit": 0,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "slab",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "orca-cli",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      80.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": 0,
   "message": "",
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "orca-cli",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      110.0,
      100.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      88.0,
      100.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    }
   ],
   "exit": 0,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: modifier, negative"
  },
  {
   "converter": "orca-cli",
   "case": "bambu-single",
   "stl_files": 0,
   "triangles": 0,
   "shells": [],
   "exit": 3221225477,
   "message": "",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "no output"
  },
  {
   "converter": "orca-cli",
   "case": "bambu-saved",
   "stl_files": 0,
   "triangles": 0,
   "shells": [],
   "exit": 4294967272,
   "message": "Slic3r::CLI::run found error, exit",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "plate2",
     "printable": false,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "no output"
  },
  {
   "converter": "blender",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      0.04,
      0.02,
      0.01
     ],
     "centre_mm": [
      0.1,
      0.1,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.04,
     0.02,
     0.01
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      0.04,
      0.02,
      0.01
     ],
     "centre_mm": [
      0.1,
      0.1,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.04,
     0.02,
     0.01
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      0.02,
      0.04,
      0.01
     ],
     "centre_mm": [
      0.1,
      0.1,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.02,
     0.04,
     0.01
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      0.08,
      0.04,
      0.02
     ],
     "centre_mm": [
      0.1,
      0.1,
      0.01
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.08,
     0.04,
     0.02
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      0.04,
      0.02,
      0.01
     ],
     "centre_mm": [
      0.1,
      0.1,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.04,
     0.02,
     0.01
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "multi-object",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      0.04,
      0.02,
      0.01
     ],
     "centre_mm": [
      0.06,
      0.1,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    },
    {
     "extents_mm": [
      0.015,
      0.015,
      0.015
     ],
     "centre_mm": [
      0.12,
      0.1,
      0.008
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    },
    {
     "extents_mm": [
      0.03,
      0.01,
      0.005
     ],
     "centre_mm": [
      0.16,
      0.1,
      0.003
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 3 ['3MF Object', '3MF Object.001', '3MF Object.002']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    },
    {
     "role": "cube",
     "printable": true,
     "present": false,
     "inverted": null
    },
    {
     "role": "slab",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.04,
     0.02,
     0.01
    ],
    [
     0.015,
     0.015,
     0.015
    ],
    [
     0.03,
     0.01,
     0.005
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      0.015,
      0.015,
      0.015
     ],
     "centre_mm": [
      0.08,
      0.1,
      0.008
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    },
    {
     "extents_mm": [
      0.015,
      0.015,
      0.015
     ],
     "centre_mm": [
      0.12,
      0.1,
      0.008
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 2 ['3MF Object', '3MF Object.001']",
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": false,
     "inverted": null
    },
    {
     "role": "cube",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.015,
     0.015,
     0.015
    ],
    [
     0.015,
     0.015,
     0.015
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      0.04,
      0.02,
      0.01
     ],
     "centre_mm": [
      0.1,
      0.1,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    },
    {
     "extents_mm": [
      0.012,
      0.012,
      0.006
     ],
     "centre_mm": [
      0.11,
      0.1,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    },
    {
     "extents_mm": [
      0.008,
      0.008,
      0.014
     ],
     "centre_mm": [
      0.088,
      0.1,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.04,
     0.02,
     0.01
    ],
    [
     0.012,
     0.012,
     0.006
    ],
    [
     0.008,
     0.008,
     0.014
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "bambu-single",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      0.04,
      0.02,
      0.01
     ],
     "centre_mm": [
      0.1,
      0.1,
      0.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.04,
     0.02,
     0.01
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "blender",
   "case": "bambu-saved",
   "stl_files": 1,
   "triangles": 48,
   "shells": [
    {
     "extents_mm": [
      0.04,
      0.02,
      0.01
     ],
     "centre_mm": [
      0.128,
      0.128,
      0.005
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    },
    {
     "extents_mm": [
      0.008,
      0.008,
      0.014
     ],
     "centre_mm": [
      0.128,
      0.128,
      0.007
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    },
    {
     "extents_mm": [
      0.012,
      0.012,
      0.006
     ],
     "centre_mm": [
      0.128,
      0.128,
      0.003
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    },
    {
     "extents_mm": [
      0.025,
      0.025,
      0.004
     ],
     "centre_mm": [
      0.435,
      0.128,
      0.002
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 1.0\nIMPORT {'FINISHED'} 4 ['body.stl.001', 'negative.stl', 'modifier.stl', '3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "plate2",
     "printable": false,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     0.04,
     0.02,
     0.01
    ],
    [
     0.008,
     0.008,
     0.014
    ],
    [
     0.012,
     0.012,
     0.006
    ],
    [
     0.025,
     0.025,
     0.004
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "lib3mf",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "read and written",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "lib3mf",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      1.575,
      0.787,
      0.394
     ],
     "centre_mm": [
      3.937,
      3.937,
      0.197
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.49
    }
   ],
   "exit": 0,
   "message": "read and written",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     1.575,
     0.787,
     0.394
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "lib3mf",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      20.0,
      40.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "read and written",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "lib3mf",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      80.0,
      40.0,
      20.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      10.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 64000.0
    }
   ],
   "exit": 0,
   "message": "read and written",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "lib3mf",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": -8000.0
    }
   ],
   "exit": 0,
   "message": "read and written",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": true
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "lib3mf",
   "case": "multi-object",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      60.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      30.0,
      10.0,
      5.0
     ],
     "centre_mm": [
      160.0,
      100.0,
      2.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 1500.0
    }
   ],
   "exit": 0,
   "message": "read and written",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "slab",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "lib3mf",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      80.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": 0,
   "message": "read and written",
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "lib3mf",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      110.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      88.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    }
   ],
   "exit": 0,
   "message": "read and written; Invalid Attribute in namespace.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: modifier, negative"
  },
  {
   "converter": "lib3mf",
   "case": "bambu-single",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "read and written; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Invalid Attribute in namespace.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "lib3mf",
   "case": "bambu-saved",
   "stl_files": 1,
   "triangles": 48,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      3.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      2.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": 0,
   "message": "read and written; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Unknown Model Metadata.; Invalid Attribute in namespace.; Invalid Attribute in namespace.",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: negative, modifier, plate2"
  },
  {
   "converter": "blender-mm",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "blender-mm",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 7999.99
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "blender-mm",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      20.0,
      40.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "blender-mm",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      80.0,
      40.0,
      20.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      10.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 63999.98
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "blender-mm",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "blender-mm",
   "case": "multi-object",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      60.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      30.0,
      10.0,
      5.0
     ],
     "centre_mm": [
      160.0,
      100.0,
      2.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 1500.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 3 ['3MF Object', '3MF Object.001', '3MF Object.002']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "slab",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "blender-mm",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      80.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 2 ['3MF Object', '3MF Object.001']",
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "blender-mm",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      110.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      88.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: modifier, negative"
  },
  {
   "converter": "blender-mm",
   "case": "bambu-single",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      0.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 1 ['3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "blender-mm",
   "case": "bambu-saved",
   "stl_files": 1,
   "triangles": 48,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 7999.99
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      3.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      2.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": 0,
   "message": "SCENE METRIC 0.0010000000474974513\nIMPORT {'FINISHED'} 4 ['body.stl.001', 'negative.stl', 'modifier.stl', '3MF Object']",
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: negative, modifier, plate2"
  },
  {
   "converter": "bambu-gui-one-bool",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "bambu-gui-one-bool",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 64,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 64,
     "signed_volume_mm3": 7360.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 7360.0,
    "cut": true
   },
   "verdict": "correct"
  },
  {
   "converter": "bambu-gui-one-bool",
   "case": "bambu-saved",
   "stl_files": 1,
   "triangles": 68,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 56,
     "signed_volume_mm3": 7360.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      2.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 7360.0,
    "cut": true
   },
   "verdict": "extra geometry: plate2"
  },
  {
   "converter": "bambu-gui-one",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "bambu-gui-one",
   "case": "bambu-saved",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      2.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: plate2; negative part ignored, hole not cut"
  },
  {
   "converter": "bambu-gui-many",
   "case": "bambu-saved",
   "stl_files": 2,
   "triangles": 68,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      10.0
     ],
     "triangles": 56,
     "signed_volume_mm3": 7360.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      4.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 3.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 7360.0,
    "cut": true
   },
   "verdict": "extra geometry: plate2"
  },
  {
   "converter": "imagetostl",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "imagetostl",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      3.937,
      3.937,
      0.197
     ],
     "triangles": 12,
     "signed_volume_mm3": 7999.99
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "imagetostl",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      20.0,
      40.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "imagetostl",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      80.0,
      40.0,
      20.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      10.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 64000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "imagetostl",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": -8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": true
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "imagetostl",
   "case": "multi-object",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      60.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      30.0,
      10.0,
      5.0
     ],
     "centre_mm": [
      160.0,
      100.0,
      2.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 1500.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "slab",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "imagetostl",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      80.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "imagetostl",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      110.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      88.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: modifier, negative"
  },
  {
   "converter": "imagetostl",
   "case": "bambu-single",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "imagetostl",
   "case": "bambu-saved",
   "stl_files": 1,
   "triangles": 44,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 32,
     "signed_volume_mm3": 7360.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      2.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "modifier",
     "printable": false,
     "present": false,
     "inverted": null
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 7360.0,
    "cut": true
   },
   "verdict": "extra geometry: plate2"
  },
  {
   "converter": "meshy",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "meshy",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      1.575,
      0.787,
      0.394
     ],
     "centre_mm": [
      3.937,
      3.937,
      0.197
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.49
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     1.575,
     0.787,
     0.394
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "meshy",
   "case": "rotated",
   "evidence": "readout",
   "triangles": 12,
   "triangles_expected": 12,
   "dims_mm": [
    20,
    40,
    10
   ],
   "dims_expected_mm": [
    20.0,
    40.0,
    10.0
   ],
   "verdict": "correct (readout only; winding not visible)"
  },
  {
   "converter": "meshy",
   "case": "scaled",
   "evidence": "readout",
   "triangles": 12,
   "triangles_expected": 12,
   "dims_mm": [
    80,
    40,
    20
   ],
   "dims_expected_mm": [
    80.0,
    40.0,
    20.0
   ],
   "verdict": "correct (readout only; winding not visible)"
  },
  {
   "converter": "meshy",
   "case": "mirrored",
   "evidence": "readout",
   "triangles": 12,
   "triangles_expected": 12,
   "dims_mm": [
    40,
    20,
    10
   ],
   "dims_expected_mm": [
    40.0,
    20.0,
    10.0
   ],
   "verdict": "correct (readout only; winding not visible)"
  },
  {
   "converter": "meshy",
   "case": "multi-object",
   "evidence": "readout",
   "triangles": 36,
   "triangles_expected": 36,
   "dims_mm": [
    135,
    20,
    15
   ],
   "dims_expected_mm": [
    135.0,
    20.0,
    15.0
   ],
   "verdict": "correct (readout only; winding not visible)"
  },
  {
   "converter": "meshy",
   "case": "components",
   "evidence": "readout",
   "triangles": 24,
   "triangles_expected": 24,
   "dims_mm": [
    55,
    15,
    15
   ],
   "dims_expected_mm": [
    55.0,
    15.0,
    15.0
   ],
   "verdict": "correct (readout only; winding not visible)"
  },
  {
   "converter": "meshy",
   "case": "prusa-project",
   "evidence": "readout",
   "triangles": 36,
   "triangles_expected": 12,
   "dims_mm": [
    40,
    20,
    14
   ],
   "dims_expected_mm": [
    40.0,
    20.0,
    10.0
   ],
   "verdict": "extra geometry: every non-printing part read as solid (readout)"
  },
  {
   "converter": "meshy",
   "case": "bambu-single",
   "evidence": "readout",
   "triangles": 12,
   "triangles_expected": 12,
   "dims_mm": [
    40,
    20,
    10
   ],
   "dims_expected_mm": [
    40.0,
    20.0,
    10.0
   ],
   "verdict": "correct (readout only; winding not visible)"
  },
  {
   "converter": "meshy",
   "case": "bambu-saved",
   "evidence": "readout",
   "triangles": 48,
   "triangles_expected": 12,
   "dims_mm": [
    339.7,
    25,
    14
   ],
   "dims_expected_mm": [
    40.0,
    20.0,
    10.0
   ],
   "verdict": "extra geometry: every non-printing part read as solid (readout)"
  },
  {
   "converter": "convert3d",
   "case": "plain",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "convert3d",
   "case": "inch",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      1.575,
      0.787,
      0.394
     ],
     "centre_mm": [
      3.937,
      3.937,
      0.197
     ],
     "triangles": 12,
     "signed_volume_mm3": 0.49
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": false,
     "inverted": null
    }
   ],
   "unidentified_shells": [
    [
     1.575,
     0.787,
     0.394
    ]
   ],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "convert3d",
   "case": "rotated",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      20.0,
      40.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "convert3d",
   "case": "scaled",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      80.0,
      40.0,
      20.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      10.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 64000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "convert3d",
   "case": "mirrored",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": -8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": true
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "printable part wrong"
  },
  {
   "converter": "convert3d",
   "case": "multi-object",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      60.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      30.0,
      10.0,
      5.0
     ],
     "centre_mm": [
      160.0,
      100.0,
      2.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 1500.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "slab",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "convert3d",
   "case": "components",
   "stl_files": 1,
   "triangles": 24,
   "shells": [
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      80.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    },
    {
     "extents_mm": [
      15.0,
      15.0,
      15.0
     ],
     "centre_mm": [
      120.0,
      100.0,
      7.5
     ],
     "triangles": 12,
     "signed_volume_mm3": 3375.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "cube",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "convert3d",
   "case": "prusa-project",
   "stl_files": 1,
   "triangles": 36,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      110.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      88.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: modifier, negative"
  },
  {
   "converter": "convert3d",
   "case": "bambu-single",
   "stl_files": 1,
   "triangles": 12,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      100.0,
      100.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": null,
   "negative_cut": null,
   "verdict": "correct"
  },
  {
   "converter": "convert3d",
   "case": "bambu-saved",
   "stl_files": 1,
   "triangles": 48,
   "shells": [
    {
     "extents_mm": [
      40.0,
      20.0,
      10.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      5.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 8000.0
    },
    {
     "extents_mm": [
      8.0,
      8.0,
      14.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      7.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 896.0
    },
    {
     "extents_mm": [
      12.0,
      12.0,
      6.0
     ],
     "centre_mm": [
      128.0,
      128.0,
      3.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 864.0
    },
    {
     "extents_mm": [
      25.0,
      25.0,
      4.0
     ],
     "centre_mm": [
      435.2,
      128.0,
      2.0
     ],
     "triangles": 12,
     "signed_volume_mm3": 2500.0
    }
   ],
   "exit": null,
   "message": null,
   "parts": [
    {
     "role": "body",
     "printable": true,
     "present": true,
     "inverted": false
    },
    {
     "role": "negative",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "modifier",
     "printable": false,
     "present": true,
     "inverted": false
    },
    {
     "role": "plate2",
     "printable": false,
     "present": true,
     "inverted": false
    }
   ],
   "unidentified_shells": [],
   "layout_error_mm": 0.0,
   "negative_cut": {
    "expected_mm3": 7360.0,
    "uncut_mm3": 8000.0,
    "got_mm3": 8000.0,
    "cut": false
   },
   "verdict": "extra geometry: negative, modifier, plate2"
  }
 ],
 "matrix": [
  {
   "tool": "PrusaSlicer",
   "setting": "command line --export-stl",
   "run_by": "script",
   "plain": "OK",
   "inch": "OK",
   "rotated": "OK",
   "scaled": "OK",
   "mirrored": "OK",
   "multi_object": "OK",
   "components": "OK",
   "bambu_single": "OK",
   "bambu_saved": "refuses to open",
   "prusa_project": "hole not cut"
  },
  {
   "tool": "trimesh",
   "setting": "load, then export STL",
   "run_by": "script",
   "plain": "OK",
   "inch": "25.4x too small",
   "rotated": "OK",
   "scaled": "OK",
   "mirrored": "OK",
   "multi_object": "OK",
   "components": "OK",
   "bambu_single": "OK",
   "bambu_saved": "adds the plate 2 part; modifier as solid; negative part as solid",
   "prusa_project": "modifier as solid; negative part as solid"
  },
  {
   "tool": "Bambu Studio",
   "setting": "command line --export-stl",
   "run_by": "script",
   "plain": "OK",
   "inch": "OK",
   "rotated": "OK",
   "scaled": "OK",
   "mirrored": "inside out",
   "multi_object": "OK",
   "components": "OK",
   "bambu_single": "crashes",
   "bambu_saved": "adds the plate 2 part; hole not cut",
   "prusa_project": "modifier as solid; negative part as solid"
  },
  {
   "tool": "OrcaSlicer",
   "setting": "command line --export-stl",
   "run_by": "script",
   "plain": "OK",
   "inch": "OK",
   "rotated": "OK",
   "scaled": "OK",
   "mirrored": "inside out",
   "multi_object": "OK",
   "components": "OK",
   "bambu_single": "crashes",
   "bambu_saved": "refuses to open",
   "prusa_project": "modifier as solid; negative part as solid"
  },
  {
   "tool": "Blender + 3MF Import/Export",
   "setting": "defaults",
   "run_by": "script",
   "plain": "1000x too small",
   "inch": "1000x too small",
   "rotated": "1000x too small",
   "scaled": "1000x too small",
   "mirrored": "1000x too small",
   "multi_object": "1000x too small",
   "components": "1000x too small",
   "bambu_single": "1000x too small",
   "bambu_saved": "1000x too small",
   "prusa_project": "1000x too small"
  },
  {
   "tool": "lib3mf",
   "setting": "read, then write STL",
   "run_by": "script",
   "plain": "OK",
   "inch": "25.4x too small",
   "rotated": "OK",
   "scaled": "OK",
   "mirrored": "inside out",
   "multi_object": "OK",
   "components": "OK",
   "bambu_single": "OK",
   "bambu_saved": "adds the plate 2 part; modifier as solid; negative part as solid",
   "prusa_project": "modifier as solid; negative part as solid"
  },
  {
   "tool": "Blender + 3MF Import/Export",
   "setting": "Unit Scale 0.001 before import",
   "run_by": "script",
   "plain": "OK",
   "inch": "OK",
   "rotated": "OK",
   "scaled": "OK",
   "mirrored": "OK",
   "multi_object": "OK",
   "components": "OK",
   "bambu_single": "OK",
   "bambu_saved": "adds the plate 2 part; modifier as solid; negative part as solid",
   "prusa_project": "modifier as solid; negative part as solid"
  },
  {
   "tool": "Bambu Studio",
   "setting": "GUI, all objects as one STL, boolean Yes",
   "run_by": "hand",
   "plain": null,
   "inch": null,
   "rotated": null,
   "scaled": null,
   "mirrored": "OK",
   "multi_object": null,
   "components": null,
   "bambu_single": null,
   "bambu_saved": "adds the plate 2 part; hole cut",
   "prusa_project": "OK"
  },
  {
   "tool": "Bambu Studio",
   "setting": "GUI, all objects as one STL, boolean No",
   "run_by": "hand",
   "plain": null,
   "inch": null,
   "rotated": null,
   "scaled": null,
   "mirrored": "OK",
   "multi_object": null,
   "components": null,
   "bambu_single": null,
   "bambu_saved": "adds the plate 2 part; hole not cut",
   "prusa_project": null
  },
  {
   "tool": "Bambu Studio",
   "setting": "GUI, all objects as STLs, boolean Yes",
   "run_by": "hand",
   "plain": null,
   "inch": null,
   "rotated": null,
   "scaled": null,
   "mirrored": null,
   "multi_object": null,
   "components": null,
   "bambu_single": null,
   "bambu_saved": "adds the plate 2 part; hole cut",
   "prusa_project": null
  },
  {
   "tool": "imagetostl.com",
   "setting": "defaults",
   "run_by": "hand",
   "plain": "OK",
   "inch": "OK",
   "rotated": "OK",
   "scaled": "OK",
   "mirrored": "inside out",
   "multi_object": "OK",
   "components": "OK",
   "bambu_single": "OK",
   "bambu_saved": "adds the plate 2 part; hole cut",
   "prusa_project": "modifier as solid; negative part as solid"
  },
  {
   "tool": "meshy.ai",
   "setting": "defaults",
   "run_by": "hand",
   "plain": "OK",
   "inch": "25.4x too small",
   "rotated": "OK (readout)",
   "scaled": "OK (readout)",
   "mirrored": "OK (readout)",
   "multi_object": "OK (readout)",
   "components": "OK (readout)",
   "bambu_single": "OK (readout)",
   "bambu_saved": "modifier, negative and other plates read as solid (readout)",
   "prusa_project": "modifier, negative and other plates read as solid (readout)"
  },
  {
   "tool": "convert3d.org",
   "setting": "defaults",
   "run_by": "hand",
   "plain": "OK",
   "inch": "25.4x too small",
   "rotated": "OK",
   "scaled": "OK",
   "mirrored": "inside out",
   "multi_object": "OK",
   "components": "OK",
   "bambu_single": "OK",
   "bambu_saved": "adds the plate 2 part; modifier as solid; negative part as solid",
   "prusa_project": "modifier as solid; negative part as solid"
  }
 ],
 "project_rows": [
  {
   "case": "bambu-saved",
   "tool": "PrusaSlicer",
   "setting": "command line --export-stl",
   "result": "refuses to open",
   "other_plate_included": null,
   "modifier": null,
   "negative_part": null,
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "trimesh",
   "setting": "load, then export STL",
   "result": "adds the plate 2 part; modifier as solid; negative part as solid",
   "other_plate_included": true,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "Bambu Studio",
   "setting": "command line --export-stl",
   "result": "adds the plate 2 part; hole not cut",
   "other_plate_included": true,
   "modifier": "left out",
   "negative_part": "ignored, no hole",
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "OrcaSlicer",
   "setting": "command line --export-stl",
   "result": "refuses to open",
   "other_plate_included": null,
   "modifier": null,
   "negative_part": null,
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "Blender + 3MF Import/Export",
   "setting": "defaults",
   "result": "1000x too small",
   "other_plate_included": null,
   "modifier": null,
   "negative_part": null,
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "lib3mf",
   "setting": "read, then write STL",
   "result": "adds the plate 2 part; modifier as solid; negative part as solid",
   "other_plate_included": true,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "Blender + 3MF Import/Export",
   "setting": "Unit Scale 0.001 before import",
   "result": "adds the plate 2 part; modifier as solid; negative part as solid",
   "other_plate_included": true,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "Bambu Studio",
   "setting": "GUI, all objects as one STL, boolean Yes",
   "result": "adds the plate 2 part; hole cut",
   "other_plate_included": true,
   "modifier": "left out",
   "negative_part": "hole cut",
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "Bambu Studio",
   "setting": "GUI, all objects as one STL, boolean No",
   "result": "adds the plate 2 part; hole not cut",
   "other_plate_included": true,
   "modifier": "left out",
   "negative_part": "ignored, no hole",
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "Bambu Studio",
   "setting": "GUI, all objects as STLs, boolean Yes",
   "result": "adds the plate 2 part; hole cut",
   "other_plate_included": true,
   "modifier": "left out",
   "negative_part": "hole cut",
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "imagetostl.com",
   "setting": "defaults",
   "result": "adds the plate 2 part; hole cut",
   "other_plate_included": true,
   "modifier": "left out",
   "negative_part": "hole cut",
   "evidence": "stl"
  },
  {
   "case": "bambu-saved",
   "tool": "meshy.ai",
   "setting": "defaults",
   "result": "modifier, negative and other plates read as solid (readout)",
   "other_plate_included": true,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "readout"
  },
  {
   "case": "bambu-saved",
   "tool": "convert3d.org",
   "setting": "defaults",
   "result": "adds the plate 2 part; modifier as solid; negative part as solid",
   "other_plate_included": true,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "PrusaSlicer",
   "setting": "command line --export-stl",
   "result": "hole not cut",
   "other_plate_included": null,
   "modifier": "left out",
   "negative_part": "ignored, no hole",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "trimesh",
   "setting": "load, then export STL",
   "result": "modifier as solid; negative part as solid",
   "other_plate_included": null,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "Bambu Studio",
   "setting": "command line --export-stl",
   "result": "modifier as solid; negative part as solid",
   "other_plate_included": null,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "OrcaSlicer",
   "setting": "command line --export-stl",
   "result": "modifier as solid; negative part as solid",
   "other_plate_included": null,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "Blender + 3MF Import/Export",
   "setting": "defaults",
   "result": "1000x too small",
   "other_plate_included": null,
   "modifier": null,
   "negative_part": null,
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "lib3mf",
   "setting": "read, then write STL",
   "result": "modifier as solid; negative part as solid",
   "other_plate_included": null,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "Blender + 3MF Import/Export",
   "setting": "Unit Scale 0.001 before import",
   "result": "modifier as solid; negative part as solid",
   "other_plate_included": null,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "Bambu Studio",
   "setting": "GUI, all objects as one STL, boolean Yes",
   "result": "OK",
   "other_plate_included": null,
   "modifier": "left out",
   "negative_part": "hole cut",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "imagetostl.com",
   "setting": "defaults",
   "result": "modifier as solid; negative part as solid",
   "other_plate_included": null,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  },
  {
   "case": "prusa-project",
   "tool": "meshy.ai",
   "setting": "defaults",
   "result": "modifier, negative and other plates read as solid (readout)",
   "other_plate_included": null,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "readout"
  },
  {
   "case": "prusa-project",
   "tool": "convert3d.org",
   "setting": "defaults",
   "result": "modifier as solid; negative part as solid",
   "other_plate_included": null,
   "modifier": "as solid",
   "negative_part": "as solid",
   "evidence": "stl"
  }
 ],
 "not_measured_here": [
  "OrcaSlicer's GUI. Its command line gave the same result as Bambu Studio's on every case it could open, which is expected of a fork, so the GUI was not run. Opening the Bambu-saved project in OrcaSlicer 2.4.2's GUI did show a warning worth knowing: the file was made by a newer Bambu Studio (2.8.2.61) than Orca's compatible version (2.6.0.51), and some settings were not recognised. Its command line refuses the same file.",
  "The command line of Bambu Studio and OrcaSlicer is not a reliable stand-in for their GUI. Both crash (exit 0xC0000005) on the single-part file that Bambu Studio's own command line wrote, while Bambu Studio's command line opens the GUI-saved project; and where both ran, the GUI handled modifiers and negative parts that the command line did not. Read the CLI rows as CLI behaviour only.",
  "Bambu Studio's GUI on the generated fixtures other than prusa-project and mirrored. The GUI was run where its command line went wrong or could not run.",
  "meshy.ai beyond three conversions. Anonymous use is capped at three; the remaining cases use the page's own readout of what it parsed, marked as readout in the data.",
  "Colour, multi-material painting, painted supports, seams and print settings. STL has no field for any of them, so every converter drops them by definition; there is nothing to measure.",
  "Real project files downloaded from MakerWorld or Printables. The two Bambu files here were written by Bambu Studio itself and the PrusaSlicer project follows PrusaSlicer's own writer, but none of them is a project with hundreds of thousands of triangles, painted colours and years of format drift behind it."
 ]
}