Gcode tools - расширение для плазмы

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Gcode tools - расширение для плазмы

Сообщение Nick »

Gcode tools расширение для плазменной резки


Здесь будет обсуждаться разработка функций связанных с плазменной резкой.
Позже сделаю нормальную шапку.

Предварительный список задач:

  1. Вход/выход
    Различные траектории входа/выхода: касательная, дуга, перпендикуляр.
    Нужно проверять, чтобы траектория входа и выхода была снаружи от детали.
  2. Произвольный код между/перед/после каждой кривой.
    Скорее всего будет решаться параметрами инструмента
  3. Отступ от кривой на небольшое расстояние (частично сделано)
  4. Библиотека материалов.
    Скорее всего будет решаться библиотекой инструментов
  5. Автоматическую оптимизацию расположения деталей на листе
  6. ...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

Ура :)! Более менее дописал процедуру упрощения контура. Вот примерчик:
0061 gcode tools plasma arrange.png (6349 просмотров) <a class='original' href='./download/file.php?id=577&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (231.27 КБ)</a>
Сначала кривую заменяем полигоном, составленным из ее контрольных точек, затем упрощаем полученный полигон убирая все внутренние точки. При этом полигон остается не выпуклым, что не сильно ухудшит будущую расстановку. В итоге мы получаем достаточно простой полигон, в котором находится наша исходная кривая.
Количество сторон полигона на втором шаге уменьшается примерно вдвое, соответственно алгоритм должен работать как минимум в 4 раза быстрее :D .
Выход процедуры (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

Redused edges count from 272
                      to 144 
Redused edges count from 140 
                      to 71 
Redused edges count from 162 
                      to 83 
Redused edges count from 162 
                      to 83 
Redused edges count from 182 
                      to 92 
Redused edges count from 216 
                      to 114 
Redused edges count from 192 
                      to 89 
Redused edges count from 162 
                      to 83 
Redused edges count from 138 
                      to 69 
Redused edges count from 278 
                      to 140 
pasha
Новичок
Сообщения: 13
Зарегистрирован: 28 июл 2010, 23:30
Репутация: 0

Re: Gcode tools - расширение для плазмы

Сообщение pasha »

Есть несколько вариантов как делать перемычки:
1. Просто перед обработкой разбить контур и использовать обычную процедуру обработки.
2. Предусматривать перемычки в процедуре экспорта.
Нужно чтоб перемычки можно было в любой момент редактировать:
изменять длину, количество, положение. Ещё я говорил чтоб была возможность не дорезать контур до конца, а
делать выход не доходя до точки врезки. тогда будет оставаться перемычка.
Если предусмотреть перемычки в процессе экспорта то потом сложно будет их редактировать
и определять внутренние и внешние контуры. Так?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение aftaev »

Более менее дописал процедуру упрощения контура.
А это что такое и с чем его едят?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

pasha писал(а): Нужно чтоб перемычки можно было в любой момент редактировать:
изменять длину, количество, положение. Ещё я говорил чтоб была возможность не дорезать контур до конца, а
делать выход не доходя до точки врезки. тогда будет оставаться перемычка.
Если предусмотреть перемычки в процессе экспорта то потом сложно будет их редактировать
и определять внутренние и внешние контуры. Так?
В двух словах: в inkscape внутренний или внешний контур определяется в том числе направлением контура. Контуры, которые идут против часовой стрелки - внутренние и наоборот. (Еще можно сказать, что внутренность (сама деталь) находится справа по ходу движения контура.)
0062 gcode tools plasma.png (6348 просмотров) <a class='original' href='./download/file.php?id=578&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (77.16 КБ)</a>
По поводу перемычек: простейший способ добавить в контур дырочки, количество, длина перемычки или длина контура между перемычками можно задавать в параметрах. В таком виде процедура наиболее универсальна - для фрезерных станков можно больше ничего не делать. Дальше контур обрабатывается процедурами входа/выхода... Но, это все еще предстоит реализовать :)...
aftaev писал(а):Более менее дописал процедуру упрощения контура.
А это что такое и с чем его едят?
Эта процедура нужна, чтобы упростить вычисления для расстановки кривых Безье. Вместо самих кривых скрипт будет расставлять многоугольники, в которых находятся кривые. С многоугольниками гораздо проще работать чем с кривыми. Потом к исходным кривым применим те же преобразования, что и к многоугольникам и они окажутся на нужных местах. На картинке вверху видно как упрощается контур - сначала кривая заменяется кучкой многоугольников, а потом стираются лишние линии.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение aftaev »

А как дела с генетическим раскроем(nesting)?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

aftaev писал(а):А как дела с генетическим раскроем(nesting)?
Вот, а потом эти многоугольники передаются генетическому алгоритму :) ... Который я сейчас дописываю...

Просто если прикинуть что у нас есть 10 контуров, каждый из которых мы упростим до 80-ти угольника.
Простейшему алгоритму расстановки нужно как минимум 80*80 + 80*160 + 80*240 + ... + 80*720 = 80 * 80 * (1+2+...+9) = 320 000 операций пересечения двух прямых.
Простейшая популяция для генетического алгоритма имеет 100 особей. Нужно обсчитать как минимум 100 таких популяций итого 320 000 * 100 * 100 = 3 200 000 000 операций пересечения прямых, мда... дохрена получается :roll: ...
pasha
Новичок
Сообщения: 13
Зарегистрирован: 28 июл 2010, 23:30
Репутация: 0

Re: Gcode tools - расширение для плазмы

Сообщение pasha »

