using PointCloudWeb.Server.Models; using PointCloudWeb.Server.Services; using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; namespace PointCloudWeb.Server.ScanConverter { internal class Program { private static void Main() { var scanPoints = File.ReadAllLines("C:/Users/timwu/Desktop/Scans/0yGrad-scan-org.csv") .Select(v => ScanDataPointFromCsv(v)) .Where(scan => scan.DistanceMM > 0) .ToList(); var result = new List(); foreach (var scan in scanPoints) { result.Add(ScanConverterService.Transform(scan)); //Console.WriteLine(result.Count + ":: " + scan.ToString() + " => " + result[result.Count - 1].ToString()); } result.RemoveAll(point => point.X == 0 && point.Y == 0 & point.Z == 0); var csv = "x,y,z\n" + string.Join("\n", result.Select(point => point.X + ", " + point.Y + ", " + point.Z).ToArray()); File.WriteAllText("C:\\Users\\timwu\\Desktop\\Scans\\0yGrad-pc-org.csv", csv); Console.WriteLine("Convert finished"); // Console.ReadLine(); } private static ScanDataPoint ScanDataPointFromCsv(string csvLine) { string[] values = csvLine.Split(','); var scan = new ScanDataPoint( ray: Convert.ToDouble(values[0], CultureInfo.InvariantCulture), rax: Convert.ToDouble(values[1], CultureInfo.InvariantCulture), distanceMM: (int)Convert.ToDouble(values[2], CultureInfo.InvariantCulture) ); //scan.RAX += 90; // scan.RAY += 90; //scan.RAX %= 360; // scan.RAY %= 360; return scan; if (scan.RAX == 1) return scan; return new ScanDataPoint(); } } }