How to Edit a 3MF File Without Losing Its Plates and Settings

Published 2026-10-22

You downloaded a 3MF, and something about it needs to change. The file is not just a model: it is someone’s whole slicer session, zipped. We built one Bambu Studio project with a known answer for every part of it, opened and saved it in four programs, and read Bambu Studio’s source code for the one feature built for exactly this job.

Two kinds of “edit”

People asking how to edit a 3MF usually mean one of two things, and they need different tools:

You want to changeWhere it lives in the 3MFEdit it in
Printer, filament, layer height, infill, supports, which plate a part is onBambu’s own settings files inside the zipThe slicer that made the file
The shape of a partThe meshA modeller, then back through Replace with STL

A 3MF from a slicer is a zip. The shape is in the part of it the 3MF standard defines. Plates, modifiers, per-object settings and painting are in files the slicer adds for itself, such as Metadata/model_settings.config in a Bambu project. 3MF vs STL explains the two kinds of 3MF. Here, the practical point is that a program which does not understand those extra files cannot keep what is in them.

What we tested

The test file is a real Bambu Studio 02.08.02.61 project, built and saved in its own app: a box with a modifier and a negative part (a hole) on plate 1, and a second object on plate 2. We added four things in the form Bambu writes them:

  • an object setting: 40% infill on the plate 2 object;
  • a modifier setting: 80% infill inside the modifier;
  • support painting on the box’s top face (two triangles);
  • seam painting on one triangle of a side.

Then we had Bambu Studio open and re-save it, and used only that re-saved file, so every one of those is something Bambu itself wrote and reads. Colour painting is missing, because adding a second filament through Bambu Studio’s command line crashed it. Colour paint is stored the same way as the other two, as a mark on each triangle.

Each program then opened the file and saved it twice: once unchanged, and once after scaling everything to 110%. We unzipped every result and checked each item against the original.

What survived

ProgramOpened itPlatesModifier and negative partObject and modifier settingsSupport and seam paintingPrinter and filament profile
Bambu Studio 02.08.02.61Yes2, as beforeKeptKeptKeptKept
OrcaSlicer 2.4.2Refused
PrusaSlicer 2.9.6Refused
Blender 5.2.2 + 3MF extension 2.7.7Yes1, both objects on itKeptKeptLostPrinter kept; filament list went from 1 entry to 3

The 110% versions behaved the same as the unchanged ones in every program, and both programs that wrote a file applied the scale.

OrcaSlicer refused twice, for two different reasons. Its command line compares its own version number with the version of the Bambu Studio that saved the file. Its log said “File Version 2.8.2.61 not supported by current cli version 2.4.2”, although those are two different programs. With the switch that skips that check turned on, it then rejected two settings Bambu had written as -1, among them tree_support_wall_count, as out of range. OrcaSlicer’s app is the usual way people open Bambu projects, and it is more forgiving: in our 3MF to STL test it opened an earlier version of this project with a warning about a newer Bambu Studio and unrecognised settings. What it keeps after saving was not tested here.

PrusaSlicer refused with “Error (Invalid 3MF format)”. Line 24 of the file is where the box’s negative part is attached, the structure PrusaSlicer does not accept. It is the same refusal we documented when converting 3MF to STL, and the fix is the same: in Bambu Studio, use Export Generic 3MF for anyone on another slicer, and expect the file to carry geometry only.

Blender kept more than we expected. The 3MF Import/Export extension (version 2.7.7) writes Bambu’s own settings files, so the modifier, the negative part and both infill settings came back in the right places. But the two plates became one, with both objects on it, and the plate 2 object was renamed “3MF Object”. All three painted triangles were gone. Bambu Studio’s command line crashed when it opened either Blender file, so we could not confirm that Bambu reads them back.

Changing the shape: Replace with STL

Re-saving the project in a modeller is the route that loses things. Bambu Studio and OrcaSlicer have a feature built for this: right-click a part, choose Replace with STL, and pick the edited mesh. We read what it does in Bambu Studio’s source code at the version we tested, rather than operating the app.

What it keeps from the old part:

  • its settings, such as the 80% infill on a modifier;
  • its type: a modifier stays a modifier, a negative part stays a hole;
  • its filament, its position, rotation and scale, and any unit conversion;
  • everything outside that one part: other parts, the object’s settings, its plate.

What to know before you use it:

  • The new file must contain exactly one mesh. Otherwise it stops with “Unable to replace with more than one volume”.
  • Position comes from the old part. The new mesh is centred and put where the old part was, with the old part’s rotation and scale applied to it. Keep the edited part at its original size and orientation, and export only that part. If you need the part as an STL to start from, our 3MF to STL converter exports a project one plate at a time in the browser, leaving modifiers out.
  • Painting is copied by triangle number. This is the catch.

Why your paint ends up in the wrong place

