From 35ac0fb3f826544c4266787ffbb3c78a3fcc3a30 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Thu, 30 Oct 2025 17:29:56 -0400 Subject: [PATCH] feat(api): add sheet metal properties to DXF upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- ExportDXF/Services/CutFabApiClient.cs | 15 +++++++++++++-- ExportDXF/Services/DxfExportService.cs | 6 ++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ExportDXF/Services/CutFabApiClient.cs b/ExportDXF/Services/CutFabApiClient.cs index 3b14cd5..48320db 100644 --- a/ExportDXF/Services/CutFabApiClient.cs +++ b/ExportDXF/Services/CutFabApiClient.cs @@ -18,7 +18,13 @@ namespace ExportDXF.Services Task CreateDrawingAsync(int equipmentId, string drawingNumber); Task> CreateDrawingWithInfoAsync(int equipmentId, string drawingNumber); Task UploadDrawingPdfAsync(string drawingNumber, string pdfPath, string uploadedBy = null, string notes = null); - Task UploadDxfZipAsync(int drawingId, string zipPath, double? thickness = null, double? kfactor = null); + Task UploadDxfZipAsync( + int drawingId, + string zipPath, + double? thickness = null, + double? kfactor = null, + double? defaultBendRadius = null, + string material = null); Task CreateBomItemAsync(object upsertBomItemDto); Task AutoLinkTemplatesAsync(int drawingId); Task> GetEquipmentAsync(); @@ -162,7 +168,7 @@ namespace ExportDXF.Services } } - public async Task UploadDxfZipAsync(int drawingId, string zipPath, double? thickness = null, double? kfactor = null) + public async Task UploadDxfZipAsync(int drawingId, string zipPath, double? thickness = null, double? kfactor = null, double? defaultBendRadius = null, string material = null) { if (!File.Exists(zipPath)) return false; using (var form = new MultipartFormDataContent()) @@ -177,6 +183,11 @@ namespace ExportDXF.Services form.Add(new StringContent(thickness.Value.ToString(System.Globalization.CultureInfo.InvariantCulture)), "thickness"); if (kfactor.HasValue) form.Add(new StringContent(kfactor.Value.ToString(System.Globalization.CultureInfo.InvariantCulture)), "kfactor"); + // Add default bend radius and material if provided + if (defaultBendRadius.HasValue) + form.Add(new StringContent(defaultBendRadius.Value.ToString(System.Globalization.CultureInfo.InvariantCulture)), "defaultBendRadius"); + if (!string.IsNullOrWhiteSpace(material)) + form.Add(new StringContent(material), "material"); var resp = await _http.PostAsync($"{_baseUrl}/api/Drawings/{drawingId}/upload-dxf-templates", form).ConfigureAwait(false); return resp.IsSuccessStatusCode; diff --git a/ExportDXF/Services/DxfExportService.cs b/ExportDXF/Services/DxfExportService.cs index eec4e29..409f342 100644 --- a/ExportDXF/Services/DxfExportService.cs +++ b/ExportDXF/Services/DxfExportService.cs @@ -387,10 +387,12 @@ namespace ExportDXF.Services string zipPath = CreateZipWithSingleFile(dxfPath); try { - // Pass thickness and kfactor from the item + // Pass thickness, kfactor, default bend radius and material from the item double? thickness = item.Thickness > 0 ? item.Thickness : (double?)null; double? kfactor = item.KFactor > 0 ? item.KFactor : (double?)null; - var okZip = _apiClient.UploadDxfZipAsync(drawingId.Value, zipPath, thickness, kfactor).GetAwaiter().GetResult(); + double? defaultBendRadius = item.BendRadius > 0 ? item.BendRadius : (double?)null; + string material = string.IsNullOrWhiteSpace(item.Material) ? null : item.Material; + var okZip = _apiClient.UploadDxfZipAsync(drawingId.Value, zipPath, thickness, kfactor, defaultBendRadius, material).GetAwaiter().GetResult(); LogProgress(context, okZip ? $"Uploaded DXF: {Path.GetFileName(dxfPath)}" : $"Failed to upload DXF: {Path.GetFileName(dxfPath)}", okZip ? Color.Green : Color.Red); } finally