Beispiel #1
0
        private void MaterialForm_Load(object sender, EventArgs e)
        {
            nameTextBox.Text  = m_mat.GetName();
            countTextBox.Text = m_mat.GetCount().ToString();

            if (m_mat.GetMatType() == MAT_TYPE_EX.MAT_EX_RECT)
            {
                RectMatEx rectMat = (RectMatEx)(m_mat);
                Rect2DEx  rect    = rectMat.GetBoundaryRect();
                widthTextBox.Enabled  = true;
                widthTextBox.Text     = rect.GetWidth().ToString("0.000");
                heightTextBox.Enabled = true;
                heightTextBox.Text    = rect.GetHeight().ToString("0.000");
            }
            else if (m_mat.GetMatType() == MAT_TYPE_EX.MAT_EX_POLY)
            {
                PolyMatEx   polyMat = (PolyMatEx)(m_mat);
                Polygon2DEx poly    = polyMat.GetMatPolygon();
                Rect2DEx    rect    = poly.GetBoundaryRect();
                widthTextBox.Enabled  = false;
                widthTextBox.Text     = rect.GetWidth().ToString("0.000");
                heightTextBox.Enabled = false;
                heightTextBox.Text    = rect.GetHeight().ToString("0.000");
            }
        }
Beispiel #2
0
        // add material to list control.
        private void AddMat(MatEx mat)
        {
            // the boundary rect of the material.
            Rect2DEx boundaryRect = null;

            if (mat.GetMatType() == MAT_TYPE_EX.MAT_EX_RECT)
            {
                RectMatEx rectMat = (RectMatEx)mat;
                boundaryRect = rectMat.GetBoundaryRect();
            }
            else if (mat.GetMatType() == MAT_TYPE_EX.MAT_EX_POLY)
            {
                PolyMatEx   polyMat = (PolyMatEx)mat;
                Polygon2DEx polygon = polyMat.GetMatPolygon();
                boundaryRect = polygon.GetBoundaryRect();
            }

            /************************************************************************/
            // add a row to list control.

            // insert a row.
            int          iCount = matListView.Items.Count + 1;
            ListViewItem item   = matListView.Items.Add(iCount.ToString());

            // name column.
            item.SubItems.Add(mat.GetName());

            // material type column.
            if (mat.GetMatType() == MAT_TYPE_EX.MAT_EX_RECT)
            {
                item.SubItems.Add("矩形材料");
            }
            else if (mat.GetMatType() == MAT_TYPE_EX.MAT_EX_POLY)
            {
                item.SubItems.Add("不规则材料");
            }

            // the material height.
            item.SubItems.Add(boundaryRect.GetHeight().ToString("0.000"));

            // the material width.
            item.SubItems.Add(boundaryRect.GetWidth().ToString("0.000"));

            // the material count.
            item.SubItems.Add(mat.GetCount().ToString());

            // hold the ID.
            item.Tag = mat.GetID();
            /************************************************************************/

            // select the last row.
            matListView.SelectedItems.Clear();
            matListView.Items[matListView.Items.Count - 1].Selected = true;
            matListView.Items[matListView.Items.Count - 1].Focused  = true;
            matListView.Items[matListView.Items.Count - 1].EnsureVisible();
        }
Beispiel #3
0
        private void editMatBtn_Click(object sender, EventArgs e)
        {
            ListView.SelectedListViewItemCollection selItems = matListView.SelectedItems;
            if (selItems.Count != 1)
            {
                MessageBox.Show("Please select one row to edit.", "NestProfessor DEMO");
                return;
            }
            else
            {
                ListViewItem item   = selItems[0];
                long         iMatID = (long)item.Tag;
                MatEx        mat    = m_matList.GetMatByID(iMatID);
                if (mat != null)
                {
                    if (mat.GetMatType() == MAT_TYPE_EX.MAT_EX_POLY)
                    {
                        MessageBox.Show("For irregular material, its width and height can be edited here.", "NestProfessor DEMO");
                    }

                    MaterialForm matForm = new MaterialForm(mat);
                    if (matForm.ShowDialog() == DialogResult.OK)
                    {
                        /************************************************************************/
                        // update the list control.

                        // name column.
                        item.SubItems[1].Text = mat.GetName();

                        if (mat.GetMatType() == MAT_TYPE_EX.MAT_EX_RECT)
                        {
                            RectMatEx rectMat = (RectMatEx)(mat);
                            Rect2DEx  rect    = rectMat.GetBoundaryRect();

                            // the material width.
                            item.SubItems[3].Text = rect.GetWidth().ToString("0.000");

                            // the material height.
                            item.SubItems[4].Text = rect.GetHeight().ToString("0.000");
                        }

                        // count.
                        item.SubItems[5].Text = mat.GetCount().ToString();
                        /************************************************************************/

                        matPreviewWnd.Invalidate();
                    }
                }
            }
        }
Beispiel #4
0
        static private void SaveMats(XmlDocument xmlDoc, XmlNode matListNode, MatListEx mats, List <KeyValuePair <long, string> > matDxfPath)
        {
            for (int i = 0; i < mats.Size(); i++)
            {
                MatEx mat = mats.GetMatByIndex(i);

                XmlElement materialNode = xmlDoc.CreateElement("Material");
                matListNode.AppendChild(materialNode);

                bool bFromDxf = false;
                for (int j = 0; i < matDxfPath.Count; j++)
                {
                    if (matDxfPath[j].Key == mat.GetID())
                    {
                        XmlElement matPathNode = xmlDoc.CreateElement("MatPath");
                        matPathNode.InnerText = matDxfPath[j].Value;
                        materialNode.AppendChild(matPathNode);

                        // Count
                        {
                            XmlElement countNode = xmlDoc.CreateElement("Count");
                            countNode.InnerText = mat.GetCount().ToString();
                            materialNode.AppendChild(countNode);
                        }

                        bFromDxf = true;
                        break;
                    }
                }

                // material is not from dxf.
                if (!bFromDxf)
                {
                    RectMatEx rectMat = (RectMatEx)(mat);

                    // name
                    {
                        XmlElement nameNode = xmlDoc.CreateElement("Name");
                        nameNode.InnerText = mat.GetName();
                        materialNode.AppendChild(nameNode);
                    }

                    // Width
                    {
                        XmlElement widthNode = xmlDoc.CreateElement("Width");
                        widthNode.InnerText = rectMat.GetBoundaryRect().GetWidth().ToString("0.000000");
                        materialNode.AppendChild(widthNode);
                    }

                    // Height
                    {
                        XmlElement heightNode = xmlDoc.CreateElement("Height");
                        heightNode.InnerText = rectMat.GetBoundaryRect().GetHeight().ToString("0.000000");
                        materialNode.AppendChild(heightNode);
                    }

                    // Count
                    {
                        XmlElement countNode = xmlDoc.CreateElement("Count");
                        countNode.InnerText = rectMat.GetCount().ToString();
                        materialNode.AppendChild(countNode);
                    }
                }
            }
        }
        // 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;
        }