Обработка массива координат XY из файла, Visual C#

Альберт13 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
26.05.2012

Всего два задания

Откройте приложенный пример файла 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

Заявки фрилансеров