Copy QuickNav and ZTools source trees into reference/ for developer reference during the UI/UX rework. These are plain directories (not submodules) and are not included in the build. - reference/quicknav/ — QuickNav addon source - reference/ztools/ — ZTools addon source Part of the UI/UX rework preparation. See #346.
13 KiB
ZTools Roadmap
Version: 0.3.0
Last Updated: 2026-01-25
Target Platform: FreeCAD 1.0+
License: LGPL-3.0-or-later
Executive Summary
ZTools is an extended PartDesign workbench replacement for FreeCAD, focused on velocity-driven CAD workflows. It integrates enhanced datum creation, assembly patterning, spreadsheet formatting, and a unified dark theme (Catppuccin Mocha).
Current State: 80% complete for v1.0 release
Active Development Areas: Datum management, Enhanced Pocket completion, documentation
Table of Contents
- Implemented Features
- Known Gaps & Incomplete Features
- FreeCAD Ecosystem Alignment
- Development Roadmap
- Technical Architecture
- File Reference
Implemented Features
1. Workbench Integration (17 Toolbars)
ZTools consolidates multiple FreeCAD workbenches into a single unified interface:
| Category | Toolbars | Commands |
|---|---|---|
| PartDesign | Structure, Datums, Additive, Subtractive, Transformations, Dress-Up, Boolean | 35+ native commands |
| Sketcher | Sketcher | 4 native commands |
| Assembly | Assembly, Assembly Joints, Assembly Management | 21 native commands |
| Spreadsheet | Spreadsheet | 6 native commands |
| ZTools Custom | ztools Datums, ztools Patterns, ztools Features, ztools Assembly, ztools Spreadsheet | 14 custom commands |
2. Datum Creation System (16 Functions)
Custom Attachment System - Replaces FreeCAD's unreliable vanilla attachment:
- Calculates placement directly from source geometry
- Stores source references in
ZTools_SourceRefs(JSON) - Uses
MapMode='Deactivated'to prevent interference - Stores creation parameters in
ZTools_Paramsfor recalculation
Datum Planes (7 modes)
| Mode | Function | Parameters |
|---|---|---|
| Offset from Face | plane_offset_from_face() |
distance (mm) |
| Offset from Plane | plane_offset_from_plane() |
distance (mm) |
| Midplane | plane_midplane() |
2 parallel faces |
| 3 Points | plane_from_3_points() |
3 vertices |
| Normal to Edge | plane_normal_to_edge() |
parameter (0.0-1.0) |
| Angled | plane_angled() |
angle (degrees) |
| Tangent to Cylinder | plane_tangent_to_cylinder() |
angle (degrees) |
Datum Axes (4 modes)
| Mode | Function | Parameters |
|---|---|---|
| 2 Points | axis_from_2_points() |
2 vertices |
| From Edge | axis_from_edge() |
linear edge |
| Cylinder Center | axis_cylinder_center() |
cylindrical face |
| Plane Intersection | axis_intersection_planes() |
2 planes |
Datum Points (5 modes)
| Mode | Function | Parameters |
|---|---|---|
| At Vertex | point_at_vertex() |
vertex |
| XYZ Coordinates | point_at_coordinates() |
x, y, z |
| On Edge | point_on_edge() |
parameter (0.0-1.0) |
| Face Center | point_center_of_face() |
face |
| Circle Center | point_center_of_circle() |
circular edge |
Datum Creator GUI:
- Auto-detection of 15+ creation modes based on selection
- Manual mode override
- Spreadsheet linking option
- Custom naming
- Real-time selection observer
3. Pattern Tools (3 Commands)
| Command | Description | Status |
|---|---|---|
ZTools_RotatedLinearPattern |
Linear pattern with incremental rotation per instance | Complete |
ZTools_AssemblyLinearPattern |
Pattern assembly components linearly | Complete |
ZTools_AssemblyPolarPattern |
Pattern assembly components around axis | Complete |
Assembly Pattern Features:
- Multi-component selection via table UI
- Creates as Links (recommended) or copies
- Direction/axis presets or custom vectors
- Spacing modes: Total Length or Fixed Spacing
- Angle modes: Full Circle or Custom Angle
- Auto-detects parent assembly container
4. Spreadsheet Formatting (9 Commands)
| Command | Description | Status |
|---|---|---|
ZTools_SpreadsheetStyleBold |
Toggle bold | Complete |
ZTools_SpreadsheetStyleItalic |
Toggle italic | Complete |
ZTools_SpreadsheetStyleUnderline |
Toggle underline | Complete |
ZTools_SpreadsheetAlignLeft |
Left align | Complete |
ZTools_SpreadsheetAlignCenter |
Center align | Complete |
ZTools_SpreadsheetAlignRight |
Right align | Complete |
ZTools_SpreadsheetBgColor |
Background color picker | Complete |
ZTools_SpreadsheetTextColor |
Text color picker | Complete |
ZTools_SpreadsheetQuickAlias |
Auto-create alias from label | Complete |
5. Enhanced Features
| Command | Description | Status |
|---|---|---|
ZTools_EnhancedPocket |
Pocket with "Flip Side to Cut" (SOLIDWORKS-style) | 90% Complete |
Flip Side to Cut: Removes material OUTSIDE the sketch profile instead of inside, using Boolean Common operation.
6. Theme System (Catppuccin Mocha)
- Complete Qt StyleSheet (QSS) for entire FreeCAD interface
- 26-color palette consistently applied
- 50+ widget types styled
- FreeCAD-specific widgets: PropertyEditor, Python Console, Spreadsheet
- Spreadsheet colors auto-applied on workbench activation
7. Icon System (33 Icons)
All icons use Catppuccin Mocha palette:
- Workbench icon
- Datum icons (planes, axes, points - 13 total)
- Pattern icons (3 total)
- Pocket icons (2 total)
- Assembly pattern icons (2 total)
- Spreadsheet formatting icons (9 total)
Known Gaps & Incomplete Features
Critical (Must Fix)
| Issue | Location | Description | Priority |
|---|---|---|---|
| Datum Manager stub | datum_commands.py:853 |
Placeholder only - needs full implementation | High |
| Datum edit recalculation | datum_viewprovider.py:351,355,359 |
Parameter changes don't recalculate placement from source geometry | High |
Non-Critical (Should Fix)
| Issue | Location | Description | Priority |
|---|---|---|---|
| Enhanced Pocket incomplete | pocket_commands.py |
Taper angle disabled for flipped pockets | Medium |
| Pocket execution logic | pocket_commands.py |
UI complete but execution needs verification | Medium |
Future Enhancements (Nice to Have)
| Feature | Description | Priority |
|---|---|---|
| Curve-driven pattern | Sweep instances along spline | Low |
| Fill pattern | Populate region with instances | Low |
| Variable spacing pattern | Non-uniform spacing | Low |
| Enhanced Pad | Multi-body support, draft angles | Low |
| Body operations | Split, combine, shell improvements | Low |
FreeCAD Ecosystem Alignment
FreeCAD 1.0 (November 2024) - Current Target
Key Features ZTools Leverages:
- TNP Mitigation: Topological Naming Problem largely resolved
- Integrated Assembly Workbench: Ondsel's assembly system now core
- Material System Overhaul: New material handling
- UI/UX Improvements: Dark/light themes, selection filters
ZTools Alignment:
- Custom attachment system complements TNP fix
- Full integration with native Assembly workbench
- Catppuccin theme extends FreeCAD's theming
FreeCAD 1.1 (Expected Late 2025)
Planned Features:
- New Transform Manipulator
- UI Material Rendering Improvements
- Continued TNP refinement for Sketcher/PartDesign
ZTools Opportunities:
- Watch for new Assembly API standardization
- Monitor Sketcher improvements for datum integration
FreeCAD Strategic Priorities (from Roadmap)
| FreeCAD Priority | ZTools Alignment |
|---|---|
| Model Stability | Custom attachment system prevents fragile models |
| Assembly Integration | Full native Assembly command exposure |
| Flatten Learning Curve | Unified toolbar consolidation |
| UI Modernization | Catppuccin Mocha theme |
| Streamlined Workflow | Quick formatting toolbars, auto-detection |
Ondsel Contributions (Note: Ondsel shut down October 2025)
Ondsel's contributions now maintained by FreeCAD community:
- Assembly workbench (ZTools integrates)
- VarSets custom properties (potential future integration)
- Sketcher improvements
Development Roadmap
Phase 1: v0.3.x - Stability & Completion (Current)
Timeline: Q1 2026
| Task | Status | Priority |
|---|---|---|
| Complete Datum Manager GUI | Not Started | High |
| Implement datum parameter recalculation | Not Started | High |
| Verify Enhanced Pocket execution | Partial | Medium |
| Add comprehensive test coverage | Not Started | Medium |
| Documentation completion | In Progress | Medium |
Phase 2: v0.4.0 - Polish & UX
Timeline: Q2 2026
| Task | Description |
|---|---|
| Keyboard shortcuts | Add hotkeys for common operations |
| Context menus | Right-click menus in 3D view |
| Undo/redo improvements | Better transaction naming |
| Error handling | User-friendly error messages |
| Preferences panel | ZTools configuration UI |
Phase 3: v0.5.0 - Advanced Features
Timeline: Q3 2026
| Task | Description |
|---|---|
| Curve-driven pattern | Pattern along splines |
| Enhanced Pad | Draft angles, lip/groove |
| Body operations | Split, combine, shell |
| Datum freeze/update | Control source geometry updates |
Phase 4: v1.0.0 - Production Release
Timeline: Q4 2026
| Task | Description |
|---|---|
| Full test suite | Automated testing |
| User documentation | Complete user guide |
| Video tutorials | Getting started series |
| FreeCAD Addon Manager | Official listing |
Technical Architecture
Directory Structure
ztools/
├── Init.py # Startup (non-GUI)
├── InitGui.py # Workbench registration
└── ztools/
├── __init__.py
├── commands/ # GUI commands
│ ├── __init__.py
│ ├── datum_commands.py # Datum Creator/Manager
│ ├── datum_viewprovider.py # Custom ViewProvider
│ ├── pattern_commands.py # Rotated Linear Pattern
│ ├── pocket_commands.py # Enhanced Pocket
│ ├── assembly_pattern_commands.py # Assembly patterns
│ └── spreadsheet_commands.py # Spreadsheet formatting
├── datums/ # Core datum library
│ ├── __init__.py
│ └── core.py # 16 datum functions
└── resources/ # Assets
├── __init__.py
├── icons.py # 33 SVG icons
├── theme.py # Catppuccin QSS
└── icons/ # Generated SVG files
Key Design Patterns
- Command Pattern: All tools follow FreeCAD's
GetResources(),Activated(),IsActive()pattern - Task Panel Pattern: Complex UIs use
QWidgetwith selection observers - Feature Python Pattern: Custom features use
Part::FeaturePythonwith ViewProvider - Metadata System: JSON properties for tracking ZTools objects
Metadata Properties
All ZTools objects have:
ZTools_Type: Feature type identifierZTools_Params: JSON creation parametersZTools_SourceRefs: JSON source geometry references
File Reference
| File | Purpose | Lines |
|---|---|---|
InitGui.py |
Workbench registration, toolbars, menus | ~330 |
datums/core.py |
16 datum creation functions | ~1300 |
commands/datum_commands.py |
Datum Creator/Manager GUI | ~520 |
commands/datum_viewprovider.py |
Custom ViewProvider, edit panel | ~400 |
commands/pattern_commands.py |
Rotated Linear Pattern | ~206 |
commands/pocket_commands.py |
Enhanced Pocket | ~600 |
commands/assembly_pattern_commands.py |
Assembly patterns | ~580 |
commands/spreadsheet_commands.py |
Spreadsheet formatting | ~480 |
resources/icons.py |
33 SVG icon definitions | ~540 |
resources/theme.py |
Catppuccin Mocha QSS | ~1500 |
Total: ~6,400+ lines of code
Statistics Summary
| Category | Count |
|---|---|
| Command Files | 6 |
| Command Classes | 24+ |
| Datum Creation Functions | 16 |
| Icons Defined | 33 |
| Toolbars Registered | 17 |
| Menu Hierarchies | 7 major |
| Native Commands Exposed | 66 |
| Custom ZTools Commands | 14 |
| Theme Colors | 26 |
| Styled Widget Types | 50+ |
Contributing
ZTools follows FreeCAD's contribution guidelines. Key areas needing help:
- Testing: Manual testing on different platforms
- Documentation: User guides and tutorials
- Translations: Internationalization support
- Bug Reports: Issue tracking and reproduction
License
LGPL-3.0-or-later
Compatible with FreeCAD's licensing model.
Changelog
v0.3.0 (2026-01-25)
- Added zSpreadsheet module with 9 formatting commands
- Added Spreadsheet workbench integration (6 native commands)
- Added 9 spreadsheet formatting icons
v0.2.0 (2026-01-25)
- Added Assembly workbench integration (21 native commands)
- Added Assembly Linear Pattern tool
- Added Assembly Polar Pattern tool
- Added assembly pattern icons
v0.1.0 (2026-01-24)
- Initial release
- Custom attachment system for datums
- 16 datum creation functions
- Datum Creator GUI with auto-detection
- Rotated Linear Pattern
- Enhanced Pocket (partial)
- Catppuccin Mocha theme
- 21 initial icons