From d6ffd8efc9896ddb4e680e81b548353ee744126d Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Wed, 1 Apr 2026 00:01:10 -0400 Subject: [PATCH] refactor: move lead-in buttons from plates tab to menubar Move Assign/Place/Remove Lead-ins from EditNestForm toolstrip to the Plate menu in the main menubar. Add nest-wide Assign/Remove Lead-ins to the Nest menu for applying to all plates at once. Co-Authored-By: Claude Opus 4.6 (1M context) --- OpenNest/Forms/EditNestForm.Designer.cs | 38 +------------- OpenNest/Forms/EditNestForm.cs | 55 ++++++++++++++++++-- OpenNest/Forms/MainForm.Designer.cs | 67 +++++++++++++++++++++++-- OpenNest/Forms/MainForm.cs | 30 +++++++++++ 4 files changed, 146 insertions(+), 44 deletions(-) diff --git a/OpenNest/Forms/EditNestForm.Designer.cs b/OpenNest/Forms/EditNestForm.Designer.cs index 9cf6600..18ea433 100644 --- a/OpenNest/Forms/EditNestForm.Designer.cs +++ b/OpenNest/Forms/EditNestForm.Designer.cs @@ -38,9 +38,6 @@ this.qtyColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.toolStrip1 = new System.Windows.Forms.ToolStrip(); this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); - this.btnAssignLeadIns = new System.Windows.Forms.ToolStripButton(); - this.btnPlaceLeadIn = new System.Windows.Forms.ToolStripButton(); - this.btnRemoveLeadIns = new System.Windows.Forms.ToolStripButton(); this.tabPage2 = new System.Windows.Forms.TabPage(); this.drawingListBox1 = new OpenNest.Controls.DrawingListBox(); this.toolStrip2 = new System.Windows.Forms.ToolStrip(); @@ -136,10 +133,7 @@ this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.toolStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripButton1, - this.btnAssignLeadIns, - this.btnPlaceLeadIn, - this.btnRemoveLeadIns}); + this.toolStripButton1}); this.toolStrip1.Location = new System.Drawing.Point(3, 3); this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.Size = new System.Drawing.Size(227, 31); @@ -158,33 +152,6 @@ this.toolStripButton1.Text = "Calculate Cut Time"; this.toolStripButton1.Click += new System.EventHandler(this.CalculateSelectedPlateCutTime_Click); // - // btnAssignLeadIns - // - this.btnAssignLeadIns.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.btnAssignLeadIns.ImageTransparentColor = System.Drawing.Color.Magenta; - this.btnAssignLeadIns.Name = "btnAssignLeadIns"; - this.btnAssignLeadIns.Size = new System.Drawing.Size(96, 28); - this.btnAssignLeadIns.Text = "Assign Lead-ins"; - this.btnAssignLeadIns.Click += new System.EventHandler(this.AssignLeadIns_Click); - // - // btnPlaceLeadIn - // - this.btnPlaceLeadIn.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.btnPlaceLeadIn.ImageTransparentColor = System.Drawing.Color.Magenta; - this.btnPlaceLeadIn.Name = "btnPlaceLeadIn"; - this.btnPlaceLeadIn.Size = new System.Drawing.Size(90, 28); - this.btnPlaceLeadIn.Text = "Place Lead-in"; - this.btnPlaceLeadIn.Click += new System.EventHandler(this.PlaceLeadIn_Click); - // - // btnRemoveLeadIns - // - this.btnRemoveLeadIns.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.btnRemoveLeadIns.ImageTransparentColor = System.Drawing.Color.Magenta; - this.btnRemoveLeadIns.Name = "btnRemoveLeadIns"; - this.btnRemoveLeadIns.Size = new System.Drawing.Size(104, 28); - this.btnRemoveLeadIns.Text = "Remove Lead-ins"; - this.btnRemoveLeadIns.Click += new System.EventHandler(this.RemoveLeadIns_Click); - // // tabPage2 // this.tabPage2.Controls.Add(this.drawingListBox1); @@ -299,8 +266,5 @@ private System.Windows.Forms.ToolStripButton toolStripButton2; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripButton toolStripButton3; - private System.Windows.Forms.ToolStripButton btnAssignLeadIns; - private System.Windows.Forms.ToolStripButton btnPlaceLeadIn; - private System.Windows.Forms.ToolStripButton btnRemoveLeadIns; } } \ No newline at end of file diff --git a/OpenNest/Forms/EditNestForm.cs b/OpenNest/Forms/EditNestForm.cs index 3a56df9..3d25efb 100644 --- a/OpenNest/Forms/EditNestForm.cs +++ b/OpenNest/Forms/EditNestForm.cs @@ -718,7 +718,7 @@ namespace OpenNest.Forms CalculateCurrentPlateCutTime(); } - private void AssignLeadIns_Click(object sender, EventArgs e) + public void AssignLeadIns_Click(object sender, EventArgs e) { if (PlateView?.Plate == null) return; @@ -747,7 +747,7 @@ namespace OpenNest.Forms PlateView.Invalidate(); } - private void RemoveLeadIns_Click(object sender, EventArgs e) + public void RemoveLeadIns_Click(object sender, EventArgs e) { if (PlateView?.Plate == null) return; @@ -779,7 +779,56 @@ namespace OpenNest.Forms PlateView.Invalidate(); } - private void PlaceLeadIn_Click(object sender, EventArgs e) + public void AssignLeadInsAllPlates() + { + if (Nest == null) + return; + + using var form = new CuttingParametersForm(); + if (form.ShowDialog(this) != DialogResult.OK) + return; + + var parameters = form.BuildParameters(); + var assigner = new LeadInAssigner + { + Sequencer = new LeftSideSequencer() + }; + + foreach (var plate in Nest.Plates) + { + plate.CuttingParameters = parameters; + assigner.Assign(plate); + } + + PlateView.Invalidate(); + } + + public void RemoveLeadInsAllPlates() + { + if (Nest == null) + return; + + foreach (var plate in Nest.Plates) + { + foreach (var part in plate.Parts) + { + if (part.HasManualLeadIns) + part.RemoveLeadIns(); + } + + plate.CuttingParameters = null; + } + + foreach (var lp in PlateView.Parts) + { + lp.IsDirty = true; + lp.Update(); + } + + PlateView.Invalidate(); + } + + public void PlaceLeadIn_Click(object sender, EventArgs e) { if (PlateView?.Plate == null) return; diff --git a/OpenNest/Forms/MainForm.Designer.cs b/OpenNest/Forms/MainForm.Designer.cs index 74a261b..e1e7a33 100644 --- a/OpenNest/Forms/MainForm.Designer.cs +++ b/OpenNest/Forms/MainForm.Designer.cs @@ -98,6 +98,9 @@ mnuNestPost = new System.Windows.Forms.ToolStripMenuItem(); toolStripMenuItem19 = new System.Windows.Forms.ToolStripSeparator(); calculateCutTimeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + toolStripMenuItem22 = new System.Windows.Forms.ToolStripSeparator(); + mnuNestAssignLeadIns = new System.Windows.Forms.ToolStripMenuItem(); + mnuNestRemoveLeadIns = new System.Windows.Forms.ToolStripMenuItem(); mnuPlate = new System.Windows.Forms.ToolStripMenuItem(); mnuPlateEdit = new System.Windows.Forms.ToolStripMenuItem(); mnuPlateSetAsDefault = new System.Windows.Forms.ToolStripMenuItem(); @@ -120,6 +123,10 @@ calculateCutTimeToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); centerPartsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); mnuPlateCutOff = new System.Windows.Forms.ToolStripMenuItem(); + toolStripMenuItem21 = new System.Windows.Forms.ToolStripSeparator(); + mnuPlateAssignLeadIns = new System.Windows.Forms.ToolStripMenuItem(); + mnuPlatePlaceLeadIn = new System.Windows.Forms.ToolStripMenuItem(); + mnuPlateRemoveLeadIns = new System.Windows.Forms.ToolStripMenuItem(); mnuWindow = new System.Windows.Forms.ToolStripMenuItem(); mnuWindowCascade = new System.Windows.Forms.ToolStripMenuItem(); mnuWindowTileVertical = new System.Windows.Forms.ToolStripMenuItem(); @@ -552,7 +559,7 @@ // // mnuNest // - mnuNest.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { mnuNestEdit, mnuNestImportDrawing, toolStripMenuItem7, mnuNestFirstPlate, mnuNestLastPlate, toolStripMenuItem6, mnuNestNextPlate, mnuNestPreviousPlate, toolStripMenuItem12, runAutoNestToolStripMenuItem, autoSequenceAllPlatesToolStripMenuItem, mnuNestRemoveEmptyPlates, mnuNestPost, toolStripMenuItem19, calculateCutTimeToolStripMenuItem }); + mnuNest.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { mnuNestEdit, mnuNestImportDrawing, toolStripMenuItem7, mnuNestFirstPlate, mnuNestLastPlate, toolStripMenuItem6, mnuNestNextPlate, mnuNestPreviousPlate, toolStripMenuItem12, runAutoNestToolStripMenuItem, autoSequenceAllPlatesToolStripMenuItem, mnuNestRemoveEmptyPlates, mnuNestPost, toolStripMenuItem19, calculateCutTimeToolStripMenuItem, toolStripMenuItem22, mnuNestAssignLeadIns, mnuNestRemoveLeadIns }); mnuNest.Name = "mnuNest"; mnuNest.Size = new System.Drawing.Size(43, 20); mnuNest.Text = "&Nest"; @@ -659,10 +666,29 @@ calculateCutTimeToolStripMenuItem.Size = new System.Drawing.Size(205, 22); calculateCutTimeToolStripMenuItem.Text = "Calculate Cut Time"; calculateCutTimeToolStripMenuItem.Click += CalculateNestCutTime_Click; - // + // + // toolStripMenuItem22 + // + toolStripMenuItem22.Name = "toolStripMenuItem22"; + toolStripMenuItem22.Size = new System.Drawing.Size(202, 6); + // + // mnuNestAssignLeadIns + // + mnuNestAssignLeadIns.Name = "mnuNestAssignLeadIns"; + mnuNestAssignLeadIns.Size = new System.Drawing.Size(205, 22); + mnuNestAssignLeadIns.Text = "Assign Lead-ins (All Plates)"; + mnuNestAssignLeadIns.Click += NestAssignLeadIns_Click; + // + // mnuNestRemoveLeadIns + // + mnuNestRemoveLeadIns.Name = "mnuNestRemoveLeadIns"; + mnuNestRemoveLeadIns.Size = new System.Drawing.Size(205, 22); + mnuNestRemoveLeadIns.Text = "Remove Lead-ins (All Plates)"; + mnuNestRemoveLeadIns.Click += NestRemoveLeadIns_Click; + // // mnuPlate // - mnuPlate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { mnuPlateEdit, mnuPlateSetAsDefault, toolStripMenuItem18, mnuPlateAdd, mnuPlateRemove, toolStripMenuItem16, mnuPlateCutOff, mnuPlateRotate, mnuResizeToFitParts, toolStripMenuItem13, mnuPlateViewInCad, toolStripMenuItem20, mnuSequenceParts, calculateCutTimeToolStripMenuItem1, centerPartsToolStripMenuItem }); + mnuPlate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { mnuPlateEdit, mnuPlateSetAsDefault, toolStripMenuItem18, mnuPlateAdd, mnuPlateRemove, toolStripMenuItem16, mnuPlateCutOff, mnuPlateRotate, mnuResizeToFitParts, toolStripMenuItem13, mnuPlateViewInCad, toolStripMenuItem20, mnuSequenceParts, calculateCutTimeToolStripMenuItem1, centerPartsToolStripMenuItem, toolStripMenuItem21, mnuPlateAssignLeadIns, mnuPlatePlaceLeadIn, mnuPlateRemoveLeadIns }); mnuPlate.Name = "mnuPlate"; mnuPlate.Size = new System.Drawing.Size(45, 20); mnuPlate.Text = "&Plate"; @@ -808,7 +834,33 @@ centerPartsToolStripMenuItem.Size = new System.Drawing.Size(177, 22); centerPartsToolStripMenuItem.Text = "Center Parts"; centerPartsToolStripMenuItem.Click += centerPartsToolStripMenuItem_Click; - // + // + // toolStripMenuItem21 + // + toolStripMenuItem21.Name = "toolStripMenuItem21"; + toolStripMenuItem21.Size = new System.Drawing.Size(174, 6); + // + // mnuPlateAssignLeadIns + // + mnuPlateAssignLeadIns.Name = "mnuPlateAssignLeadIns"; + mnuPlateAssignLeadIns.Size = new System.Drawing.Size(177, 22); + mnuPlateAssignLeadIns.Text = "Assign Lead-ins"; + mnuPlateAssignLeadIns.Click += PlateAssignLeadIns_Click; + // + // mnuPlatePlaceLeadIn + // + mnuPlatePlaceLeadIn.Name = "mnuPlatePlaceLeadIn"; + mnuPlatePlaceLeadIn.Size = new System.Drawing.Size(177, 22); + mnuPlatePlaceLeadIn.Text = "Place Lead-in"; + mnuPlatePlaceLeadIn.Click += PlatePlaceLeadIn_Click; + // + // mnuPlateRemoveLeadIns + // + mnuPlateRemoveLeadIns.Name = "mnuPlateRemoveLeadIns"; + mnuPlateRemoveLeadIns.Size = new System.Drawing.Size(177, 22); + mnuPlateRemoveLeadIns.Text = "Remove Lead-ins"; + mnuPlateRemoveLeadIns.Click += PlateRemoveLeadIns_Click; + // // mnuWindow // mnuWindow.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { mnuWindowCascade, mnuWindowTileVertical, mnuWindowTileHorizontal, toolStripMenuItem10, closeToolStripMenuItem, mnuCloseAll }); @@ -1257,5 +1309,12 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; private System.Windows.Forms.ToolStripButton btnCutOff; private System.Windows.Forms.ToolStripMenuItem mnuPlateCutOff; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem21; + private System.Windows.Forms.ToolStripMenuItem mnuPlateAssignLeadIns; + private System.Windows.Forms.ToolStripMenuItem mnuPlatePlaceLeadIn; + private System.Windows.Forms.ToolStripMenuItem mnuPlateRemoveLeadIns; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem22; + private System.Windows.Forms.ToolStripMenuItem mnuNestAssignLeadIns; + private System.Windows.Forms.ToolStripMenuItem mnuNestRemoveLeadIns; } } \ No newline at end of file diff --git a/OpenNest/Forms/MainForm.cs b/OpenNest/Forms/MainForm.cs index b973da5..b0cc586 100644 --- a/OpenNest/Forms/MainForm.cs +++ b/OpenNest/Forms/MainForm.cs @@ -1066,6 +1066,18 @@ namespace OpenNest.Forms activeForm.CalculateNestCutTime(); } + private void NestAssignLeadIns_Click(object sender, EventArgs e) + { + if (activeForm == null) return; + activeForm.AssignLeadInsAllPlates(); + } + + private void NestRemoveLeadIns_Click(object sender, EventArgs e) + { + if (activeForm == null) return; + activeForm.RemoveLeadInsAllPlates(); + } + #endregion Nest Menu Events #region Plate Menu Events @@ -1158,6 +1170,24 @@ namespace OpenNest.Forms activeForm.PlateView.SetAction(typeof(ActionCutOff)); } + private void PlateAssignLeadIns_Click(object sender, EventArgs e) + { + if (activeForm == null) return; + activeForm.AssignLeadIns_Click(sender, e); + } + + private void PlatePlaceLeadIn_Click(object sender, EventArgs e) + { + if (activeForm == null) return; + activeForm.PlaceLeadIn_Click(sender, e); + } + + private void PlateRemoveLeadIns_Click(object sender, EventArgs e) + { + if (activeForm == null) return; + activeForm.RemoveLeadIns_Click(sender, e); + } + #endregion Plate Menu Events #region Window Menu Events