BomItems are now created for every BOM item regardless of whether they
produce a DXF. Sheet metal cut data (thickness, k-factor, bend radius,
DXF path, content hash) moved to a new CutTemplate entity with a 1:1
optional relationship. Non-sheet-metal items are counted as "skipped"
instead of "failed" in the export summary. Added Cut Templates tab to
the UI with a DataGridView for viewing cut template records.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove CutFab API references and document the current architecture:
local file export, SQL Server tracking, and .NET 8.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sets CommandInProgress to block user interaction with SolidWorks
while the DXF export is running, preventing accidental interference.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove CutFabApiClient and DrawingSelectionForm - exports no longer
depend on an external API server. DXF/PDF files are saved directly
to a configurable output folder, and export records are persisted
to a local SQL Server database via EF Core.
Replace Color-based progress logging with LogLevel enum across all
services. Redesign MainForm with equipment/drawing filter dropdowns
populated from export history, log row coloring by severity, and
simplified startup flow in Program.cs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add EF Core DbContext with ExportRecord and BomItem entities for
tracking export history locally. Add FileExportService for saving
DXF and PDF files to a configurable output folder.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert from .NET Framework 4.8 legacy csproj to .NET 8 SDK-style.
Add ComHelper class for COM Running Object Table access, replacing
Marshal.GetActiveObject which is not available in .NET Core.
Add EF Core and System.Configuration.ConfigurationManager packages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update service container to asynchronously connect to SolidWorks before showing DrawingSelectionForm:
- Convert ResolveDrawingSelection to async method
- Attempt SolidWorks connection and handle failures gracefully
- Show warning dialog if connection fails but allow user to continue
- Pass SolidWorksService instance to DrawingSelectionForm
This enables the active drawing display feature while maintaining robustness when SolidWorks is unavailable.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add real-time display of the currently active SolidWorks document:
- Show active drawing name with visual status indicators
- Display different states: drawing (green), non-drawing (orange), none (gray), error (red)
- Subscribe to ActiveDocumentChanged events for live updates
- Inject ISolidWorksService dependency for document access
This helps users verify they're working with the correct drawing before export.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Make form wider (584x315) for better content display
- Add anchor properties to controls for responsive resizing
- Adjust control positions and spacing for improved layout
- Update MainForm tab sizes to match new dimensions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove TestDocs/ directory and add to .gitignore. Test files can be maintained locally without bloating the repository history.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Refactored MainForm to work with pre-selected drawing ID and number. Added PDF viewer control, enhanced BOM item management with sheet metal properties, and improved UI layout for drawing-specific operations.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Modified Program.cs to display DrawingSelectionForm at startup before launching MainForm. The selected drawing ID and number are now passed to MainForm constructor.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added DrawingSelectionForm to allow users to select equipment and drawing at application startup, replacing the previous workflow where drawing selection happened within the main form.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added GetBomItemsForDrawingAsync and GetCutTemplatesAsync methods to fetch BOM items with sheet metal properties and cut template data from the API.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added BomItem model with sheet metal properties (thickness, k-factor, bend radius) and LogEvent model for structured logging with action tracking.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed BomExcelExporter service, BomExcelSettings class, BomTemplate.xlsx template, and EPPlus package dependency. This functionality is being replaced with direct API integration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add /organize-commits slash command for logical commit organization
- Add AGENTS.md with repository guidelines and workflows
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add defaultBendRadius and material parameters to UploadDxfZipAsync
- Pass bend radius and material from BOM items to API
- Enables more complete sheet metal specification in CutFab
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enhanced DXF export to send thickness and kfactor properties from SolidWorks
to the CutFab API, and ensures all BOM items are uploaded regardless of whether
they have DXF files.
Changes:
- Modified UploadDxfZipAsync to accept and send thickness/kfactor parameters
- Updated DxfExportService to extract thickness/kfactor from Item and pass to API
- Refactored BOM item creation to happen for all items, not just those with DXF files
- This ensures purchased parts, hardware, and other non-sheet-metal items are uploaded
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Submodule EtchBendLines:
> 89d987f - Refactor Main method to separate responsibilities and improve readability
> 78ae737 - Refactor Etcher.AddEtchLines into discrete steps and helpers
> 2391eb7 - Format Bend.ToString() with 2dp and “?” placeholders for nulls
> dd7443d - Moved GetEtchLines to Etcher class
> e5daf74 - Extract IsBendLine helper to clean up BendLineExtractor
> 7740120 - bendNoteRegex tweaks
> 214cc94 - Culture-safe parsing
- Export to temp directory and auto-upload PDF/DXF
- Resolve or create drawing via API using selected Equipment ID
- Upload DXFs per-part and create BOM items
- Attempt auto-linking of templates after export
- Add EquipmentId to ExportContext