A Reddit post asking about converting solid bodies to individual part files got 77 upvotes. The top comment pointed to Insert → Features → Save Bodies — and multiple replies said they’d never heard of it despite years of SolidWorks use. CSWP holders included.
This is not a niche feature. It’s the correct way to extract individual part files from a multi-body part, and it does things that Insert into New Part and manual workflows cannot match.
What Save Bodies does
Insert → Features → Save Bodies takes every body in a multi-body part — or a selection of bodies — and creates individual .sldprt files from them. It does this in a single dialog, with one operation, and maintains a parametric link between the parent multi-body part and each derived child file.
The derived part files update automatically when the parent changes. Add a hole to a body in the parent, Save Bodies runs on rebuild, and the corresponding child part reflects that hole without you touching it.
This is categorically different from the two alternatives most engineers use:
- Insert into New Part — breaks the link after the initial creation. The derived file becomes independent. Future changes to the parent require manual re-derivation.
- Right-click → Insert into New Part from FeatureManager — same problem, plus it doesn’t propagate custom properties by default.
- File → Save As — saves the whole multi-body part as a single file, not separate parts.
How to use it
Step 1: Build your multi-body part normally. Design the bodies as you normally would. Feature-based multi-body design (Boss Extrude, Sheet Metal, Sweep, etc.) works fine. Imported solid bodies also work.
Step 2: Open the Save Bodies PropertyManager.
Insert → Features → Save Bodies
The dialog has three sections:
- Bodies to Save — lists all bodies in the part. Check or uncheck each one.
- File names — each body gets a proposed filename based on the body name in FeatureManager. Edit these here.
- Link — a checkbox per body. When checked, the saved file remains parametrically linked to the parent. When unchecked, the child becomes independent. Leave this checked for production workflows.
Step 3: Set destination path. Click Browse or type a path. All bodies go into the same directory by default. You can control individual paths by clicking the folder icon next to each body row.
Step 4: Click OK. SolidWorks creates the files and adds a Save Bodies feature to the FeatureManager. This feature is what maintains the links — don’t suppress or delete it unless you intend to break the parametric relationship.
Custom property propagation
By default, the derived child files inherit the custom properties from the parent part file. This is the behavior most people want: if the parent has Material, Finish, PartNumber, and Thickness defined as custom properties, every derived child starts with those values.
You can override properties per-body by editing the Save Bodies feature after creation:
- Right-click the Save Bodies feature in FeatureManager → Edit Feature
- Select a body row in the dialog
- Click Edit to open a mini properties pane
- Override specific property values for that body
This is how you set body-specific values — for example, when two bodies in the same parent have different materials:
Parent: Material = "304 Stainless"
Body A: Material = "304 Stainless" (inherited)
Body B: Material = "6061 Aluminum" (overridden in Save Bodies dialog)
The overrides live inside the Save Bodies feature, so they survive parent rebuilds. The parent’s custom properties don’t clobber the per-body overrides once you’ve set them.
Body naming matters here. SolidWorks uses the FeatureManager body name — not the geometry description, not an auto-generated name — as the default filename and as the identifying reference in the Save Bodies feature. Rename your bodies in FeatureManager before running Save Bodies. Double-click a body under the Solid Bodies folder to rename it. Names like Bracket_Left, Panel_Base_3mm, Gusset_A are far more useful than the default Boss-Extrude1[1].
Where it’s useful
Multi-body sheet metal assemblies. Design a laser-cut bracket set as a single multi-body part — shared reference sketches, one file to manage, configurations that affect all bodies at once. Save Bodies extracts each body as an independent sheet metal part with its own flat pattern. If you’ve ever spent time maintaining a folder of individual sheet metal parts that all reference the same master sketch, this eliminates that folder.
Electrical panel layouts. Panel cutouts, mounting brackets, and DIN rail clips can all live as bodies in one file. Save Bodies creates the individual parts the BOM and DXF pipeline expect, without requiring you to maintain separate files that drift out of sync.
Weldment profiles extracted for machining. Weldment members are structural bodies. After Save Bodies, each member is an individual part file with the weldment cut list properties (LENGTH, QTY, material) carried through as custom properties. The machinist gets a set of named files, not a single weldment that requires interpretation.
Mirror sets. A bracket with a mirrored partner: model one, Mirror Body, then Save Bodies with the convention Bracket_LH.sldprt and Bracket_RH.sldprt. The mirrored body stays live — change the parent geometry and both handed versions rebuild.
The VBA macro approach
For shops that do this regularly, the IFeatureManager.InsertSaveBody API method automates the process without opening the dialog. The C# COM add-in version:
// Get the multi-body part document
IModelDoc2 doc = (IModelDoc2)swApp.ActiveDoc;
IPartDoc part = (IPartDoc)doc;
// Get all bodies
object[] bodies = (object[])part.GetBodies2((int)swBodyType_e.swAllBodies, true);
string outputDir = @"C:\Parts\Extracted\";
IFeatureManager featureMgr = doc.FeatureManager;
foreach (IBody2 body in bodies)
{
string bodyName = body.Name;
string outputPath = System.IO.Path.Combine(outputDir, bodyName + ".sldprt");
// Select the body
ISelectData selData = ((ISelectionMgr)doc.SelectionManager).CreateSelectData();
body.Select2(false, selData);
// Save to file — this creates a derived part with parametric link
featureMgr.InsertSaveBody(outputPath);
// Clear selection before next iteration
doc.ClearSelection2(true);
}
The API creates a separate Save Bodies feature per body when called in a loop like this. If you want a single feature managing all bodies, you need to build the selection set before calling the API. The dialog-based workflow does this automatically and is easier to reason about for occasional use; the API is the right choice when you’re generating derived parts programmatically in a batch pipeline.
After Save Bodies: batch DXF export
The derived part files are standard .sldprt files. Once they exist, every normal batch export workflow applies to them.
For sheet metal bodies, each derived part has its own flat pattern feature. The SolidWorks batch DXF export via macro vs add-in comparison covers the tradeoffs for exporting those flat patterns at scale. The short version: macros work but fail on suppressed features and missing references; an add-in handles those edge cases at the cost of distribution complexity.
For non-sheet-metal bodies, the derived parts are solid bodies that can be exported as DXF via the face-selection export path — select the flat face, File → Save As → DXF. This is the correct approach for laser-cut gears, plates, and brackets that don’t use sheet metal features, as described in when not to use sheet metal features for flat laser-cut parts.
CadShift handles both cases in batch: it traverses an assembly or folder of part files, detects flat pattern availability per body, and exports DXF with the correct entity settings, layer mapping, and file naming from custom properties. The derived parts from Save Bodies feed directly into that pipeline — the custom property propagation from the parent means each exported DXF already has the right Material, Thickness, and PartNumber embedded in its layer metadata.
What it doesn’t do
No configuration split. Save Bodies cannot create separate parts per configuration. If your multi-body part has three configurations that suppress different bodies, you get one set of derived parts reflecting the active configuration at the time you run Save Bodies. Designing a configuration-based split requires separate multi-body parts or a more involved macro.
No sub-assembly structure. The derived parts are individual flat files. Save Bodies does not create a SolidWorks assembly that links them together. If you need an assembly for mating and interference checking, you build that separately and insert the derived parts into it.
Reference geometry stays in parent. Planes, axes, and coordinate systems from the parent part are not copied into the derived files. If the derived parts need reference geometry for downstream operations, you add it to the derived parts directly after extraction.
For the multi-body DXF export problem specifically — where the Export Flat Patterns checkbox is greyed out for multi-body sheet metal parts — Save Bodies is the canonical fix. Extract first, batch export second. The dialog workflow takes two minutes. The alternative is a macro that reimplements the extraction logic, which is more code for the same result.