* chore: rename workbench to FreecadRobustMCPBridge * fix: stdio cleanup and bug fix for JSON RPC * fix: update FreeCAD MCP bridge and tests * test: Fix GUI Integration tests and other issues * fix: unit tests in CI and a few other things * docs: generate GitHub pages site and link to it. * fix: General code improvements and DRY refactoring * chore: General cleanup * chore: small fixes * docs: cleanup * docs: fixes * docs: small corrections * docs: fix * test: release check * bump: workbench v0.6.0 * chore: bump macros to 0.6.0 * docs: Release improvements * refactor: improve DRYness of code
4.8 KiB
FreeCAD Macros
This project includes standalone FreeCAD macros that work independently of the MCP server, plus MCP tools for creating and managing macros programmatically.
Included Macros
CutObjectForMagnets
Cut an object along a plane and add aligned magnet holes with surface collision detection. Perfect for creating 3D printed parts that snap together with embedded magnets.
Features:
- Interactive plane selection via GUI
- Automatic magnet hole placement with configurable grid
- Surface collision detection to avoid invalid hole positions
- Configurable magnet dimensions and tolerances
Usage:
- Select an object in FreeCAD
- Run the macro
- Define the cutting plane interactively
- Configure magnet parameters
- The macro creates two halves with aligned magnet holes
See CutObjectForMagnets documentation for detailed usage.
MultiExport
Export selected bodies to multiple file formats simultaneously with configurable mesh options.
Supported Formats:
- STL (ASCII and Binary)
- STEP
- 3MF
- OBJ
- IGES
- BREP
- PLY
- AMF
Usage:
- Select one or more bodies/parts
- Run the macro
- Select output formats and configure mesh options
- Choose output directory
- All exports are created with consistent naming
See MultiExport documentation for detailed usage.
Installing Macros
Via FreeCAD Addon Manager
When you install the "FreeCAD Robust MCP Suite" addon, the macros are installed automatically.
Manual Installation
- Download macros from GitHub Releases
- Copy
.FCMacrofiles to your macro directory:- Linux:
~/.local/share/FreeCAD/Macro/ - macOS:
~/Library/Application Support/FreeCAD/Macro/ - Windows:
%APPDATA%\FreeCAD\Macro\
- Linux:
MCP Macro Tools
The MCP server provides tools for working with macros programmatically:
list_macros
List available macros in FreeCAD's macro directories.
list_macros() -> list[dict]
Returns: List of macros with name, path, description, and whether it's a system macro.
run_macro
Execute a macro by name with optional arguments.
run_macro(
macro_name: str,
args: dict | None = None
) -> dict
Example prompt:
"Run the MultiExport macro"
create_macro
Create a new macro programmatically.
create_macro(
name: str,
code: str,
description: str = ""
) -> dict
Example prompt:
"Create a macro called 'CreateBox' that makes a 10x10x10 box"
read_macro
Read the source code of an existing macro.
read_macro(macro_name: str) -> dict
Example prompt:
"Show me the code for the MultiExport macro"
delete_macro
Delete a user macro (system macros are protected).
delete_macro(macro_name: str) -> dict
create_macro_from_template
Create a macro from predefined templates.
create_macro_from_template(
name: str,
template: str = "basic",
description: str = ""
) -> dict
Available templates:
| Template | Description |
|---|---|
basic |
Minimal macro with imports |
part |
Part workbench operations |
sketch |
Sketcher operations |
gui |
GUI/dialog template |
selection |
Selection handling template |
Example prompt:
"Create a new macro from the 'sketch' template called 'DrawGear'"
Macro Development with AI
The MCP server excels at helping develop FreeCAD macros. Example workflows:
Debugging an Existing Macro
"Read the macro 'MyMacro' and explain what it does"
"Run the macro and show me any errors from the FreeCAD console"
Creating a New Macro
"Create a macro that:
1. Gets all selected objects
2. Calculates their combined bounding box
3. Creates a box around them with 5mm clearance"
Modifying a Macro
"Read the 'ExportSTL' macro and modify it to also export STEP files"
Best Practices for Macro Development
- Use templates - Start from
create_macro_from_templatefor proper imports - Test incrementally - Use
execute_pythonfor testing snippets before creating full macros - Check console output - Use
get_console_outputto debug issues - Document your macros - Add docstrings that explain parameters and usage
- Handle errors gracefully - Wrap operations in try/except blocks
Next Steps
- Tools Reference - Complete API for all MCP tools
- Workbench - Robust MCP Bridge Workbench details