Если данные будут начинаться, заканчиваться раньше, типа такого: То можно будет как прогонять до конца, так и не прогонять.MAX3000 писал(а):selenur, алгоритм немножко другой должен быть. Зона торможения-разгона прибавляется/вычитается к крайним Х-точкам линии перед и после G0. Но тут надо учитывать координату Х начала следующей линии, если она больше, то прибавлять к ней, если меньше, то не прибавлять - это если движение происходит по контуру картинки, пропуская белые места. А если перемещение осуществлять по ширине картинки, то тут проще - перед G0 лазер движется G0 Xmax+dx (G0 Xmin-dX), затем идет команда G0 X dY, дальше G0 X-dX и код отрисовки следующей линии, крайние положения лазера по координате Х всегда будут одинаковы, но при таком методе лишние движения будут.
Предварительно это я сделал так:
Если это векторные данные, то они состоят из линий, и точек в каждой линии.
Если это траектория для выжигания, то она состоит из линий где первая линия направлена слева-направо, вторая справа налево.
В самом профиле сделал так:
Код: Выделить всё
// тут если нужно вставляем одну или несколько строк с командами
// которые нужно в начале документа
LINES
{
// тут команды которые можно выполнить до начала движения по точкам линии
// доступные переменные: X,Y,S,P,F первой точки, Xmin, Xmax,Ymin,Ymax всех данных
//!!!!!!!! только Для ВЫЖИГАНИЯ
TOLEFT
{
// команды выполняемые при начале движения влево
}
TORIGHT
{
// команды выполняемые при начале движения в право
}
//!!!!!!!! только Для ВЫЖИГАНИЯ
POINTS
{
// если нужно пропустить первую точку можно воспользоваться командой [SKIP_FIRST_POINT]
//тут команды выполняемые для позиционирования в точке
}
//!!!!!!!! только Для ВЫЖИГАНИЯ
FROMLEFT
{
// команды выполняемые после движения влево
}
FROMRIGHT
{
// команды выполняемые после движения в право
}
//!!!!!!!! только Для ВЫЖИГАНИЯ
// тут команды, выполняемые после движения
}
//тут команды в конце документа
Если в квадратные скобки, то это вывод данных.
