
Description
Use whenever a task involves parametric CAD in FreeCAD — modeling parts and assemblies, editing object properties, technical drawings, importing/exporting STEP/STL/OBJ/DXF, PDF/Excel reports from a model, or finite-element (FEM/CalculiX) analysis. Requires a running FreeCAD instance with the FreeCADMCP addon (see Prerequisite).
SKILL.md
You build parametric CAD content in FreeCAD by creating/editing document objects and, when needed, writing Python — against a running FreeCAD instance.
Prerequisite: a live FreeCAD + addon (started for you on first use)
These tools are a thin client: they talk XML-RPC to a running FreeCAD carrying the FreeCADMCP addon (bundled in this plugin), and do not launch FreeCAD while serving. Normally you start nothing — just call a tool.
- Default (plugin install):
QWEN_MM_AUTOLAUNCH=1is preset, so the first tool call brings FreeCAD up itself: it auto-installs the pinned FreeCAD 1.1.x if missing (Linux-x86_64, rootless, FUSE-free AppImage, ~1 GB one-time), copies the bundled addon into your FreeCAD Mod dir, and starts it on$FREECAD_RPC_HOST:$FREECAD_RPC_PORT(defaultlocalhost:9875). Just call a tool such asget_objects; the first call may take a couple of minutes while it downloads (expected), later calls are instant. - Don't shell out to
qwen-mm-plugins-freecad --launch-appunder a plugin install — that console entry lives inside the uvx environment, not your shell PATH (command not found). Use it only from a source checkout, or for a manual / GUI start:python3 src/capabilities/freecad/qwen_mm_plugins_freecad --launch-app # headless (xvfb) python3 src/capabilities/freecad/qwen_mm_plugins_freecad --launch-app --gui # real display
Auto-launch can't cover a few things: (1) auto-download is Linux-x86_64 only — elsewhere install
FreeCAD yourself (apt install freecad, or extract an AppImage and set FREECAD_BINARY=<AppRun>);
(2) a headless box needs a virtual display (apt install xvfb, needs root); (3) FEM needs the
CalculiX solver (ccx) on PATH. If a tool reports it can't connect, it's almost always one of the
first two — the error message spells out which; from a checkout, ... --check-system lists every
missing system tool. Set FREECAD_ONLY_TEXT_FEEDBACK=1 to drop the screenshot most tools attach.
Asset creation strategy
When creating content in FreeCAD, follow these steps:
- Before starting any task, always use
get_objectsto confirm the current state of the document (andlist_documents/create_documentas needed). - Utilize the parts library: check available parts with
get_parts_list; if the required part exists, useinsert_part_from_libraryto insert it. - If the part isn't in the library: create basic shapes (
Part::Box,Part::Cylinder,Part::Sphere,Draft::*,PartDesign::*, …) withcreate_object, then refine detailed properties withedit_object. - Always assign clear, descriptive names to objects.
- Explicitly set position, scale, and rotation (Placement) via
create_object/edit_objectto ensure correct spatial relationships. - After editing an object, verify the properties actually applied using
get_object. - For detailed customization or specialized operations, use
execute_codeto run custom Python.
Only fall back to basic creation methods when: the asset isn't in the parts library, a basic shape is explicitly requested, or a complex shape requires custom scripting.
execute_code vs execute_code_async
execute_coderuns on FreeCAD's GUI thread — the safe default for anything that touches documents, document objects,FreeCADGui, the active view, selection,recompute(), or save.execute_code_asyncruns in a background thread — ONLY for long, pure OCCT/CPU computations that do NOT touch the GUI or the document tree. Pattern: fetch shapes withexecute_code, stash intermediates in a module-level Python variable, run the heavy compute async, then apply results back viaexecute_code.
Visual verification
Use get_view (Isometric/Front/Top/…) to inspect geometry, and re-check with get_object after edits. Most mutating tools already return a screenshot unless FREECAD_ONLY_TEXT_FEEDBACK is set.
FEM (finite-element) analysis
run_fem_analysis runs the CalculiX solver on a Fem::AnalysisPython container. Prerequisites in the document: a solid geometry, a Fem::MaterialCommon, a Fem::FemMeshGmsh referencing the geometry, and at least one Fem::ConstraintFixed + one Fem::ConstraintForce/ConstraintPressure — all added to the analysis (create them via create_object). CalculiX (ccx) must be installed. Returns max von Mises stress, max/min displacement, and node count.
Output files
Save the final .FCStd and any generated outputs (images, PDFs, Excel, STEP/STL/OBJ/DXF exports) to the exports/ directory unless the task specifies otherwise.
More skills from the Qwen-MM-Plugins repository
View all 5 skillsqwen-mm-plugins-blender
build and edit 3D scenes in Blender
Aug 53DAnimationCreativeDesignqwen-mm-plugins-core
analyze and visualize multimodal files
Aug 5Data AnalysisLLMMCPMultimodalqwen-mm-plugins-edu-agent
generate math problem solving tutorial videos
Aug 5Content CreationEducationMathematicsVideoqwen-mm-plugins-video-memory
analyze long form video content
Aug 5AnalysisMultimodalVideo
More from Qwen
View publisherbatch
execute parallel batch operations on files
qwen-code
Jul 20AutomationConcurrencycua-driver-rs
drive native GUI applications via MCP
qwen-code
Jul 16AccessibilityBrowser AutomationDesktopMCPdataviz
design and validate data visualizations
qwen-code
Jul 16ChartsDashboardsData Visualizationextension-creator
create Qwen Code extensions
qwen-code
Jul 16CodingDocumentationPlugin Developmentloop
run scheduled or self-paced prompt loops
qwen-code
Jul 16AutomationProductivitySchedulingnew-app
build new applications from scratch
qwen-code
Jul 16EngineeringPrototypingWeb Development