// save the nest task to file. static public void SaveNestTask(String strFilePath, NestTaskEx nestTask, List <KeyValuePair <long, string> > partDxfPath, Dictionary <long, int> partColorConfig, List <KeyValuePair <long, string> > matDxfPath, int iNestingTime) { XmlDocument xmlDoc = new XmlDocument(); // the task node. XmlElement taskNode = xmlDoc.CreateElement("NestTask"); XmlAttribute versionAttribute = xmlDoc.CreateAttribute("taskVersion"); versionAttribute.Value = TASK_VERSION_1.ToString(); taskNode.Attributes.Append(versionAttribute); xmlDoc.AppendChild(taskNode); // save part info. XmlElement partListNode = xmlDoc.CreateElement("PartList"); taskNode.AppendChild(partListNode); SaveNestParts(xmlDoc, partListNode, nestTask.GetNestPartList(), partDxfPath, partColorConfig); // save material info. XmlElement matListNode = xmlDoc.CreateElement("MaterialList"); taskNode.AppendChild(matListNode); SaveMats(xmlDoc, matListNode, nestTask.GetMatList(), matDxfPath); // save param info. XmlElement paramNode = xmlDoc.CreateElement("Param"); taskNode.AppendChild(paramNode); SaveNestParam(xmlDoc, paramNode, nestTask.GetNestParam(), iNestingTime); xmlDoc.Save(strFilePath); }
private void loadTaskBtn_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Task Files|*.xml"; openFileDialog.RestoreDirectory = true; openFileDialog.FilterIndex = 1; if (openFileDialog.ShowDialog() == DialogResult.OK) { String strFilePath = openFileDialog.FileName; NestTaskEx nestTask = TaskStorage.LoadNestTask_from_taskFile(strFilePath, m_partDxfPath, m_matDxfPath, m_partColorConfig, m_impDataList, ref m_iNestingTime); m_nestParam = nestTask.GetNestParam(); // disable select-change event. m_bDisableSelChgEvent = true; // clean list. partListView.Items.Clear(); matListView.Items.Clear(); // init part list. { m_nestPartList = nestTask.GetNestPartList(); for (int i = 0; i < m_nestPartList.Size(); i++) { AddPart_to_listCtrl(m_nestPartList.GetNestPartByIndex(i), ""); } // select the last row. if (partListView.Items.Count > 0) { partListView.SelectedItems.Clear(); partListView.Items[partListView.Items.Count - 1].Selected = true; partListView.Items[partListView.Items.Count - 1].Focused = true; partListView.Items[partListView.Items.Count - 1].EnsureVisible(); } } // init material. { m_matList = nestTask.GetMatList(); for (int i = 0; i < m_matList.Size(); i++) { AddMat(m_matList.GetMatByIndex(i)); } } // enable select-change event. m_bDisableSelChgEvent = false; Preview_selected_part(); Preview_selected_material(); } }
// display the nesting result. private void DisplayNestResult() { if (m_sheetList == null) { return; } m_bDisableEvent = true; // display detail info of each sheet. shtListView.Items.Clear(); for (int i = 0; i < m_sheetList.Size(); i++) { SheetEx sheet = m_sheetList.GetSheetByIndex(i); // insert a row. int iCount = shtListView.Items.Count + 1; ListViewItem item = shtListView.Items.Add(iCount.ToString()); // "name" column. item.SubItems.Add(sheet.GetName()); // "sheet count" column. item.SubItems.Add(sheet.GetCount().ToString()); // "material name" column. item.SubItems.Add(sheet.GetMat().GetName()); // hold the sheet ID. item.Tag = sheet.GetID(); } /************************************************************************/ // part group. NestPartListEx nestPartList = m_nestTask.GetNestPartList(); // submitted part count. int iSubmitPartCount = 0; for (int i = 0; i < nestPartList.Size(); i++) { iSubmitPartCount += nestPartList.GetNestPartByIndex(i).GetNestCount(); } subPartTextBox.Text = iSubmitPartCount.ToString(); // the count of the nested parts. int iNestedPartCount = m_sheetList.GetPartInstTotalCount(); nestPartTextBox.Text = iNestedPartCount.ToString(); // display detailed info of each part. partListView.Items.Clear(); for (int i = 0; i < nestPartList.Size(); i++) { NestPartEx nestPart = nestPartList.GetNestPartByIndex(i); PartEx part = nestPart.GetPart(); // insert a row. int iCount = partListView.Items.Count + 1; ListViewItem item = partListView.Items.Add(iCount.ToString()); // "name" column. item.SubItems.Add(part.GetName()); // "submitted count" column. item.SubItems.Add(nestPart.GetNestCount().ToString()); // "nested count" column. int iNestedCount = m_sheetList.GetPartInstCount(part.GetID()); item.SubItems.Add(iNestedCount.ToString()); } /************************************************************************/ /************************************************************************/ // material group. MatListEx matList = m_nestTask.GetMatList(); // the utilization of material. double dUtilization = NestHelper.CalcMatUtil(m_sheetList, m_nestTask.GetNestParam()); utilTextBox.Text = dUtilization.ToString("0.00"); matListView.Items.Clear(); for (int i = 0; i < matList.Size(); i++) { MatEx mat = matList.GetMatByIndex(i); // insert a row. int iCount = matListView.Items.Count + 1; ListViewItem item = matListView.Items.Add(iCount.ToString()); // "name" column. item.SubItems.Add(mat.GetName()); // "submitted count" column. item.SubItems.Add(mat.GetCount().ToString()); // "consumed count" column. int iConsumedCount = m_sheetList.GetSheetCount(mat.GetID()); item.SubItems.Add(iConsumedCount.ToString()); } /************************************************************************/ // preview the first sheet. if (shtListView.Items.Count > 0) { shtListView.Items[0].Selected = true; // get the select sheet. ListView.SelectedListViewItemCollection selItems = shtListView.SelectedItems; ListViewItem item = selItems[0]; long iSheetID = (long)item.Tag; SheetEx selectedSheet = m_sheetList.GetSheetByID(iSheetID); // fit the window. DrawHelper.FitWindow(selectedSheet.GetMat().GetBoundaryRect(), m_shtViewPort, shtPreViewWnd); PreviewSheet(); } m_bDisableEvent = false; }