# FreeCAD | FreeCAD | Knowledge Base | Instagit

Official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler.

GitHub Stars: 29.8k

Repository: https://github.com/FreeCAD/FreeCAD

---

## Articles

### [How to Implement Custom Selection Filters in FreeCAD Using the SoFCSelection Gate](/FreeCAD/FreeCAD/how-to-implement-custom-selection-filters-freecad-sofcsselection-gate)

Learn how to implement custom selection filters in FreeCAD with the SoFCSelection gate. Discover how to control object selection and enhance your workflow effectively.

- Tags: how-to-guide
- Published: 2026-03-28

### [Understanding FreeCAD's .FCStd File Format and Serialization System](/FreeCAD/FreeCAD/understanding-freecad-file-format-fcstd-serialization-system)

Learn about FreeCAD's FCStd file format. Discover how FreeCAD uses ZIP archives and XML metadata with the App::ProjectFile class for efficient document serialization and storage.

- Tags: internals
- Published: 2026-03-28

### [How to Use FreeCAD's PropertyExpressionEngine for Spreadsheet-Driven Models](/FreeCAD/FreeCAD/how-to-use-freecad-propertyexpressionengine-spreadsheet-models)

Master FreeCAD's PropertyExpressionEngine to create spreadsheet-driven parametric models. Link properties to expressions for automatic updates when your source data changes.

- Tags: how-to-guide
- Published: 2026-03-28

### [Understanding FreeCAD's ElementMap for Tracking Geometry Element Changes](/FreeCAD/FreeCAD/understanding-freecad-elementmap-tracking-geometry-changes)

Learn how FreeCAD's ElementMap tracks geometry element changes using kernel indices and user-defined names for persistent parametric modeling.

- Tags: internals
- Published: 2026-03-28

### [How FreeCAD's DynamicProperty System Enables Runtime Property Addition](/FreeCAD/FreeCAD/how-freecad-dynamicproperty-system-runtime-property-addition)

Discover how FreeCAD's DynamicProperty system enables runtime property addition for objects inheriting from App::PropertyContainer. Learn to create, modify, and remove properties dynamically during program execution.

- Tags: internals
- Published: 2026-03-28

### [Creating Custom Parametric Features in FreeCAD's PartDesign Workbench Using Python](/FreeCAD/FreeCAD/creating-custom-parametric-features-freecad-partdesign-python)

Learn to create custom parametric features in FreeCAD PartDesign using Python. Extend FreeCAD by building your own Python-based parametric objects.

- Tags: how-to-guide
- Published: 2026-03-28

### [How FreeCAD Handles Document Recovery and Backup Using BackupPolicy](/FreeCAD/FreeCAD/how-freecad-handles-document-recovery-backup-backuppolicy)

Learn how FreeCAD's BackupPolicy manages document recovery and backups. Discover automatic timestamped or numeric backups for safe, easy restoration and prevent data loss.

- Tags: internals
- Published: 2026-03-28

### [Understanding FreeCAD's Undo/Redo Infrastructure with AutoTransaction](/FreeCAD/FreeCAD/understanding-freecad-undoredo-infrastructure-autotransaction)

Explore FreeCAD's AutoTransaction class to automatically manage document transactions and ensure robust undo redo functionality within the FreeCAD codebase.

- Tags: internals
- Published: 2026-03-28

### [How to Create Custom Draft Tools in FreeCAD Using GuiTrackers and GuiSnapper](/FreeCAD/FreeCAD/how-to-create-custom-draft-tools-freecad-gui-trackers-snapper)

Learn to create custom Draft tools in FreeCAD. Explore GuiTrackers for visual previews and GuiSnapper for geometric snapping to enhance your workflow. Get started today.

- Tags: how-to-guide
- Published: 2026-03-28

### [FreeCAD Mesh-to-CAD Workflow: A Complete Guide to the Reverse Engineering Workbench](/FreeCAD/FreeCAD/freecad-mesh-to-cad-workflow-reverseengineering-module)

Master FreeCAD's mesh-to-CAD workflow. Convert mesh data to parametric CAD models using the Reverse Engineering workbench. Learn point cloud ingestion, surface reconstruction, and fitting techniques.

- Tags: how-to-guide
- Published: 2026-03-28

### [How to Implement Custom Parametric Constraints in FreeCAD Sketcher: A Complete Developer Guide](/FreeCAD/FreeCAD/how-to-implement-custom-parametric-constraints-freecad-sketcher)

Learn to implement custom parametric constraints in FreeCAD Sketcher. Drive constraint values dynamically using setConstraintExpression API for powerful, flexible modeling.

- Tags: how-to-guide
- Published: 2026-03-28

### [Understanding FreeCAD's Coin3D Scene Graph and SoFCOffscreenRenderer: A Complete Guide](/FreeCAD/FreeCAD/understanding-freecad-coin3d-scenegraph-sofc-offscreenrenderer)

Master FreeCAD's Coin3D scene graph and SoFCOffscreenRenderer for leak-free off-screen image capture with Qt integration and metadata support. Learn how.

- Tags: deep-dive
- Published: 2026-03-28

### [How FreeCAD Integrates with OpenCASCADE for B‑REP Geometry Operations](/FreeCAD/FreeCAD/how-freecad-integrates-opencascade-brep-geometry-operations)

Discover how FreeCAD utilizes OpenCASCADE for robust B-REP geometry operations. Learn about the C++ wrapper layer and its role in translating FreeCAD's data to OpenCASCADE shapes and back.

- Tags: how-to-guide
- Published: 2026-03-28

### [Understanding FreeCAD's Command System for Creating GUI Commands: A Developer's Guide](/FreeCAD/FreeCAD/understanding-freecad-command-system-create-gui-commands)

Learn FreeCADs command system for GUI commands. Discover how this registry-based architecture supports C++ and Python, enabling macro recording and undo redo functionality for developers.

- Tags: developer-guide
- Published: 2026-03-28

### [How to Use FreeCAD’s ExtensionContainer for Plugin-Like Functionality](/FreeCAD/FreeCAD/how-to-use-freecad-extensioncontainer-add-plugin-functionality)

Leverage FreeCAD's ExtensionContainer to add plugin-like extensions to DocumentObjects. Enhance functionality with custom properties and methods without altering source code.

- Tags: how-to-guide
- Published: 2026-03-28

### [How to Create Custom ViewProviders in FreeCAD to Control 3D Object Visualization](/FreeCAD/FreeCAD/create-custom-viewproviders-freecad-3d-view-visualization)

Learn to create custom ViewProviders in FreeCAD to control 3D object visualization. Subclass Gui::ViewProvider to build Coin3D scene graphs and customize selection and display.

- Tags: how-to-guide
- Published: 2026-03-28

### [FreeCAD DocumentObject and Document Architecture: Core App Module Design](/FreeCAD/FreeCAD/freecad-documentobject-document-architecture-structure)

Explore FreeCAD's document architecture, focusing on App::Document and App::DocumentObject. Learn how the DAG system manages recomputes, undo/redo, and persistence in the src/App module.

- Tags: architecture
- Published: 2026-03-28

### [Understanding FreeCAD's Link System for Parametric Assemblies and Object References](/FreeCAD/FreeCAD/understanding-freecad-link-system-assemblies-object-references)

Master FreeCAD's Link system for parametric assemblies. Learn how proxy objects reference external geometry supporting flexible transformations and Copy-On-Change for efficient design.

- Tags: deep-dive
- Published: 2026-03-28

### [How FreeCAD's Expression Engine Parses and Evaluates Parametric Formulas](/FreeCAD/FreeCAD/how-does-freecad-expression-engine-parse-evaluate-formulas)

Discover how FreeCAD's expression engine parses and evaluates parametric formulas using Flex/Bison and Python for efficient dependency tracking and automatic recomputation.

- Tags: internals
- Published: 2026-03-28

### [How to Create Python Scripted Objects with FeaturePython Extensions in FreeCAD: A Complete Developer Guide](/FreeCAD/FreeCAD/how-to-create-python-scripted-objects-featurepython-extensions)

Learn to create Python scripted objects in FreeCAD using FeaturePython extensions. This guide covers custom geometry, properties, and view providers without source recompilation.

- Tags: how-to-guide
- Published: 2026-03-28

### [Understanding FreeCAD's Property System and PropertyData Structure](/FreeCAD/FreeCAD/understanding-freecad-property-system-propertydata-structure)

Explore FreeCAD's powerful Property system and PropertyData structure. Learn how it manages object attributes with O(1) lookup, inheritance, and runtime extension for efficient CAD development.

- Tags: deep-dive
- Published: 2026-03-28

### [How to Create Custom Workbenches in FreeCAD Using InitGui.py](/FreeCAD/FreeCAD/how-to-create-custom-workbenches-freecad-initgui-py)

Learn to create custom FreeCAD workbenches using InitGui.py. Implement Gui.Workbench, define attributes, import commands, and register your workbench for an enhanced workflow.

- Tags: how-to-guide
- Published: 2026-03-28

### [How FreeCAD's Transaction System Powers Undo/Redo Operations](/FreeCAD/FreeCAD/how-does-freecad-transaction-system-work-undo-redo)

Discover how FreeCAD's transaction system enables robust undo/redo operations. Learn about atomic transactions and object records that manage changes efficiently.

- Tags: internals
- Published: 2026-03-28

