コード例 #1
0
        static private NestPartListEx LoadNestParts_V1(string strTaskFilePath, XmlNode partListNode, List <KeyValuePair <long, string> > partDxfPath,
                                                       ImpDataListEx impDataList, Dictionary <long, int> partColorConfig)
        {
            NestPartListEx nestParts = new NestPartListEx();

            for (int i = 0; i < partListNode.ChildNodes.Count; i++)
            {
                XmlNode    partNode = partListNode.ChildNodes.Item(i);
                NestPartEx nestPart = new NestPartEx();

                // part Path.
                string strPartFileFullPath = partNode.SelectSingleNode("Path").InnerText;

                // load part.
                if (!File.Exists(strPartFileFullPath))
                {
                    // the new file path.
                    string strTaskFileFolder      = strTaskFilePath.Substring(0, strTaskFilePath.LastIndexOf("\\"));
                    string strPartFileName        = strPartFileFullPath.Substring(strPartFileFullPath.LastIndexOf("\\") + 1, strPartFileFullPath.Length - strPartFileFullPath.LastIndexOf("\\") - 1);
                    string strNewPartFileFullPath = strTaskFileFolder + "\\" + strPartFileName;

                    // try again.
                    if (!File.Exists(strNewPartFileFullPath))
                    {
                        string strMessage = "Cannot find part file: ";
                        MessageBox.Show(strMessage + strPartFileFullPath, "NestProfessor DEMO");
                        continue;
                    }
                    else
                    {
                        strPartFileFullPath = strNewPartFileFullPath;
                    }
                }
                PartEx part = NestHelper.LoadPartFromDxfdwg(strPartFileFullPath, impDataList);
                nestPart.SetPart(part);

                // nest count.
                nestPart.SetNestCount(Convert.ToInt32(partNode.SelectSingleNode("Count").InnerText));

                // rotate.
                nestPart.SetRotStyle((PART_ROT_STYLE_EX)Convert.ToInt32(partNode.SelectSingleNode("Rotate").InnerText));

                // custom angle.
                if (nestPart.GetRotStyle() == PART_ROT_STYLE_EX.PART_ROT_CUSTOM_ANG)
                {
                    ArrayList customRotAngs = new ArrayList();

                    string   strAngles = partNode.SelectSingleNode("CustomAng").InnerText;
                    string[] strArray  = strAngles.Split(',');
                    foreach (string strAngle in strArray)
                    {
                        double dAngle = Convert.ToDouble(strAngle);
                        customRotAngs.Add(dAngle);
                    }
                    nestPart.SetCustomRotAng(customRotAngs);
                }

                // color.
                int iColor = Convert.ToInt32(partNode.SelectSingleNode("Color").InnerText);

                nestParts.AddNestPart(nestPart);
                partDxfPath.Add(new KeyValuePair <long, string>(nestPart.GetID(), strPartFileFullPath));
                partColorConfig[nestPart.GetPart().GetID()] = iColor;
            }

            return(nestParts);
        }