Allow quantity -1 for infinite.

This commit is contained in:
AJ
2025-01-05 23:16:39 -05:00
parent a1ad16bc52
commit ccbf8beeae
4 changed files with 41 additions and 35 deletions

View File

@@ -29,10 +29,10 @@
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
this.dataGridView1 = new System.Windows.Forms.DataGridView(); this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.lengthDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.lengthDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -92,7 +92,7 @@
this.dataGridView1.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; this.dataGridView1.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
this.dataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; this.dataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
this.dataGridView1.RowTemplate.Height = 26; this.dataGridView1.RowTemplate.Height = 26;
this.dataGridView1.Size = new System.Drawing.Size(842, 459); this.dataGridView1.Size = new System.Drawing.Size(757, 533);
this.dataGridView1.TabIndex = 11; this.dataGridView1.TabIndex = 11;
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit); this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
this.dataGridView1.CellValidated += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit); this.dataGridView1.CellValidated += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
@@ -108,8 +108,8 @@
// lengthDataGridViewTextBoxColumn // lengthDataGridViewTextBoxColumn
// //
this.lengthDataGridViewTextBoxColumn.DataPropertyName = "LengthInputValue"; this.lengthDataGridViewTextBoxColumn.DataPropertyName = "LengthInputValue";
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
this.lengthDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; this.lengthDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle5;
this.lengthDataGridViewTextBoxColumn.HeaderText = "Length"; this.lengthDataGridViewTextBoxColumn.HeaderText = "Length";
this.lengthDataGridViewTextBoxColumn.Name = "lengthDataGridViewTextBoxColumn"; this.lengthDataGridViewTextBoxColumn.Name = "lengthDataGridViewTextBoxColumn";
this.lengthDataGridViewTextBoxColumn.Width = 120; this.lengthDataGridViewTextBoxColumn.Width = 120;
@@ -117,8 +117,8 @@
// quantityDataGridViewTextBoxColumn // quantityDataGridViewTextBoxColumn
// //
this.quantityDataGridViewTextBoxColumn.DataPropertyName = "Quantity"; this.quantityDataGridViewTextBoxColumn.DataPropertyName = "Quantity";
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
this.quantityDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle2; this.quantityDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle6;
this.quantityDataGridViewTextBoxColumn.HeaderText = "Qty"; this.quantityDataGridViewTextBoxColumn.HeaderText = "Qty";
this.quantityDataGridViewTextBoxColumn.Name = "quantityDataGridViewTextBoxColumn"; this.quantityDataGridViewTextBoxColumn.Name = "quantityDataGridViewTextBoxColumn";
this.quantityDataGridViewTextBoxColumn.Width = 50; this.quantityDataGridViewTextBoxColumn.Width = 50;
@@ -126,10 +126,10 @@
// TotalLength // TotalLength
// //
this.TotalLength.DataPropertyName = "TotalLengthString"; this.TotalLength.DataPropertyName = "TotalLengthString";
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Info; dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Info;
dataGridViewCellStyle3.Format = "N3"; dataGridViewCellStyle7.Format = "N3";
this.TotalLength.DefaultCellStyle = dataGridViewCellStyle3; this.TotalLength.DefaultCellStyle = dataGridViewCellStyle7;
this.TotalLength.HeaderText = "Total Length"; this.TotalLength.HeaderText = "Total Length";
this.TotalLength.Name = "TotalLength"; this.TotalLength.Name = "TotalLength";
this.TotalLength.ReadOnly = true; this.TotalLength.ReadOnly = true;
@@ -150,11 +150,11 @@
this.loadExampleDataButton}); this.loadExampleDataButton});
this.toolStrip1.Location = new System.Drawing.Point(0, 0); this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(880, 39); this.toolStrip1.Size = new System.Drawing.Size(795, 39);
this.toolStrip1.TabIndex = 0; this.toolStrip1.TabIndex = 0;
this.toolStrip1.Text = "toolStrip1"; this.toolStrip1.Text = "toolStrip1";
// //
// toolStripButton2 // newDocumentButton
// //
this.newDocumentButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.newDocumentButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.newDocumentButton.Image = global::CutList.Properties.Resources.gnome_document_new; this.newDocumentButton.Image = global::CutList.Properties.Resources.gnome_document_new;
@@ -166,7 +166,7 @@
this.newDocumentButton.Text = "New"; this.newDocumentButton.Text = "New";
this.newDocumentButton.Click += new System.EventHandler(this.newDocumentButton_Click); this.newDocumentButton.Click += new System.EventHandler(this.newDocumentButton_Click);
// //
// toolStripButton1 // openFileButton
// //
this.openFileButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.openFileButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.openFileButton.Image = global::CutList.Properties.Resources.Open_Folder_32; this.openFileButton.Image = global::CutList.Properties.Resources.Open_Folder_32;
@@ -207,7 +207,7 @@
this.runButton.Text = "Run"; this.runButton.Text = "Run";
this.runButton.Click += new System.EventHandler(this.runButton_Click); this.runButton.Click += new System.EventHandler(this.runButton_Click);
// //
// toolStripButton3 // loadExampleDataButton
// //
this.loadExampleDataButton.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; this.loadExampleDataButton.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.loadExampleDataButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.loadExampleDataButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
@@ -215,48 +215,48 @@
this.loadExampleDataButton.Image = global::CutList.Properties.Resources.Circled_Play_32; this.loadExampleDataButton.Image = global::CutList.Properties.Resources.Circled_Play_32;
this.loadExampleDataButton.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.loadExampleDataButton.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
this.loadExampleDataButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.loadExampleDataButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.loadExampleDataButton.Name = "toolStripButton3"; this.loadExampleDataButton.Name = "loadExampleDataButton";
this.loadExampleDataButton.Padding = new System.Windows.Forms.Padding(5, 0, 5, 0); this.loadExampleDataButton.Padding = new System.Windows.Forms.Padding(5, 0, 5, 0);
this.loadExampleDataButton.Size = new System.Drawing.Size(121, 36); this.loadExampleDataButton.Size = new System.Drawing.Size(121, 36);
this.loadExampleDataButton.Text = "Load Example Data"; this.loadExampleDataButton.Text = "Load Example Data";
this.loadExampleDataButton.Click += new System.EventHandler(this.loadExampleDataButton_Click); this.loadExampleDataButton.Click += new System.EventHandler(this.loadExampleDataButton_Click);
// //
// comboBox1 // cutMethodComboBox
// //
this.cutMethodComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cutMethodComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cutMethodComboBox.FormattingEnabled = true; this.cutMethodComboBox.FormattingEnabled = true;
this.cutMethodComboBox.Location = new System.Drawing.Point(107, 22); this.cutMethodComboBox.Location = new System.Drawing.Point(107, 22);
this.cutMethodComboBox.Name = "comboBox1"; this.cutMethodComboBox.Name = "cutMethodComboBox";
this.cutMethodComboBox.Size = new System.Drawing.Size(184, 25); this.cutMethodComboBox.Size = new System.Drawing.Size(184, 25);
this.cutMethodComboBox.TabIndex = 7; this.cutMethodComboBox.TabIndex = 7;
this.cutMethodComboBox.SelectedIndexChanged += new System.EventHandler(this.cutMethodComboBox_SelectedIndexChanged); this.cutMethodComboBox.SelectedIndexChanged += new System.EventHandler(this.cutMethodComboBox_SelectedIndexChanged);
// //
// textBox1 // cutWidthTextBox
// //
this.cutWidthTextBox.Location = new System.Drawing.Point(107, 53); this.cutWidthTextBox.Location = new System.Drawing.Point(107, 53);
this.cutWidthTextBox.Name = "textBox1"; this.cutWidthTextBox.Name = "cutWidthTextBox";
this.cutWidthTextBox.Size = new System.Drawing.Size(184, 25); this.cutWidthTextBox.Size = new System.Drawing.Size(184, 25);
this.cutWidthTextBox.TabIndex = 9; this.cutWidthTextBox.TabIndex = 9;
this.cutWidthTextBox.TextChanged += new System.EventHandler(this.cutWidthTextBox_TextChanged); this.cutWidthTextBox.TextChanged += new System.EventHandler(this.cutWidthTextBox_TextChanged);
// //
// label3 // cutMethodLabel
// //
this.cutMethodLabel.AutoSize = true; this.cutMethodLabel.AutoSize = true;
this.cutMethodLabel.Font = new System.Drawing.Font("Segoe UI Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cutMethodLabel.Font = new System.Drawing.Font("Segoe UI Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cutMethodLabel.ForeColor = System.Drawing.Color.Blue; this.cutMethodLabel.ForeColor = System.Drawing.Color.Blue;
this.cutMethodLabel.Location = new System.Drawing.Point(20, 25); this.cutMethodLabel.Location = new System.Drawing.Point(20, 25);
this.cutMethodLabel.Name = "label3"; this.cutMethodLabel.Name = "cutMethodLabel";
this.cutMethodLabel.Size = new System.Drawing.Size(81, 17); this.cutMethodLabel.Size = new System.Drawing.Size(81, 17);
this.cutMethodLabel.TabIndex = 6; this.cutMethodLabel.TabIndex = 6;
this.cutMethodLabel.Text = "Cut method"; this.cutMethodLabel.Text = "Cut method";
// //
// label4 // cutWidthLabel
// //
this.cutWidthLabel.AutoSize = true; this.cutWidthLabel.AutoSize = true;
this.cutWidthLabel.Font = new System.Drawing.Font("Segoe UI Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cutWidthLabel.Font = new System.Drawing.Font("Segoe UI Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cutWidthLabel.ForeColor = System.Drawing.Color.Blue; this.cutWidthLabel.ForeColor = System.Drawing.Color.Blue;
this.cutWidthLabel.Location = new System.Drawing.Point(34, 56); this.cutWidthLabel.Location = new System.Drawing.Point(34, 56);
this.cutWidthLabel.Name = "label4"; this.cutWidthLabel.Name = "cutWidthLabel";
this.cutWidthLabel.Size = new System.Drawing.Size(67, 17); this.cutWidthLabel.Size = new System.Drawing.Size(67, 17);
this.cutWidthLabel.TabIndex = 8; this.cutWidthLabel.TabIndex = 8;
this.cutWidthLabel.Text = "Cut width"; this.cutWidthLabel.Text = "Cut width";
@@ -272,7 +272,7 @@
this.tabControl1.Name = "tabControl1"; this.tabControl1.Name = "tabControl1";
this.tabControl1.Padding = new System.Drawing.Point(20, 3); this.tabControl1.Padding = new System.Drawing.Point(20, 3);
this.tabControl1.SelectedIndex = 0; this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(856, 495); this.tabControl1.Size = new System.Drawing.Size(771, 569);
this.tabControl1.TabIndex = 12; this.tabControl1.TabIndex = 12;
// //
// tabPage2 // tabPage2
@@ -281,7 +281,7 @@
this.tabPage2.Location = new System.Drawing.Point(4, 26); this.tabPage2.Location = new System.Drawing.Point(4, 26);
this.tabPage2.Name = "tabPage2"; this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3); this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(848, 465); this.tabPage2.Size = new System.Drawing.Size(763, 539);
this.tabPage2.TabIndex = 1; this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "ITEMS TO NEST"; this.tabPage2.Text = "ITEMS TO NEST";
this.tabPage2.UseVisualStyleBackColor = true; this.tabPage2.UseVisualStyleBackColor = true;
@@ -343,8 +343,8 @@
// TotalLengthString // TotalLengthString
// //
this.TotalLengthString.DataPropertyName = "TotalLengthString"; this.TotalLengthString.DataPropertyName = "TotalLengthString";
dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Info; dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Info;
this.TotalLengthString.DefaultCellStyle = dataGridViewCellStyle4; this.TotalLengthString.DefaultCellStyle = dataGridViewCellStyle8;
this.TotalLengthString.HeaderText = "Total Length"; this.TotalLengthString.HeaderText = "Total Length";
this.TotalLengthString.Name = "TotalLengthString"; this.TotalLengthString.Name = "TotalLengthString";
this.TotalLengthString.ReadOnly = true; this.TotalLengthString.ReadOnly = true;
@@ -362,7 +362,7 @@
// MainForm // MainForm
// //
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(880, 549); this.ClientSize = new System.Drawing.Size(795, 623);
this.Controls.Add(this.tabControl1); this.Controls.Add(this.tabControl1);
this.Controls.Add(this.toolStrip1); this.Controls.Add(this.toolStrip1);
this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

View File

@@ -62,7 +62,7 @@ namespace CutList.Forms
if (!parts.Any(i => i.Length > 0 && i.Quantity > 0)) if (!parts.Any(i => i.Length > 0 && i.Quantity > 0))
return false; return false;
if (!bins.Any(i => i.Length > 0 && i.Quantity > 0)) if (!bins.Any(i => i.Length > 0 && (i.Quantity > 0 || i.Quantity == -1)))
return false; return false;
for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++) for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++)
@@ -216,9 +216,9 @@ namespace CutList.Forms
private void LoadExampleData(bool clearCurrentData = true) private void LoadExampleData(bool clearCurrentData = true)
{ {
const int PartCount = 50; const int PartCount = 25;
const double Min = 1; const double Min = 1;
const double Max = 120; const double Max = 60;
if (clearCurrentData) if (clearCurrentData)
{ {

View File

@@ -132,4 +132,10 @@
<metadata name="binInputItemBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="binInputItemBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>277, 17</value> <value>277, 17</value>
</metadata> </metadata>
<metadata name="TotalLengthString.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="binInputItemBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>277, 17</value>
</metadata>
</root> </root>

View File

@@ -51,7 +51,7 @@ namespace SawCut.Nesting
{ {
var bins = new List<Bin>(); var bins = new List<Bin>();
while (Items.Count > 0 && bins.Count < MaxBinCount) while (Items.Count > 0 && (MaxBinCount == -1 || bins.Count < MaxBinCount))
{ {
var bin = new Bin(StockLength); var bin = new Bin(StockLength);
bin.Spacing = Spacing; bin.Spacing = Spacing;