Обработка массива координат XY из файла, Visual C#
Всего два задания
Откройте приложенный пример файла sample2.CNC блокнотом.
sample2.CNC в формате Gcode.
Координаты X и Y в Gcode даны в миллиметрах.
Скачайте программу Mach3 http://www.machsupport.com/ccount/click.php?id=1 и откройте с помощью нее файл sample2.CNC (через кнопку Load G-code).
Увидите сетку прямоугольников (~12 столбцов и более 15 строчек...сколько именно не считал).
Т.е. в файле sample2.CNC заданы все координаты XY для прорисовки этой сетки. Если в Mach3 в левом окошке курсором будете листать sample2.CNC, то увидите в правом окошке в какой последовательности будет прорисовываться эта "сетка".
Нужно написать консольную прграмму на C#, имя файла который нужно обработать передается через командную строку. Например, запускаем программу с параметром "program.exe sample2.CNC"
Файл текстовый, любым удобным способом или с помощью Regex (Regular expressions) в файле находить циклы G00..M05, типизировать X и Y и сохранять (например в массив) для дальнейшей обработки.
Задание 1. Удалить "избыточные отрезки".
Искать циклы G00..M05 и удалять избыточные строчки, у которых одна из координат X или Y одинаковая (если X или Y одниковая, значит это один отрезок, разбитый на несколько подотрезков)
См. sample2.CNC
БЫЛО:
...
N60 G00X176.68Y508.75
N70 M03
N80 G04 P0.4
N90 G01X176.68Y501.75F2500
N100 G01X176.68Y339.25
N110 G01X176.68Y176.75
N120 G01X176.68Y14.25
N130 G01X176.68Y13.75
N140 M05
... Т.е. прочерчивается прямая с точки X176.68Y508.75 до точки G01X176.68Y13.75
Промежуточные строчки (промежуточные отрезки) просто удалить, т.е.:
НУЖНО ЧТОБЫ СТАЛО:
...
N60 G00X176.68Y508.75
N70 M03
N80 G04 P0.4
N130 G01X176.68Y13.75
N140 M05
...
и т.д. со всеми циклами G00...M05
Обработанный файл сохранить в файл zadanie1.CNC
Задание 2. Добавить "избыточные отрезки".
Искать циклы G00..M05 и добавить избыточные отрезки (разбить отрезок на подотрезки) за 15мм (Before) до пересечения и 5мм (After) после пересечения "нарисованных" отрезков.
В коде задаем параметры Before=15mm, After=5mm (который можно будет ручками менять).
Было (после выполнения первого задания):
...
N60 G00X176.68Y508.75
N70 M03
N80 G04 P0.4
N130 G01X176.68Y13.75
N140 M05
...
НУЖНО ЧТОБЫ СТАЛО (т.е. добавить 2 строчки в циклы M03..M05 если этот отрезок пересекает другой):
...
N60 G00X176.68Y508.75
N70 M03
N80 G04 P0.4
N81 G00X176.68Y120.00 // координата 15мм до пересечения отрезка (координата взята с потолка просто для примера).
N82 G00X176.68Y100.00 M10// координата 5мм после пересечения отрезка
N130 G01X176.68Y13.75 M11
N140 M05
...
Обработанный файл сохранить в файл zadanie2.CNC