Пример #1
0
        public static void FixIplCoordinates(List <string> ipl, List <string> ipl_raw, BackgroundWorker bgWorker)
        {
            for (int i = 0; i < ipl_raw.Count; i++)
            {
                LogCoord.ReportFile(ipl[i]);
                string[] line = Regex.Split(ipl_raw[i], "\r\n");
                int      stat = 0;
                for (int j = 0; j < line.Length; j++)
                {
                    switch (stat)
                    {
                    case 0:
                        if (line[j].Equals("inst"))
                        {
                            stat = 1;
                        }
                        break;

                    case 1:
                        if (line[j].Equals("end"))
                        {
                            stat = 2;
                        }
                        else
                        {
                            string[] dummy = line[j].Split(',');
                            LogCoord.InitCoordinates();
                            LogCoord.LogCoordinates(dummy[3], dummy[4], dummy[5]);
                            if (dummy.Length > 1)
                            {
                                decimal posx, posy, posz;
                                posx     = Decimal.Parse(dummy[3], NumberStyles.Any, CultureInfo.InvariantCulture);
                                posy     = Decimal.Parse(dummy[4], NumberStyles.Any, CultureInfo.InvariantCulture);
                                posz     = Decimal.Parse(dummy[5], NumberStyles.Any, CultureInfo.InvariantCulture);
                                posx    += Editor.xOff;
                                posy    += Editor.yOff;
                                posz    += Editor.zOff;
                                dummy[3] = " " + posx.ToString().Replace(",", ".");
                                dummy[4] = " " + posy.ToString().Replace(",", ".");
                                dummy[5] = " " + posz.ToString().Replace(",", ".");
                                line[j]  = String.Join(",", dummy);
                            }
                            LogCoord.LogCoordinates(dummy[3], dummy[4], dummy[5]);
                            LogCoord.WriteCoordErrorLine(dummy[0] + ", " + dummy[1], Editor.xOff, Editor.yOff, Editor.zOff);
                        }
                        break;
                    }
                }
                Editor.UpdateProgress();
                bgWorker.ReportProgress(Editor.PercentageCompleted,
                                        String.Format("{0} %\nEditing coordinates of: {1}",
                                                      Editor.PercentageCompleted.ToString(), ipl[i]));
                ipl_raw[i] = String.Join("\r\n", line);
            }
            LogCoord.EndLogging("coordinate_change.log");
        }
Пример #2
0
        public static void WriteCoordErrorLine(string ipl_item, decimal x_offset, decimal y_offset, decimal z_offset)
        {
            string x1   = LogCoord.Coord[0],
                   y1   = LogCoord.Coord[1],
                   z1   = LogCoord.Coord[2],
                   x2   = LogCoord.Coord[3],
                   y2   = LogCoord.Coord[4],
                   z2   = LogCoord.Coord[5];
            decimal dx1 = Decimal.Parse(LogCoord.Coord[0], NumberStyles.Any, CultureInfo.InvariantCulture),
                    dy1 = Decimal.Parse(LogCoord.Coord[1], NumberStyles.Any, CultureInfo.InvariantCulture),
                    dz1 = Decimal.Parse(LogCoord.Coord[2], NumberStyles.Any, CultureInfo.InvariantCulture),
                    dx2 = Decimal.Parse(LogCoord.Coord[3], NumberStyles.Any, CultureInfo.InvariantCulture),
                    dy2 = Decimal.Parse(LogCoord.Coord[4], NumberStyles.Any, CultureInfo.InvariantCulture),
                    dz2 = Decimal.Parse(LogCoord.Coord[5], NumberStyles.Any, CultureInfo.InvariantCulture);

            if (x1.Split('.').Length > 1 &&
                x2.Split('.').Length > 1 &&
                x1.Split('.')[1] != x2.Split('.')[1] ||
                y1.Split('.').Length > 1 &&
                y2.Split('.').Length > 1 &&
                y1.Split('.')[1] != y2.Split('.')[1] ||
                z1.Split('.').Length > 1 &&
                z2.Split('.').Length > 1 &&
                z1.Split('.')[1] != z2.Split('.')[1])
            {
                if (dx2 != (dx1 + x_offset) ||
                    dy2 != (dy1 + y_offset) ||
                    dz2 != (dz1 + z_offset))
                {
                    if (LogCoord.File != String.Empty)
                    {
                        LogCoord.raw += String.Format("File: {0}\r\n", LogCoord.File);
                        LogCoord.ClearFile();
                    }
                    LogCoord.raw += String.Format(
                        "Warning! Decimal difference found in: \"{0}\", "
                        + "coord change: x {1} -> {2}, y {3} -> {4}, z {5} -> {6}\r\n",
                        ipl_item, x1, x2, y1, y2, z1, z2);
                }
            }
        }