diff --git a/PointCloudWeb.Server/PointCloudWeb.Server.ScanConverter/PointCloudWeb.Server.ScanConverter.csproj b/PointCloudWeb.Server/PointCloudWeb.Server.ScanConverter/PointCloudWeb.Server.ScanConverter.csproj new file mode 100644 index 0000000..8dc6818 --- /dev/null +++ b/PointCloudWeb.Server/PointCloudWeb.Server.ScanConverter/PointCloudWeb.Server.ScanConverter.csproj @@ -0,0 +1,12 @@ + + + + Exe + netcoreapp3.1 + + + + + + + diff --git a/PointCloudWeb.Server/PointCloudWeb.Server.ScanConverter/Program.cs b/PointCloudWeb.Server/PointCloudWeb.Server.ScanConverter/Program.cs new file mode 100644 index 0000000..b5f92ee --- /dev/null +++ b/PointCloudWeb.Server/PointCloudWeb.Server.ScanConverter/Program.cs @@ -0,0 +1,49 @@ +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(string[] args) + { + var scanPoints = File.ReadAllLines("C:\\Users\\timwu\\Desktop\\Scans\\0yGrad-edited-scan.csv") + .Select(v => ScanDataPointFromCsv(v)) + .Where(scan => scan.DistanceMM > 0) + .ToList(); + + var result = new List(); + var converter = new ScanConverterService(); + + foreach (var scan in scanPoints) + { + result.Add(converter.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); + + string csv = String.Join("\n", result.Select(point => point.X + ", " + point.Y + ", " + point.Z).ToArray()); + + File.WriteAllText("C:\\Users\\timwu\\Desktop\\Scans\\0yGrad-pc.csv", csv); + + Console.WriteLine("Convert finished"); + Console.ReadLine(); + } + + private static ScanDataPoint ScanDataPointFromCsv(string csvLine) + { + string[] values = csvLine.Split(','); + return new ScanDataPoint( + ray: Convert.ToDouble(values[0], CultureInfo.InvariantCulture), + rax: Convert.ToDouble(values[1], CultureInfo.InvariantCulture), + distanceMM: Convert.ToInt32(values[2], CultureInfo.InvariantCulture) + ); + } + } +} \ No newline at end of file diff --git a/PointCloudWeb.Server/PointCloudWeb.Server.sln b/PointCloudWeb.Server/PointCloudWeb.Server.sln index b0906d9..b8f953f 100644 --- a/PointCloudWeb.Server/PointCloudWeb.Server.sln +++ b/PointCloudWeb.Server/PointCloudWeb.Server.sln @@ -7,6 +7,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PointCloudWeb.Server", "Poi EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PointCloudWeb.Server.Tests", "PointCloudWeb.Server.Tests\PointCloudWeb.Server.Tests.csproj", "{A2493168-0373-460F-8F1D-48F62ED804BA}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PointCloudWeb.Server.ScanConverter", "PointCloudWeb.Server.ScanConverter\PointCloudWeb.Server.ScanConverter.csproj", "{BC69BBF4-FA13-44F4-97C3-2D49E4951087}" + ProjectSection(ProjectDependencies) = postProject + {BD246537-F063-4A5A-8957-AF25E021132D} = {BD246537-F063-4A5A-8957-AF25E021132D} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -21,6 +26,10 @@ Global {A2493168-0373-460F-8F1D-48F62ED804BA}.Debug|Any CPU.Build.0 = Debug|Any CPU {A2493168-0373-460F-8F1D-48F62ED804BA}.Release|Any CPU.ActiveCfg = Release|Any CPU {A2493168-0373-460F-8F1D-48F62ED804BA}.Release|Any CPU.Build.0 = Release|Any CPU + {BC69BBF4-FA13-44F4-97C3-2D49E4951087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC69BBF4-FA13-44F4-97C3-2D49E4951087}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BC69BBF4-FA13-44F4-97C3-2D49E4951087}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BC69BBF4-FA13-44F4-97C3-2D49E4951087}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE