In FreeCAD, the Std LinkMake command creates lightweight references (called “Links”) to existing objects. These Links are memory-efficient, update automatically when the original object changes, and are essential for building complex assemblies and reusable components.
Std LinkMake is a powerful feature in FreeCAD that creates a Link (a reference) to an existing object instead of duplicating its geometry. Links are lightweight, memory-efficient, and update automatically when the original object changes.
creates an App Link (App::Link
class), a type of object that references or links to another object in the same document, or in another document. It is especially designed to efficiently duplicate a single object multiple times, which helps with the creation of complex assemblies from smaller subassemblies, and from multiple reusable components like screws, nuts, and similar fasteners.
🛠️ What is Std LinkMake and When to Use It?
An App::Link is an object that references another object without duplicating its geometric data. This makes it ideal for several scenarios-1:
Creating Assemblies: Perfect for reusing standard parts like screws and nuts multiple times without significantly increasing memory usage.
Building Arrays and Patterns: Links work efficiently with tools like Draft Array or PartDesign PolarPattern to create linear or circular patterns of an object (e.g., bolts on a flange or columns in a building).
Cross-Document Referencing: You can link to an object in a different FreeCAD file, which is excellent for modular design and team collaboration.
Non-Destructive Workflows: If you modify the original “source” object, all Linked instances update automatically.
📝 How to Create a Link
You can create a Link through FreeCAD’s graphical interface or via Python scripting.
Graphical User Interface (GUI) Method
Select an Object: In the Model Tree or the 3D View, click on the object you want to link.
Create the Link:
Go to the menu: Std → LinkMake.
Alternatively, click the Make link button in the toolbar.
A new object, with a small arrow icon in the tree view, will appear. This is your Link.
You can also create an empty Link without a pre-selected object and later set its Linked Object property in the Property Editor.
💡 Practical Usage and Key Properties
Once a Link is created, you can customize its appearance and placement independently from the original object.
Transformation: Each Link can have its own Placement (position and rotation) and even a different Scale factor. This allows you to position multiple instances of the same part arbitrarily in 3D space.
Cross-Document Assembly: To assemble parts from multiple files:
Open your part files and a new assembly file.
In the assembly file’s 3D view, select a part in the model tree of its original document and create a Link. The Link will be placed in your assembly document.
Use the “Transform” function (right-click on the Link in the tree) to move and rotate the part into its correct position-2.
Use Cases for Std LinkMake in FreeCAD-:
Creating Arrays & Patterns
Use with Draft Array or PartDesign PolarPattern for efficient duplication.
Example: Bolts in a flange, repeated columns in architecture.
Assemblies
Reuse the same part (e.g., screws, nuts) multiple times without memory bloat.
Referencing External Files
Link objects from another FreeCAD file (useful for modular designs).
Non-Destructive Editing
Modify the original, and all linked instances update automatically.
How to Create a Std LinkMake in FreeCAD-:
GUI Method-:
Select an object in the Model Tree or 3D View.
Click Menu → Std → LinkMake (or press the Link button in the toolbar).
A new
Link
object appears in the tree (indicated by a small arrow icon ➔).
Python Console Method-:
import FreeCAD as App
doc = App.ActiveDocument
obj = doc.MyObject # Original object
link = doc.addObject("App::Link", "MyLink")
link.LinkedObject = obj # Set the linked object
doc.recompute()
Key Features of Std LinkMake in FreeCAD-:
✔ Parametric: Changes to the original propagate to all linked copies.
✔ Memory Efficient: Links reuse geometry data instead of duplicating it.
✔ Transformable: Each link can have its own placement (position, rotation, scale).
✔ Supports Arrays & Assemblies: Useful for patterns (e.g., bolts in a circular pattern).
✔ Works Across Documents: Links can reference objects in other .FCStd
files.
Link Properties & Customization-:
In the Property Editor, a Link has:
Linked Object: The source object being referenced.
Placement: Adjust position, rotation, and scale independently.
Show Element: If the source is a compound (e.g., a Part container), you can select which sub-shape to display.
Link Transform: Apply scaling/rotation relative to the original.
How to use Std LinkMake in FreeCAD-:
With selection:
- Select an object in the tree view or 3D view for which you wish to create a Link.
- Press the
Make link button. The produced object has the same icon as the original object, but has an arrow overlay indicating it is a Link.
Without selection:
- If no object is selected, press the
Make link button to create an empty
Link.
- Go to the property editor, then click on the Linked Object property to open the Link selection dialog to choose an object, then press OK.
- Instead of choosing an entire object in the tree view, you can also pick subelements (vertices, edges, or faces) of a single object in the 3D view. In this case, the Link will duplicate only these subelements, and the arrow overlay will be different. This can also be done with
Std LinkMakeRelative.
Use Cases for Std LinkMake in FreeCAD-:
Link vs. Clone vs. Simple Copy
Feature | Link | Clone | Simple Copy |
---|---|---|---|
Parametric | ✅ Yes | ✅ Yes | ❌ No |
Memory Usage | ⚡ Low | ⚡ Low | 🟡 Medium |
Editable Placement | ✅ Yes | ✅ Yes | ❌ No (fixed) |
Cross-Document | ✅ Yes | ❌ No | ❌ No |
Shape Modification | ❌ No* | ✅ Yes** | ✅ Yes |
*Links cannot modify the original geometry but can apply transforms (scale/rotate).
**Clones can apply modifiers (e.g., Part Offset) while staying parametric.
Limitations & Troubleshooting of Std LinkMake in FreeCAD-:
⚠ Circular References: Avoid linking objects in a loop (FreeCAD may crash).
⚠ Broken Links: If the source object is deleted, the link becomes invalid.
⚠ Performance: Too many links in complex assemblies may slow down rendering.
“Thank you for reading! If you found this article insightful and valuable, consider sharing it with your friends and followers on social media. Your share can help others discover this content too. Let’s spread knowledge together. Your support is greatly appreciated!”