PartDesign SubShapeBinder

From FreeCAD Documentation

PartDesign SubShapeBinder

Menu location
Part Design → Create a sub-object(s) shape binder
Default shortcut
Introduced in version
See also
PartDesign ShapeBinder, PartDesign Clone


The PartDesign SubShapeBinder tool creates a shape binder referencing geometry from one or more parent objects. A SubShapeBinder is typically used inside a PartDesign Body to reference geometry outside the Body. Using external geometry directly in a Body is not allowed and will lead to out of scope errors. But a SubShapeBinder can also be used without being nested in a Body.

A SubShapeBinder will track the relative placement of the referenced geometry, which is useful in the context of creating assemblies, but on top of that also has its own placement.

The referenced geometry can consist of one or multiple elements. Each element can be an individual object (for example a PartDesign Body), a subobject (for example a Part Box inside a Std Part, or a sketch or Feature inside a Body), or a subelement (a face, edge or vertex). Which geometry should be selected depends on the intended purpose of the SubShapeBinder. For a Boolean operation you would need to select a solid. For a Pad operation a face, a sketch or a planar wire can be used. And for the external geometry in a sketch, or to attach a sketch, any combination of subelements may be appropriate. Elements can belong to different parent objects, and can even belong to the Body the SubShapeBinder is nested in. Because a SubShapeBinder is Link-based the referenced geometry can also belong to an external document.

On the left two solids created in two separate Bodies.
On the right two SubShapeBinders referencing geometry from the first Body, nested in the second Body, and moved to a different position.

The two SubShapeBinders are used to create a Boolean cut and a Pad in the second Body.


Same document

  1. If there are multiple Bodies in the document: optionally activate the Body the SubShapeBinder should be nested in.
  2. Select the required geometry. Subelements can only be selected in the 3D view.
  3. There are several ways to invoke the tool:
    • Press the PartDesign SubShapeBinder button.
    • Select the Part Design → Create a sub-object(s) shape binder option from the menu.
  4. The SubShapeBinder is created.
  5. If there is only one Body in the document the SubShapeBinder is automatically added to it and the Body is activated. If this is the case and the SubShapeBinder should not be nested, it can be dragged out of the Body and dropped onto the document node in the Tree view.

External document

  1. If required open the source document (the external document) and the target document. Both documents must have been saved at least once.
  2. If there are multiple Bodies in the target document: optionally activate the Body the SubShapeBinder should be nested in.
  3. Select the required geometry in the source document. Subelements can only be selected in the 3D view.
  4. Switch to the target document by clicking its tab in the Main view area.
  5. Invoke the tool as described above.

Start with empty SubShapeBinder

  1. Follow the instructions described under Same document above but without selecting geometry.
  2. An empty SubShapeBinder is created.
  3. Select the required geometry. Subelements can only be selected in the 3D view.
  4. In the Tree view drag and drop the selection onto the SubShapeBinder. If you have selected subelements their parent objects are highlighted in the Tree view, indicating the objects to be dragged.
  5. Optionally add more geometry in the same manner.
  6. To replace already referenced geometry hold down Ctrl during the drag and drop operation.


  • 2D offsetting is supported for some shape types, included planar faces, edges and wires. Because offsetting is a difficult operation for the software it does not always succeed. introduced in version 0.20
  • A SubShapeBinder that is not nested in a Body can be used as the Base Feature for a new Body.
  • The DataSupport property contains the links to the referenced geometry. The property is read only by default, but can be changed by following the instructions described under Start with empty SubShapeBinder.
  • A SubShapeBinder created from a sketch can have an opposite "tool direction". For example a Pad created from the sketch may extend in the +Y direction, while a Pad, with the same properties, created from the SubShapeBinder extends in the -Y direction. Toggling the DataReversed property (or checkbox) will solve this.

PartDesign SubShapeBinder vs. PartDesign ShapeBinder

The PartDesign SubShapeBinder tool and the PartDesign ShapeBinder tool are quite similar. Their names are somewhat confusing as both can reference whole objects and subelements.

The main differences are:

  • Editing a PartDesign ShapeBinder is easier. Double-clicking the object in the Tree view will open a task panel.
  • A PartDesign ShapeBinder can either reference a single whole object, or subelements belong to a single parent object. A PartDesign SubShapeBinder does not have these restrictions.
  • Only PartDesign SubShapeBinders can reference geometry from an external file.
  • A PartDesign SubShapeBinder always tracks the relative placement of the referenced geometry. For a PartDesign ShapeBinder this behavior is optional through its DataTrace Support property.
  • Only PartDesign SubShapeBinders support 2D offsetting.

While keeping in mind that each of these tools has its pros and cons and the choice may depend on the use case, one can conclude that using a SubShapeBinder is currently recommended for most applications due to its versatility and range of options. More about these tools can be found in MangoJelly's video FreeCAD For Beginners 34: Part Design Shape Binder vs Sub Shape Binder.


A PartDesign SubShapeBinder object is derived from a Part Feature object and inherits all its properties. It also has the following additional properties:



  • DataSupport (XLinkSubList): support for the geometry.
  • DataFuse (Bool): if it is true it will fuse the solid linked shapes.
  • DataMake Face (Bool): if it is true it will created a face for the linked wires.
  • DataClaim Children (PropertyBool): if it is true it will claim the linked objects as children in the tree view.
  • DataRelative (Bool): if it is true it will enable relative sub-object linking.
  • DataBind Mode (Enumeration): binding mode, Synchronized, Frozen, Detached.
  • DataPartial Load (Bool): if it is true it will enable partial loading of the objects.
  • Data (hidden)Context (XLink): container object of this binder object.
  • DataBind Copy On Change (Enumeration)
  • DataRefine (Bool): if true redundant edges will be removed (for example after a boolean operation). introduced in version 0.20
  • Data (hidden)_ Version (Integer): version of this type of object.
  • Data (hidden)_ Copied Link (XLinkSub)


  • Data (hidden)Body (Matrix): unity matrix of this object.


  • DataOffset: 2D offset to apply. If Offset = 0, then no offset is applied. If Offset < 0, then the offset is applied inward. introduced in version 0.20
  • DataOffset Join Type: Join method of offsetting non-tangent joints. The method can be Arcs, Tangent or Intersection. introduced in version 0.20
  • DataOffset Fill (Bool): If true, a face is made between the new wire and the original wire. See also the DataMake Face property. introduced in version 0.20
  • DataOffset Open Result (Bool): Affects the way open wires are processed. If false, an open wire is made. If true, a closed wire is made from a double-sided offset, with rounds around open vertices. introduced in version 0.20
  • DataOffset Intersection (Bool): Affects the way compounds are processed. If false, all children are processed independently. If true, and children are edges and wires, the children are offset in a collective manner. introduced in version 0.20