Bambu Studio stores painting as a mark on each numbered triangle of the mesh. Replace with STL copies those marks over by number. An edited mesh numbers its triangles differently, so the marks land on whichever faces now carry those numbers.

We checked what that means on our test file. Its support painting covers triangles 2 and 3, the box’s top face, 400 mm² each. We gave the same box a 1 mm rounded edge in Blender and exported it as STL. The mesh grew from 12 triangles to 108, and triangles 2 and 3 are now two slivers at a bottom corner, 0.15 and 0.14 mm². So the 800 mm² of support paint would be copied onto 0.29 mm² at a corner.

The source code also covers the opposite case. If any painted triangle number is higher than the new mesh’s triangle count, the whole of that paint is discarded when the project loads. Either way, repaint after replacing, and look the part over before printing: our pre-print checklist covers what an edited mesh most often gets wrong.

Two related behaviours, also from the source code:

  • OrcaSlicer 2.4.2 can do better, if you ask. Its preferences have “Keep painted feature after mesh change”, which moves paint onto the new mesh by position. The app describes it as “Highly experimental! Slow and may create artifact.” It is off until you tick it. When it is off, Orca copies by triangle number like Bambu, under a code comment that says it “Won’t work well if mesh changed”.
  • Reload from disk drops painting entirely. It keeps settings, type and position like Replace with STL, but copies no paint. It also looks for the part’s original file, which a downloaded project usually does not have on your computer.

What the other programs cannot keep

We did not test Fusion, SolidWorks, Tinkercad or online 3MF editors. One thing holds for any program: plates, modifiers and per-object settings live in the slicer’s own files inside the zip. A program that does not write those files back cannot keep them, however well it handles the mesh. For anything that is not your slicer, assume you get the shape back and nothing else, and use Replace with STL to put the shape into the original project.

Before you edit, look inside

A 3MF is an ordinary zip. Copy it, rename the copy to .zip, and open it:

  • 3D/3dmodel.model and anything in 3D/Objects/ hold the meshes.
  • Metadata/model_settings.config (Bambu and Orca) or Metadata/Slic3r_PE_model.config (PrusaSlicer) hold the objects, parts, plates and per-object settings.
  • Metadata/project_settings.config or Metadata/Slic3r_PE.config hold the printer, filament and print profiles.

If the settings files are there, the file is a project and everything above applies. If only 3D/3dmodel.model is there, it is a plain model: there are no plates or slicer settings to lose. 3MF to STL goes through the same contents from the conversion side.

Method

The test file and the four additions are described above. Bambu Studio and OrcaSlicer were run through their command lines with arranging and auto-orienting turned off, PrusaSlicer through its console command line, and Blender headless with the extension’s own import and export. Each result was unzipped and read with one script, which checks plates, part types, the two infill values, paint marks and profile names. The Replace with STL, Reload from disk and OrcaSlicer findings come from reading the source code at the versions named, with line references in the data file. The test file is published at /data/measurements/edit-3mf-fixtures/bambu-edit-test.3mf.

The raw output is published as JSON, produced by scripts/measure-edit-3mf.py.

Frequently asked questions

Can a 3MF file be edited?

Yes, but what survives depends on the program. A 3MF from a slicer is a project: plates, modifiers, per-object settings, painting and printer profiles, all in one zip. In our test only Bambu Studio, the program that wrote the file, kept all of that through an open and save. Change settings in the slicer that made the file, and change shape with Replace with STL rather than by re-saving the project elsewhere.

What program can edit 3MF files?

For print settings, the slicer that made the file: Bambu Studio for a Bambu project, PrusaSlicer for a Prusa one. For shape, any modeller that exports STL, combined with the slicer's Replace with STL. Blender with the 3MF Import/Export extension can save a Bambu style 3MF and kept modifiers and settings in our test, but it put both plates' objects on one plate and dropped all painting.

Why does my 3MF lose its settings after editing?

Because the settings are not in the 3MF standard. Bambu Studio keeps plates, modifiers and per-object settings in its own files inside the zip, Metadata/model_settings.config and Metadata/project_settings.config. A program that does not read and write those files cannot carry them, whatever it does with the geometry.

Does Replace with STL keep painting?

It copies the painting, but by triangle number, not by position. Bambu Studio's source code copies support, seam, fuzzy skin and colour paint from the old part to the new mesh triangle for triangle. After even a small edit those numbers belong to different faces: in our example, paint covering an 800 mm² top face ended up on 0.29 mm² at a corner. Expect to repaint.

Can PrusaSlicer open a Bambu Studio 3MF?

Not a project with a modifier or negative part. PrusaSlicer 2.9.6 stopped with "Error (Invalid 3MF format)" on our test file. Use Export Generic 3MF in Bambu Studio for a file that other programs can read, and expect it to carry geometry only.