FreeCAD Body vs Part: What Is the Difference?
In FreeCAD, understanding the distinction between a Body and a Part container is fundamental to building clean, manageable 3D models. While both act as organizational containers in the tree view, they serve entirely different purposes: a Body is a specialized tool within the PartDesign Workbench intended to generate a single, contiguous solid through a sequential modeling history, whereas a Part container is a generic assembly tool used to group, move, and organize multiple independent shapes, bodies, or components.
What Is a Body Container?
A Body (represented as PartDesign::Body) is the core
building block of the PartDesign Workbench. Its primary rules and
characteristics include:
- Single Solid Principle: A Body is strictly designed to represent a single, continuous piece of material. Disjoint or disconnected solids are generally not permitted at the conclusion of a feature step.
- Sequential Feature Tree: Modeling inside a Body relies on an additive and subtractive workflow (such as Pad, Pocket, Revolution, and Fillet). Each feature modifies the previous geometry sequentially, tracking a specific "Tip" feature that displays the current final state.
- Local Origin: Every Body contains its own internal coordinate system (Origin), including base planes (XY, XZ, YZ) and axes (X, Y, Z), which act as reference geometry for its sketches and datum tools.
- Real-World Equivalent: A Body represents a single component manufactured from a single piece of stock material, such as a cast bracket, a machined bolt, or a 3D-printed clip.
What Is a Part Container?
A Part container (represented as App::Part or
Std_Part) is an assembly-level container used across
various FreeCAD workbenches. Its primary characteristics include:
- Multi-Object Grouping: A Part container can hold virtually any FreeCAD object, including multiple Bodies, Part Workbench primitives (like cylinders and boxes), sketches, meshes, or even other nested Part containers.
- Disjoint Geometry: Objects inside a Part container do not merge into a single solid. They maintain their own independent shapes, topologies, and feature trees.
- Spatial Transformation: A Part container has its own Placement property. Moving or rotating the Part container moves all of its contents together, making it ideal for creating assemblies and sub-assemblies.
- Real-World Equivalent: A Part container represents an assembly or sub-assembly made of distinct components, such as a hinge made of two plates and a pin.
Key Differences at a Glance
| Feature | Body (PartDesign::Body) |
Part Container
(App::Part) |
|---|---|---|
| Primary Workbench | PartDesign | Part, Assembly, General System |
| Geometry Requirement | Single, contiguous solid | Multiple disjoint objects allowed |
| Workflow | Sequential history (Additive/Subtractive) | Hierarchical grouping (Assembly) |
| Hierarchy Rules | Cannot contain another Body or Part | Can contain multiple Bodies and Parts |
| Typical Use Case | Designing an individual part | Assembling multiple parts together |
How to Use Them Together
The recommended workflow in FreeCAD is to design individual components inside separate Body containers. Once the individual components are modeled, you place them inside a Part container to define their spatial relationships and manage them as a unified assembly.