Ejemplo n.º 1
0
        public static HoleCollection LoadFromFile(string fileName)
        {
            BaseInfoCollection collection     = new BaseInfoCollection(fileName);
            HoleCollection     holeCollection = new HoleCollection();

            for (int i = 0; i < collection.Count; i++)
            {
                var baseInfo = collection[i];
                if (baseInfo is SingleMoveInfo)
                {
                    var singleMove = baseInfo as SingleMoveInfo;
                    var holeInfo   = new HoleInfo()
                    {
                        X     = singleMove.X,
                        Y     = singleMove.Y,
                        W     = singleMove.W,
                        B     = singleMove.B,
                        C     = singleMove.C,
                        Param = singleMove.Param
                    };
                    if (i < collection.Count - 1 && collection[i + 1] is M21Info)
                    {
                        holeInfo.IsJiaGong = true;
                    }
                    holeCollection.Add(holeInfo);
                }
            }
            return(holeCollection);
        }
Ejemplo n.º 2
0
        public object Clone()
        {
            var newCollection = new HoleCollection();

            foreach (var item in this)
            {
                newCollection.Add(item.Clone() as HoleInfo);
            }
            return(newCollection);
        }
Ejemplo n.º 3
0
        public static HoleCollection LoadCnc(string fileName, string mode)
        {
            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
            {
                using (StreamReader sr = new StreamReader(fs))
                {
                    var collection = new HoleCollection();
                    var axisType = "G54";
                    string line = sr.ReadLine().Replace(" ", "");
                    if (string.IsNullOrEmpty(line) || !line.StartsWith("O1234"))
                    {
                        throw new WarningException(L.R("PNCHelper.FileError1", "文件格式错误:缺少开始符!"));
                    }
                    HoleInfo holeInfo = null;
                    int index = 2;
                    Regex reg = new Regex(@"([X,Y,W,B,C])([-]?\d+(\.\d+)?)");
                    while (true)
                    {
                        line = sr.ReadLine().Replace(" ", "");
                        if (!string.IsNullOrEmpty(line))
                        {
                            if (mode == "2")
                            {
                                if (line.StartsWith("G"))
                                {
                                    holeInfo = new HoleInfo() { IsJiaGong = false, AxisType = axisType };
                                    string[] list = line.Split(new char[] { '	' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (list.Length != 7 && list.Length != 8)
                                    {
                                        throw new WarningException("无效的脚本:" + line);
                                    }
                                    holeInfo.AxisType = list[0];
                                    holeInfo.X = Convert.ToDecimal(list[1]);
                                    holeInfo.Y = Convert.ToDecimal(list[2]);
                                    holeInfo.W = Convert.ToDecimal(list[3]);
                                    holeInfo.B = Convert.ToDecimal(list[4]);
                                    holeInfo.C = Convert.ToDecimal(list[5]);
                                    holeInfo.Param = list[6];
                                    if (list.Length == 8)
                                        holeInfo.IsJiaGong = list[7] == "M21";
                                    collection.Add(holeInfo);
                                }
                                else if ((line.StartsWith("M11") || line.StartsWith("M21")) && holeInfo != null)
                                {
                                    holeInfo.IsJiaGong = true;
                                }
                                else if (line.StartsWith("M30"))
                                {
                                    break;
                                }
                                else
                                {
                                    throw new WarningException(L.R("PNCHelper.FileError3", "文件格式错误:无法解析的行[{0}],行{0}"), line, index);
                                }
                            }
                            else
                            {
                                if (line.StartsWith("G0"))
                                {
                                    holeInfo = new HoleInfo() { IsJiaGong = false, AxisType = axisType };
                                    MatchCollection matchs = reg.Matches(line);
                                    foreach (Match match in matchs)
                                    {
                                        switch (match.Groups[1].Value)
                                        {
                                            case "X": holeInfo.X = Convert.ToDecimal(match.Groups[2].Value); break;
                                            case "Y": holeInfo.Y = Convert.ToDecimal(match.Groups[2].Value); break;
                                            case "W": holeInfo.W = Convert.ToDecimal(match.Groups[2].Value); break;
                                            case "B": holeInfo.B = Convert.ToDecimal(match.Groups[2].Value); break;
                                            case "C": holeInfo.C = Convert.ToDecimal(match.Groups[2].Value); break;
                                        }
                                    }
                                    collection.Add(holeInfo);
                                }
                                else if (line == "G54" || line == "G55" || line == "G56" || line == "G57" || line == "G58" || line == "G59")
                                {
                                    axisType = line;
                                }
                                else if ((line.StartsWith("M11") || line.StartsWith("M21")) && holeInfo != null)
                                {
                                    holeInfo.IsJiaGong = true;
                                }
                                else if (line.StartsWith("M30"))
                                {
                                    break;
                                }
                                else
                                {
                                    throw new WarningException(L.R("PNCHelper.FileError3", "文件格式错误:无法解析的行[{0}],行{0}"), line, index);
                                }
                            }

                            index++;
                        }
                    }
                    return collection;
                }
            }
        }