diff --git a/CutList.Core/BinFileSaver.cs b/CutList.Core/BinFileSaver.cs
index 828ac69..4da7ebd 100644
--- a/CutList.Core/BinFileSaver.cs
+++ b/CutList.Core/BinFileSaver.cs
@@ -11,6 +11,16 @@ namespace CutList.Core
public bool OpenFileAfterSave { get; set; }
+ ///
+ /// The cutting method/tool used (e.g., "Miter Saw", "Table Saw").
+ ///
+ public string? CutMethod { get; set; }
+
+ ///
+ /// The material shape (e.g., "Round Tube", "Square Tube", "Flat Bar").
+ ///
+ public string? MaterialShape { get; set; }
+
public BinFileSaver(IEnumerable bins)
{
_bins = bins ?? throw new ArgumentNullException(nameof(bins));
@@ -74,10 +84,24 @@ namespace CutList.Core
var totalItems = _bins.Sum(b => b.Items.Count);
writer.WriteLine("CUT LIST");
- writer.WriteLine($"Date: {DateTime.Now:g}");
- writer.WriteLine($"Total stock bars needed: {totalBars}");
- writer.WriteLine($"Total pieces to cut: {totalItems}");
+ WriteSeparator(writer, '=');
writer.WriteLine();
+ WriteAlignedLine(writer, "Date", DateTime.Now.ToString("g"));
+
+ if (!string.IsNullOrEmpty(CutMethod))
+ WriteAlignedLine(writer, "Cut Method", CutMethod);
+
+ if (!string.IsNullOrEmpty(MaterialShape))
+ WriteAlignedLine(writer, "Material", MaterialShape);
+
+ WriteAlignedLine(writer, "Stock Bars Needed", totalBars.ToString());
+ WriteAlignedLine(writer, "Total Pieces", totalItems.ToString());
+ writer.WriteLine();
+ }
+
+ private static void WriteAlignedLine(TextWriter writer, string label, string value, int labelWidth = 20)
+ {
+ writer.WriteLine($" {label.PadRight(labelWidth)} {value}");
}
private void WriteBinSummary(TextWriter writer, Bin bin, int id)
@@ -85,8 +109,9 @@ namespace CutList.Core
var stockLength = FormatHelper.ConvertToMixedFraction(bin.Length);
var dropLength = FormatHelper.ConvertToMixedFraction(bin.RemainingLength);
- writer.WriteLine(new string('─', 50));
- writer.WriteLine($"BAR #{id} - Start with {stockLength}\" stock");
+ WriteSeparator(writer);
+
+ writer.WriteLine($"BAR #{id} - Length: {stockLength}\"");
writer.WriteLine();
writer.WriteLine(" Cut these pieces:");
@@ -97,6 +122,11 @@ namespace CutList.Core
writer.WriteLine();
}
+ private static void WriteSeparator(TextWriter writer, char c = '─', int length = 50)
+ {
+ writer.WriteLine(new string(c, length));
+ }
+
private void WriteBinItems(TextWriter writer, Bin bin)
{
var groups = bin.Items
@@ -128,14 +158,14 @@ namespace CutList.Core
string fmt(double v) => FormatHelper.ConvertToMixedFraction(v);
- writer.WriteLine(new string('═', 50));
+ WriteSeparator(writer, '=');
writer.WriteLine("SUMMARY");
- writer.WriteLine($" Stock bars needed: {totalBars}");
- writer.WriteLine($" Total pieces to cut: {totalItems}");
- writer.WriteLine($" Total material used: {fmt(totalStock)}\"");
- writer.WriteLine($" Total drop/waste: {fmt(totalDrop)}\"");
- writer.WriteLine(new string('═', 50));
+ writer.WriteLine();
+ WriteAlignedLine(writer, "Stock Bars Needed", totalBars.ToString());
+ WriteAlignedLine(writer, "Total Pieces", totalItems.ToString());
+ WriteAlignedLine(writer, "Total Material Used", $"{fmt(totalStock)}\"");
+ WriteAlignedLine(writer, "Total Drop/Waste", $"{fmt(totalDrop)}\"");
+ WriteSeparator(writer, '=');
}
-
}
}
diff --git a/CutList/Forms/ResultsForm.Designer.cs b/CutList/Forms/ResultsForm.Designer.cs
index fb29a32..c6aca8b 100644
--- a/CutList/Forms/ResultsForm.Designer.cs
+++ b/CutList/Forms/ResultsForm.Designer.cs
@@ -28,237 +28,233 @@
///
private void InitializeComponent()
{
- this.components = new System.ComponentModel.Container();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
- this.dataGridView1 = new System.Windows.Forms.DataGridView();
- this.countDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.spacingDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.lengthDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.usedLengthDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.remainingLengthDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.utilizationDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.binBindingSource = new System.Windows.Forms.BindingSource(this.components);
- this.splitContainer1 = new System.Windows.Forms.SplitContainer();
- this.splitContainer2 = new System.Windows.Forms.SplitContainer();
- this.dataGridView2 = new System.Windows.Forms.DataGridView();
- this.binLayoutView1 = new CutList.Controls.BinLayoutView();
- this.label1 = new System.Windows.Forms.Label();
- this.uIItemBindingSource = new System.Windows.Forms.BindingSource(this.components);
- this.menuStrip1 = new System.Windows.Forms.MenuStrip();
- this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.binBindingSource)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
- this.splitContainer1.Panel1.SuspendLayout();
- this.splitContainer1.Panel2.SuspendLayout();
- this.splitContainer1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
- this.splitContainer2.Panel1.SuspendLayout();
- this.splitContainer2.Panel2.SuspendLayout();
- this.splitContainer2.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.uIItemBindingSource)).BeginInit();
- this.menuStrip1.SuspendLayout();
- this.SuspendLayout();
+ components = new System.ComponentModel.Container();
+ DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle();
+ dataGridView1 = new DataGridView();
+ countDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
+ spacingDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
+ lengthDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
+ usedLengthDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
+ remainingLengthDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
+ utilizationDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
+ binBindingSource = new BindingSource(components);
+ splitContainer1 = new SplitContainer();
+ splitContainer2 = new SplitContainer();
+ dataGridView2 = new DataGridView();
+ binLayoutView1 = new CutList.Controls.BinLayoutView();
+ label1 = new Label();
+ uIItemBindingSource = new BindingSource(components);
+ menuStrip1 = new MenuStrip();
+ saveToolStripMenuItem = new ToolStripMenuItem();
+ ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)binBindingSource).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
+ splitContainer1.Panel1.SuspendLayout();
+ splitContainer1.Panel2.SuspendLayout();
+ splitContainer1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)splitContainer2).BeginInit();
+ splitContainer2.Panel1.SuspendLayout();
+ splitContainer2.Panel2.SuspendLayout();
+ splitContainer2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)dataGridView2).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)uIItemBindingSource).BeginInit();
+ menuStrip1.SuspendLayout();
+ SuspendLayout();
//
// dataGridView1
//
- this.dataGridView1.AutoGenerateColumns = false;
- this.dataGridView1.BackgroundColor = System.Drawing.Color.White;
- this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
- this.dataGridView1.ColumnHeadersHeight = 30;
- this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
- this.countDataGridViewTextBoxColumn,
- this.spacingDataGridViewTextBoxColumn,
- this.lengthDataGridViewTextBoxColumn,
- this.usedLengthDataGridViewTextBoxColumn,
- this.remainingLengthDataGridViewTextBoxColumn,
- this.utilizationDataGridViewTextBoxColumn});
- this.dataGridView1.DataSource = this.binBindingSource;
- this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.dataGridView1.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
- this.dataGridView1.Location = new System.Drawing.Point(0, 0);
- this.dataGridView1.Name = "dataGridView1";
- this.dataGridView1.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
- this.dataGridView1.RowTemplate.Height = 25;
- this.dataGridView1.Size = new System.Drawing.Size(994, 253);
- this.dataGridView1.TabIndex = 0;
- this.dataGridView1.RowEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_RowEnter);
- //
+ dataGridView1.AutoGenerateColumns = false;
+ dataGridView1.BackgroundColor = Color.White;
+ dataGridView1.BorderStyle = BorderStyle.None;
+ dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
+ dataGridView1.ColumnHeadersHeight = 30;
+ dataGridView1.Columns.AddRange(new DataGridViewColumn[] { countDataGridViewTextBoxColumn, spacingDataGridViewTextBoxColumn, lengthDataGridViewTextBoxColumn, usedLengthDataGridViewTextBoxColumn, remainingLengthDataGridViewTextBoxColumn, utilizationDataGridViewTextBoxColumn });
+ dataGridView1.DataSource = binBindingSource;
+ dataGridView1.Dock = DockStyle.Fill;
+ dataGridView1.GridColor = Color.FromArgb(224, 224, 224);
+ dataGridView1.Location = new Point(0, 0);
+ dataGridView1.Name = "dataGridView1";
+ dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
+ dataGridView1.Size = new Size(959, 469);
+ dataGridView1.TabIndex = 0;
+ dataGridView1.RowEnter += dataGridView1_RowEnter;
+ //
// countDataGridViewTextBoxColumn
- //
- this.countDataGridViewTextBoxColumn.DataPropertyName = "Count";
- this.countDataGridViewTextBoxColumn.HeaderText = "Count";
- this.countDataGridViewTextBoxColumn.Name = "countDataGridViewTextBoxColumn";
- this.countDataGridViewTextBoxColumn.Width = 60;
- //
+ //
+ countDataGridViewTextBoxColumn.DataPropertyName = "Count";
+ countDataGridViewTextBoxColumn.HeaderText = "Count";
+ countDataGridViewTextBoxColumn.Name = "countDataGridViewTextBoxColumn";
+ countDataGridViewTextBoxColumn.ReadOnly = true;
+ countDataGridViewTextBoxColumn.Width = 60;
+ //
// spacingDataGridViewTextBoxColumn
- //
- this.spacingDataGridViewTextBoxColumn.DataPropertyName = "Spacing";
- this.spacingDataGridViewTextBoxColumn.HeaderText = "Spacing";
- this.spacingDataGridViewTextBoxColumn.Name = "spacingDataGridViewTextBoxColumn";
+ //
+ spacingDataGridViewTextBoxColumn.DataPropertyName = "Spacing";
+ spacingDataGridViewTextBoxColumn.HeaderText = "Spacing";
+ spacingDataGridViewTextBoxColumn.Name = "spacingDataGridViewTextBoxColumn";
+ spacingDataGridViewTextBoxColumn.ReadOnly = true;
//
// lengthDataGridViewTextBoxColumn
//
- this.lengthDataGridViewTextBoxColumn.DataPropertyName = "Length";
- this.lengthDataGridViewTextBoxColumn.HeaderText = "Length";
- this.lengthDataGridViewTextBoxColumn.Name = "lengthDataGridViewTextBoxColumn";
+ lengthDataGridViewTextBoxColumn.DataPropertyName = "Length";
+ lengthDataGridViewTextBoxColumn.HeaderText = "Length";
+ lengthDataGridViewTextBoxColumn.Name = "lengthDataGridViewTextBoxColumn";
+ lengthDataGridViewTextBoxColumn.ReadOnly = true;
//
// usedLengthDataGridViewTextBoxColumn
//
- this.usedLengthDataGridViewTextBoxColumn.DataPropertyName = "UsedLength";
- this.usedLengthDataGridViewTextBoxColumn.HeaderText = "Used Length";
- this.usedLengthDataGridViewTextBoxColumn.Name = "usedLengthDataGridViewTextBoxColumn";
- this.usedLengthDataGridViewTextBoxColumn.ReadOnly = true;
+ usedLengthDataGridViewTextBoxColumn.DataPropertyName = "UsedLength";
+ usedLengthDataGridViewTextBoxColumn.HeaderText = "Used Length";
+ usedLengthDataGridViewTextBoxColumn.Name = "usedLengthDataGridViewTextBoxColumn";
+ usedLengthDataGridViewTextBoxColumn.ReadOnly = true;
//
// remainingLengthDataGridViewTextBoxColumn
//
- this.remainingLengthDataGridViewTextBoxColumn.DataPropertyName = "RemainingLength";
- this.remainingLengthDataGridViewTextBoxColumn.HeaderText = "Remaining Length";
- this.remainingLengthDataGridViewTextBoxColumn.Name = "remainingLengthDataGridViewTextBoxColumn";
- this.remainingLengthDataGridViewTextBoxColumn.ReadOnly = true;
- this.remainingLengthDataGridViewTextBoxColumn.Width = 150;
+ remainingLengthDataGridViewTextBoxColumn.DataPropertyName = "RemainingLength";
+ remainingLengthDataGridViewTextBoxColumn.HeaderText = "Remaining Length";
+ remainingLengthDataGridViewTextBoxColumn.Name = "remainingLengthDataGridViewTextBoxColumn";
+ remainingLengthDataGridViewTextBoxColumn.ReadOnly = true;
+ remainingLengthDataGridViewTextBoxColumn.Width = 150;
//
// utilizationDataGridViewTextBoxColumn
//
- this.utilizationDataGridViewTextBoxColumn.DataPropertyName = "Utilization";
+ utilizationDataGridViewTextBoxColumn.DataPropertyName = "Utilization";
dataGridViewCellStyle1.Format = "P2";
- this.utilizationDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1;
- this.utilizationDataGridViewTextBoxColumn.HeaderText = "Utilization";
- this.utilizationDataGridViewTextBoxColumn.Name = "utilizationDataGridViewTextBoxColumn";
- this.utilizationDataGridViewTextBoxColumn.ReadOnly = true;
+ utilizationDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1;
+ utilizationDataGridViewTextBoxColumn.HeaderText = "Utilization";
+ utilizationDataGridViewTextBoxColumn.Name = "utilizationDataGridViewTextBoxColumn";
+ utilizationDataGridViewTextBoxColumn.ReadOnly = true;
//
// binBindingSource
- //
- this.binBindingSource.DataSource = typeof(CutList.Core.BinGroup);
+ //
+ binBindingSource.DataSource = typeof(Core.BinGroup);
//
// splitContainer1
//
- this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
- this.splitContainer1.Location = new System.Drawing.Point(0, 24);
- this.splitContainer1.Name = "splitContainer1";
- this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ splitContainer1.Dock = DockStyle.Fill;
+ splitContainer1.FixedPanel = FixedPanel.Panel2;
+ splitContainer1.Location = new Point(0, 24);
+ splitContainer1.Name = "splitContainer1";
+ splitContainer1.Orientation = Orientation.Horizontal;
//
// splitContainer1.Panel1
//
- this.splitContainer1.Panel1.Controls.Add(this.dataGridView1);
+ splitContainer1.Panel1.Controls.Add(dataGridView1);
//
// splitContainer1.Panel2
//
- this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
- this.splitContainer1.Panel2.Controls.Add(this.label1);
- this.splitContainer1.Size = new System.Drawing.Size(994, 507);
- this.splitContainer1.SplitterDistance = 253;
- this.splitContainer1.TabIndex = 2;
+ splitContainer1.Panel2.Controls.Add(splitContainer2);
+ splitContainer1.Panel2.Controls.Add(label1);
+ splitContainer1.Size = new Size(959, 723);
+ splitContainer1.SplitterDistance = 469;
+ splitContainer1.TabIndex = 2;
//
// splitContainer2
//
- this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.splitContainer2.Location = new System.Drawing.Point(0, 34);
- this.splitContainer2.Name = "splitContainer2";
+ splitContainer2.Dock = DockStyle.Fill;
+ splitContainer2.Location = new Point(0, 34);
+ splitContainer2.Name = "splitContainer2";
//
// splitContainer2.Panel1
//
- this.splitContainer2.Panel1.Controls.Add(this.dataGridView2);
+ splitContainer2.Panel1.Controls.Add(dataGridView2);
//
// splitContainer2.Panel2
//
- this.splitContainer2.Panel2.Controls.Add(this.binLayoutView1);
- this.splitContainer2.Size = new System.Drawing.Size(994, 216);
- this.splitContainer2.SplitterDistance = 276;
- this.splitContainer2.TabIndex = 1;
+ splitContainer2.Panel2.Controls.Add(binLayoutView1);
+ splitContainer2.Size = new Size(959, 216);
+ splitContainer2.SplitterDistance = 266;
+ splitContainer2.TabIndex = 1;
//
// dataGridView2
//
- this.dataGridView2.BackgroundColor = System.Drawing.Color.White;
- this.dataGridView2.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.dataGridView2.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
- this.dataGridView2.ColumnHeadersHeight = 30;
- this.dataGridView2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.dataGridView2.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
- this.dataGridView2.Location = new System.Drawing.Point(0, 0);
- this.dataGridView2.Name = "dataGridView2";
- this.dataGridView2.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
- this.dataGridView2.RowTemplate.Height = 25;
- this.dataGridView2.Size = new System.Drawing.Size(276, 216);
- this.dataGridView2.TabIndex = 1;
+ dataGridView2.BackgroundColor = Color.White;
+ dataGridView2.BorderStyle = BorderStyle.None;
+ dataGridView2.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
+ dataGridView2.ColumnHeadersHeight = 30;
+ dataGridView2.Dock = DockStyle.Fill;
+ dataGridView2.GridColor = Color.FromArgb(224, 224, 224);
+ dataGridView2.Location = new Point(0, 0);
+ dataGridView2.Name = "dataGridView2";
+ dataGridView2.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
+ dataGridView2.Size = new Size(266, 216);
+ dataGridView2.TabIndex = 1;
//
// binLayoutView1
//
- this.binLayoutView1.BackColor = System.Drawing.Color.White;
- this.binLayoutView1.Bin = null;
- this.binLayoutView1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.binLayoutView1.Location = new System.Drawing.Point(0, 0);
- this.binLayoutView1.Name = "binLayoutView1";
- this.binLayoutView1.Size = new System.Drawing.Size(714, 216);
- this.binLayoutView1.TabIndex = 1;
- this.binLayoutView1.Text = "class11";
+ binLayoutView1.BackColor = Color.White;
+ binLayoutView1.Bin = null;
+ binLayoutView1.BinBackgroundColor = Color.Pink;
+ binLayoutView1.Dock = DockStyle.Fill;
+ binLayoutView1.ItemBackgroundColor = Color.White;
+ binLayoutView1.ItemBorderColor = Color.Blue;
+ binLayoutView1.Location = new Point(0, 0);
+ binLayoutView1.Name = "binLayoutView1";
+ binLayoutView1.Size = new Size(689, 216);
+ binLayoutView1.TabIndex = 1;
+ binLayoutView1.Text = "class11";
//
// label1
//
- this.label1.BackColor = System.Drawing.Color.LightSlateGray;
- this.label1.Dock = System.Windows.Forms.DockStyle.Top;
- this.label1.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label1.ForeColor = System.Drawing.Color.White;
- this.label1.Location = new System.Drawing.Point(0, 0);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(994, 34);
- this.label1.TabIndex = 2;
- this.label1.Text = "Items";
- this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ label1.BackColor = Color.LightSlateGray;
+ label1.Dock = DockStyle.Top;
+ label1.Font = new Font("Segoe UI", 14.25F, FontStyle.Bold, GraphicsUnit.Point, 0);
+ label1.ForeColor = Color.White;
+ label1.Location = new Point(0, 0);
+ label1.Name = "label1";
+ label1.Size = new Size(959, 34);
+ label1.TabIndex = 2;
+ label1.Text = "Items";
+ label1.TextAlign = ContentAlignment.MiddleCenter;
//
// uIItemBindingSource
//
- this.uIItemBindingSource.DataSource = typeof(CutList.Models.PartInputItem);
+ uIItemBindingSource.DataSource = typeof(Models.PartInputItem);
//
// menuStrip1
//
- this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.saveToolStripMenuItem});
- this.menuStrip1.Location = new System.Drawing.Point(0, 0);
- this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Size = new System.Drawing.Size(994, 24);
- this.menuStrip1.TabIndex = 5;
- this.menuStrip1.Text = "menuStrip1";
+ menuStrip1.Items.AddRange(new ToolStripItem[] { saveToolStripMenuItem });
+ menuStrip1.Location = new Point(0, 0);
+ menuStrip1.Name = "menuStrip1";
+ menuStrip1.Size = new Size(959, 24);
+ menuStrip1.TabIndex = 5;
+ menuStrip1.Text = "menuStrip1";
//
// saveToolStripMenuItem
//
- this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
- this.saveToolStripMenuItem.Size = new System.Drawing.Size(43, 20);
- this.saveToolStripMenuItem.Text = "Save";
- this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
+ saveToolStripMenuItem.Name = "saveToolStripMenuItem";
+ saveToolStripMenuItem.Size = new Size(43, 20);
+ saveToolStripMenuItem.Text = "Save";
+ saveToolStripMenuItem.Click += saveToolStripMenuItem_Click;
//
// ResultsForm
//
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
- this.ClientSize = new System.Drawing.Size(994, 531);
- this.Controls.Add(this.splitContainer1);
- this.Controls.Add(this.menuStrip1);
- this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.Name = "ResultsForm";
- this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Results";
- this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
- ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.binBindingSource)).EndInit();
- this.splitContainer1.Panel1.ResumeLayout(false);
- this.splitContainer1.Panel2.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
- this.splitContainer1.ResumeLayout(false);
- this.splitContainer2.Panel1.ResumeLayout(false);
- this.splitContainer2.Panel2.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
- this.splitContainer2.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.uIItemBindingSource)).EndInit();
- this.menuStrip1.ResumeLayout(false);
- this.menuStrip1.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
+ AutoScaleMode = AutoScaleMode.None;
+ ClientSize = new Size(959, 747);
+ Controls.Add(splitContainer1);
+ Controls.Add(menuStrip1);
+ Font = new Font("Segoe UI", 9.75F, FontStyle.Regular, GraphicsUnit.Point, 0);
+ Name = "ResultsForm";
+ ShowIcon = false;
+ ShowInTaskbar = false;
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Results";
+ ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
+ ((System.ComponentModel.ISupportInitialize)binBindingSource).EndInit();
+ splitContainer1.Panel1.ResumeLayout(false);
+ splitContainer1.Panel2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)splitContainer1).EndInit();
+ splitContainer1.ResumeLayout(false);
+ splitContainer2.Panel1.ResumeLayout(false);
+ splitContainer2.Panel2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)splitContainer2).EndInit();
+ splitContainer2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)dataGridView2).EndInit();
+ ((System.ComponentModel.ISupportInitialize)uIItemBindingSource).EndInit();
+ menuStrip1.ResumeLayout(false);
+ menuStrip1.PerformLayout();
+ ResumeLayout(false);
+ PerformLayout();
}
diff --git a/CutList/Forms/ResultsForm.cs b/CutList/Forms/ResultsForm.cs
index c296e9e..ad95679 100644
--- a/CutList/Forms/ResultsForm.cs
+++ b/CutList/Forms/ResultsForm.cs
@@ -5,15 +5,19 @@ namespace CutList.Forms
public partial class ResultsForm : Form
{
private string filename;
+ private string cutMethod;
+ private string? materialShape;
private List _originalBins = new List();
- public ResultsForm(string filename)
+ public ResultsForm(string filename, string cutMethod, string? materialShape = null)
{
InitializeComponent();
dataGridView1.DrawRowNumbers();
dataGridView2.DrawRowNumbers();
this.filename = filename;
+ this.cutMethod = cutMethod;
+ this.materialShape = materialShape;
}
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
@@ -48,7 +52,11 @@ namespace CutList.Forms
public void Save(string filepath)
{
- var writer = new BinFileSaver(_originalBins);
+ var writer = new BinFileSaver(_originalBins)
+ {
+ CutMethod = cutMethod,
+ MaterialShape = materialShape
+ };
writer.SaveBinsToFile(filepath);
}
diff --git a/CutList/Forms/ResultsForm.resx b/CutList/Forms/ResultsForm.resx
index 91e1a6f..56acc85 100644
--- a/CutList/Forms/ResultsForm.resx
+++ b/CutList/Forms/ResultsForm.resx
@@ -1,17 +1,17 @@
-
diff --git a/CutList/Presenters/IMainView.cs b/CutList/Presenters/IMainView.cs
index c9ce957..ff87a62 100644
--- a/CutList/Presenters/IMainView.cs
+++ b/CutList/Presenters/IMainView.cs
@@ -25,6 +25,11 @@ namespace CutList.Presenters
///
Tool SelectedTool { get; }
+ ///
+ /// Gets the currently selected material shape from the view.
+ ///
+ string? SelectedMaterialShape { get; }
+
///
/// Displays an error message to the user.
///
@@ -77,7 +82,11 @@ namespace CutList.Presenters
///
/// Shows the results form with the packing results.
///
- void ShowResults(List bins, string fileName);
+ /// The packed bins to display
+ /// Default filename for saving
+ /// The cutting method/tool name
+ /// The material shape (optional)
+ void ShowResults(List bins, string fileName, string cutMethod, string? materialShape = null);
///
/// Updates the enabled state of the run button.
diff --git a/CutList/Presenters/MainFormPresenter.cs b/CutList/Presenters/MainFormPresenter.cs
index 1313a28..f221539 100644
--- a/CutList/Presenters/MainFormPresenter.cs
+++ b/CutList/Presenters/MainFormPresenter.cs
@@ -133,7 +133,9 @@ namespace CutList.Presenters
}
var fileName = GetResultsSaveName();
- _view.ShowResults(packResult.Value.Bins.ToList(), fileName);
+ var cutMethod = cutTool?.Name ?? "Unknown";
+ var materialShape = _view.SelectedMaterialShape;
+ _view.ShowResults(packResult.Value.Bins.ToList(), fileName, cutMethod, materialShape);
}
///
@@ -244,11 +246,14 @@ namespace CutList.Presenters
private string GetResultsSaveName()
{
- var today = DateTime.Today;
- var year = today.Year.ToString();
- var month = today.Month.ToString().PadLeft(2, '0');
- var day = today.Day.ToString().PadLeft(2, '0');
- return $"Cut List {year}-{month}-{day}";
+ // Use document name if available, otherwise generate one
+ if (!string.IsNullOrEmpty(_currentDocument.LastFilePath))
+ {
+ var docName = Path.GetFileNameWithoutExtension(_currentDocument.LastFilePath);
+ return docName;
+ }
+
+ return $"CutList_{_documentCounter}";
}
}
}