Advertisement
Lusien_Lashans

Point Parser

Aug 13th, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.46 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using UnityEngine;
  5.  
  6. public class Point3D
  7. {
  8.     public double X { get; set; }
  9.     public double Y { get; set; }
  10.     public double Z { get; set; }
  11.     public Point3D(double x, double y, double z) { X = x; Y = y; Z = z;}
  12. }
  13.  
  14. public class Parser : MonoBehaviour
  15. {
  16.     // Use this for initialization
  17.     void Start()
  18.     {
  19.         var text = ReadFileResult();
  20.         var keyValues = new Dictionary<string, string>(); //здесь хранятся десять строк от Data до Version
  21.         FillTheDictionary(text, keyValues);
  22.         var arrayOfStrings = text.Split('\n');
  23.         var listOfPoints = new List<Point3D>(); //здесь будут храниться все точки
  24.         for (int i = 11; i < arrayOfStrings.Length; i++)
  25.         {
  26.             var strCoordinates = arrayOfStrings[i].Split(' ');
  27.             if (arrayOfStrings[i] == "nan nan nan" || strCoordinates.Length != 3)
  28.                 continue;
  29.             listOfPoints.Add(new Point3D(
  30.                 double.Parse(strCoordinates[0].Replace('.', ',')),
  31.                 double.Parse(strCoordinates[1].Replace('.', ',')),
  32.                 double.Parse(strCoordinates[2].Replace('.', ',')))
  33.                 );
  34.         }
  35.     }
  36.     // Update is called once per frame
  37.     void Update () {
  38.        
  39.     }
  40.  
  41.     private static string ReadFileResult() //метод нахождения и чтения файла result.pcl
  42.     {
  43.         var text = "";
  44.         var currentDirectory = Directory.GetCurrentDirectory();
  45.         currentDirectory += "\\Assets\\resourses";
  46.         var files = Directory.GetFiles(currentDirectory);
  47.  
  48.         for (int i = 0; i < files.Length; i++)
  49.             if (files[i] == currentDirectory + "\\result.pcl")
  50.             {
  51.                 text = File.ReadAllText(files[i]);
  52.                 break;
  53.             }
  54.  
  55.         return text;
  56.     }
  57.     private static void FillTheDictionary(string text, Dictionary<string, string> keyValues) //метод для заполнения словаря с 10 первыми значениями
  58.     {
  59.         var arrrayOfStrings = text.Split('\n');
  60.  
  61.         for (int i = 1; i <= 10; i++)
  62.             keyValues.Add(
  63.                 arrrayOfStrings[i].Substring(0, arrrayOfStrings[i].IndexOf(" ")), //до пробела
  64.                 arrrayOfStrings[i].Substring(arrrayOfStrings[i].IndexOf(" ") + 1) //после пробела
  65.                 );
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement