87 lines
2.8 KiB
C#
87 lines
2.8 KiB
C#
using System.Text;
|
|
|
|
namespace Adaptation.FileHandlers.csv;
|
|
|
|
public class Setup
|
|
{
|
|
|
|
#nullable disable
|
|
|
|
public string Finish { get; set; }
|
|
public string NorthProbeID { get; set; }
|
|
public string SouthProbeID { get; set; }
|
|
public string MeasurementPolarity { get; set; }
|
|
public string SineBevelAngle { get; set; }
|
|
public string ContactRadius { get; set; }
|
|
public string ProbeSpacing { get; set; }
|
|
public string ProbeLoad { get; set; }
|
|
public string Orientation { get; set; }
|
|
public string NumberOfStepSizes { get; set; }
|
|
public List<Step> Steps { get; set; }
|
|
|
|
#nullable enable
|
|
#pragma warning disable CA1834
|
|
|
|
internal static Setup? GetSetup(string[] lines, int start, int stop)
|
|
{
|
|
Setup? result;
|
|
Step step;
|
|
string first;
|
|
string[] segments;
|
|
int? secondStart = null;
|
|
List<Step> steps = new();
|
|
List<string> values = new();
|
|
StringBuilder stringBuilder = new();
|
|
for (int i = start; i < stop; i++)
|
|
{
|
|
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
|
|
first = segments.First();
|
|
if (first == "Step")
|
|
{
|
|
secondStart = i + 1;
|
|
break;
|
|
}
|
|
_ = stringBuilder.Append(first).Append(",");
|
|
if (segments.Length > 1)
|
|
values.Add(segments[1]);
|
|
else
|
|
values.Add(string.Empty);
|
|
}
|
|
string header = "Finish,North Probe ID,South Probe ID,Measurement Polarity,Sine Bevel Angle,Contact Radius (µm),Probe Spacing (µm),Probe Load (gm),Orientation,Number of Step Sizes,";
|
|
if (secondStart is null || stringBuilder.Length != header.Length || stringBuilder.ToString() != header)
|
|
result = null;
|
|
else
|
|
{
|
|
result = new()
|
|
{
|
|
Finish = values[0],
|
|
NorthProbeID = values[1],
|
|
SouthProbeID = values[2],
|
|
MeasurementPolarity = values[3],
|
|
SineBevelAngle = values[4],
|
|
ContactRadius = values[5],
|
|
ProbeSpacing = values[6],
|
|
ProbeLoad = values[7],
|
|
Orientation = values[8],
|
|
NumberOfStepSizes = values[9],
|
|
Steps = steps,
|
|
};
|
|
for (int i = secondStart.Value; i < stop; i++)
|
|
{
|
|
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
|
|
if (segments.Length < 4)
|
|
continue;
|
|
step = new()
|
|
{
|
|
Number = segments[0],
|
|
Points = segments[1],
|
|
X = segments[2],
|
|
Y = segments[3],
|
|
};
|
|
steps.Add(step);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
} |