48 lines
1.4 KiB
C#
48 lines
1.4 KiB
C#
using System.Collections.Generic;
|
|
|
|
public class RobotProgram
|
|
{
|
|
public string ProgramId { get; private set; }
|
|
public string Version { get; private set; }
|
|
public string MechType { get; private set; }
|
|
public List<RobotMoveStep> Steps { get; private set; }
|
|
|
|
public RobotProgram(string programId, string rawTextContent)
|
|
{
|
|
this.ProgramId = programId;
|
|
this.Steps = new List<RobotMoveStep>();
|
|
|
|
ParseJobContent(rawTextContent);
|
|
}
|
|
|
|
private void ParseJobContent(string rawText)
|
|
{
|
|
// 1. 헤더 파싱 (예: "Robot Job File; { version: 2.0, ... }")
|
|
// 정규식이나 Substring을 사용해 version, mech_type 등 추출
|
|
|
|
// 2. 스텝(S1, S2...) 파싱
|
|
string[] lines = rawText.Split('\n');
|
|
foreach (string line in lines)
|
|
{
|
|
if (line.StartsWith("S")) // (S1, S2... 같은 라인)
|
|
{
|
|
string coordString = ExtractCoordinates(line);
|
|
|
|
// 좌표 문자열을 실제 Pose 데이터로 변환
|
|
RobotMoveStep step = new RobotMoveStep(line, coordString);
|
|
Steps.Add(step);
|
|
}
|
|
}
|
|
}
|
|
|
|
private string ExtractCoordinates(string line)
|
|
{
|
|
int start = line.IndexOf('[');
|
|
int end = line.IndexOf(']');
|
|
if (start != -1 && end != -1)
|
|
{
|
|
return line.Substring(start + 1, end - start - 1);
|
|
}
|
|
return string.Empty;
|
|
}
|
|
} |