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"); }
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); } } }