Простейшая популяция для генетического алгоритма имеет 100 особей.
Да.... Нихрена не понял...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

pasha писал(а):
Простейшая популяция для генетического алгоритма имеет 100 особей.
Да.... Нихрена не понял...
Смотри здесь: http://www.cnc-club.ru/forum/viewtopic. ... p=885#p885
Описание генетического алгоритма начинается со второго пункта.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение aftaev »

pasha писал(а):
Простейшая популяция для генетического алгоритма имеет 100 особей.
Да.... Нихрена не понял...
Я тоже, но не страшно. Лижбы хорошо работало!!!!
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

Хммм... первые "результатики" .... Контуры пока простенькие, потому, что это еще только первые тесты... ;)
Вложения
0064 gcode tools plasma arrangement.png (6343 просмотра) <a class='original' href='./download/file.php?id=580&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (83.45 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

Популяция 200:
Вложения
0065 gcode tools plasma arrangement.png
0065 gcode tools plasma arrangement.png (11.7 КБ) 6343 просмотра
pasha
Новичок
Сообщения: 13
Зарегистрирован: 28 июл 2010, 23:30
Репутация: 0

Re: Gcode tools - расширение для плазмы

Сообщение pasha »

важно не просто пометить детали на лист, а ещё оставить место для других деталей или оставить как можно больше
делового материала. выложите чертежи этих тестовых деталюшек и размеры листа. я попробую сделать пару вариантов.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

Тут вопрос в характеристической функции. Т.е. как оценить хорошо мы разложили детальки или нет.
Характеристическая функция - это площадь прямоугольника, которые занимают детальки. При этом задана ширина листа.
В обще, эту функцию можно задать по-другому, например минимальная ширина или еще как-нибудь :).

Можно, например, задать лист металла не прямоугольный, а уже с дырками и в нем раскладывать детальки... Но тут нужно интерфейс продумать...

Лучше тесты проводить на реальных деталях. Плюс все равно нужно будет настроить параметры популяций / мутаций / вариаций ну и .т.д. :). А для этого нужно погонять алгоритм на реальных задачах с различными параметрами.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

В одной из статей нашел тест: берем квадратик и разбиваем его на кусочки и смотрим как программа его соберет.
Вот результаты... (сразу конечно все не заработало, но после дня напилинга :rasp: :rasp: :rasp: вроде что-то начало получаться :D )

Повторюсь:
Нужны реальные контуры деталей с которыми ставится задача расстановки!
Вложения
0059 gcodetools plasma arrangement.png (6341 просмотр) <a class='original' href='./download/file.php?id=582&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (98.24 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

Поменял процедуру расстановки:
Раньше контуры произвольно расставлялись на ширину материала и потом "бросались" вниз. При этом методе контуры гарантированно располагаются в пределах материала по ширине, т.к. изначальная расстановка это предполагает и контуры двигаются только по вертикале.
0072 gcode tools plasma arrange.png (6319 просмотров) <a class='original' href='./download/file.php?id=605&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (33.11 КБ)</a>
Теперь контуры произвольно расставляются в пространстве и сдвигаются к "центру масс".
Алгоритм: выбираем произвольный контур за основу.
Далее перебираем по очереди все контуры и пододвигаем максимально близко к основе в направлении центра масс основы.
Добавляем контур к основе и перерассчитываем центр масс.
Данный способ может выдавать расстановки шире чем материал. Для таких расстановок в тестовой функции будем добавлять штрафные баллы, чтобы убрать их из конечной популяции.
0073 gcode tools plasma arrange.png (6319 просмотров) <a class='original' href='./download/file.php?id=606&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (34.92 КБ)</a>

Вот пример расстановки с новым алгоритмом:
Расстановка по номеру популяции - в процессе эволюции. (Показаны только те шаги, на которых происходили изменения.)
0074 gcode tools plasma arrange.png (6319 просмотров) <a class='original' href='./download/file.php?id=607&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (303.4 КБ)</a>
И отдельно крупнее конечная расстановка:
0075 gcode tools plasma arrange.png (6319 просмотров) <a class='original' href='./download/file.php?id=608&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (41.84 КБ)</a>
Юстас

Re: Gcode tools - расширение для плазмы

Сообщение Юстас »

Уже который год "устраиваю"перемычки именно локальным непрорезом! Если,к примеру,рабочая скорость Vр=2500мм\мин,то в потенциально "опасных" местах задаю скорость Vпер=6000-8000мм\мин.На участке длиной 10-15мм.Современные МТР притормаживают на углах,в начале нового кадра,а потому никакого выплеска металла в сторону плазмотрона не происходит.А обрывать дугу,переезжать,а потом снова зажигать ее (??!),для меня-дикость!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

А как ты обычно это реализуешь, программно или вручную?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение aftaev »

скорее всего ручками править Gcode. Программ чтоб перемычки делали ускорением не встречал.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

Что-то я давненько не брался за плазму...
На чем мы остановились?
Сейчас попробовал расстановку, вроде работает. Нужны реальные контуры и реальные задачи для конечной проверки!
Вложения
gcode arrangement.png (5863 просмотра) <a class='original' href='./download/file.php?id=1083&sid=d919d4033a846cae0ccccd0d8616e8a7&mode=view' target=_blank>Загрузить оригинал (169.26 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Gcode tools - расширение для плазмы

Сообщение Nick »

Решил переписать функцию оценки качества расстановки с использованием чистого С. При помощи weave от scipy http://docs.scipy.org/doc/scipy/referen ... benchmarks ... Должно начать быстрее работать...
Ответить

Вернуться в «LinuxCNC»