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 »

Сейчас пишу библиотеку инструментов и возник вопросик:
Если мы оставляем перемычки, чтобы деталь не отвалилась, то по идее перед каждой перемычкой мы должны:
  • делать выход
  • гасить плазматрон
  • перемещаться на толщину перемычки
  • зажигать плазматрон
  • делать вход
Или я что-то путаю?
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 »

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

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

Сообщение Nick »

Добавлена возможность добавлять произвольный код перед и после обработки каждой кривой. Для этого нужно создать новый инструмент, в вкладке tools library выбрать либо plasma cutter либо default tool и ставить необходимые значения в поля gcode before path и gcode after path. Для plasma cutter'a я добавил по умолчанию то, что писал Aftaev на форуме chipmaker.ru.

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

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

Сообщение Nick »

Автоматическая расстановка деталей на листе

Нужно определится с тем как задавать параметры листа и с параметрами расстановки.
  • расставлять чтобы влезло в указанный "стакан"
    gcode_plasma_cutting_0035.png
    gcode_plasma_cutting_0035.png (3.45 КБ) 11185 просмотров
  • расставлять чтобы занимало наименьшую площадь
    gcode_plasma_cutting_0032.png
    gcode_plasma_cutting_0032.png (3.39 КБ) 11185 просмотров
  • расставлять чтобы был наименьший периметр
    gcode_plasma_cutting_0034.png
    gcode_plasma_cutting_0034.png (3.4 КБ) 11185 просмотров
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

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

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

Сообщение aftaev »

Неумею я коментировать сообщения. Отвечу как умею
Предварительный список задач:
1.Вход/выход
Различные траектории входа/выхода: касательная, дуга, перпендикуляр.
Нужно проверять, чтобы траектория входа и выхода была снаружи от детали.
Входы/выходы могут быть снаружи и внутри детали

2.Произвольный код между/перед/после каждой кривой.
Скорее всего будет решаться параметрами инструмента
Это хорошо
3.Отступ от кривой на небольшое расстояние (частично сделано)
Отступ от кривой может быть как снаружи так и внутри.

5.Автоматическую оптимизацию расположения деталей на листе
Это нужно. Чтоб детали автоматически раскидывались на листе, и можно было ручками их таскать и крутить. Так как программа раскроя (nesting) невсегда хорошо раскладывают детальки.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

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

Сообщение aftaev »

Я все думаю над реализацией траектории входа-выхода...
Какие у них могут быть параметры? Какая длина, какой угол входа?
Правильно

И все никак не могу придумать интерфейс для задания места входа/выхода.
Программа их ставит сама в какойнибудь левый нижний угол к примеру. Потом можно при помощи мыши поставить точку входа где нам удобно.

Что делать если кривая не замкнутая? С какой стороны делать вход и нужен ли он в таком случае?
Нужен или нет вход/выход должен решать оператор. Еси длина 0 или отключена опция то входов/выходов нет.
Было бы очень не плохо если можно было щелкая мышкой на входах/выходах менять каждый выход. Например имеем деталь с 2мя отверстиями. Одно отверстие 200мм и 5мм. Если поставить длину входа, 2,5мм то это будет по центру маленького отверстия, но вот для большого лучше иметь точку входа длиной 10мм.

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

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

Сообщение aftaev »

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

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

Сообщение Nick »

Входы/выходы могут быть снаружи и внутри детали
1. Внутри детали? Хотя по идее не важно. Вход и выход будет устанавливаться относительно нормали к траектории, которая направленна всегда наружу детали. Т.е. если в детали есть дырка, то нормаль будет направлена внутрь дырки. Хотя можно сделать галку внутрь/наружу.

Отступ от кривой может быть как снаружи так и внутри.
Тупо если радиус отступа меньше 0 - то отступ внутрь иначе наружу.

5.Автоматическую оптимизацию расположения деталей на листе
Сейчас думаю об этом. Для этого нужно написать функции объединения полигонов, коллизии полигонов, характеристичекую функцию и написать генетический алгоритм... :)

Программа их ставит сама в какойнибудь левый нижний угол к примеру. Потом можно при помощи мыши поставить точку входа где нам удобно.
А бывают какие-то особые пожелания? А что если программа сама найдет подходящее место, в котором можно сделать максимальный по длине вход/выход (не больше заданной длины конечно)?

А как тут картинки вставлять? Отправлю автору картинки на мыло.
Очень просто, под кнопочкой отправить на страничке ответа есть вкладка добавить вложение и выбираешь любую картинку.

На счет интерфейса главного окна, нужно постараться его уменьшить, у меня пии разрешении 1440x980 оно уже больше половины экрана.
А его нельзя разбить на вкладки и меньшие окошки.
Уже сделали, теперь для разных функций будут разные окошки.
Вложения
0058 gcodetools interface.png (11051 просмотр) <a class='original' href='./download/file.php?id=566&mode=view' target=_blank>Загрузить оригинал (188.47 КБ)</a>
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

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

Сообщение aftaev »

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

А бывают какие-то особые пожелания? А что если программа сама найдет подходящее место, в котором можно сделать максимальный по длине вход/выход (не больше заданной длины конечно)?
Было бы замечательно. Но думаю что если можно править и ручками было очЪ замечательно.

Да еще для плазмы нужно чтоб было такое:
1. Внутренние элементы должны вырезаться первыми. Допустим нужно вырезать квадрат с отверстием в центре. Если мы вырежем квадрат, он выпадет, и отверстие мы уже не вырежим. Поэтому в начале вырезается круг, а потом квадрат.
2. Чтоб можно было указывать какую деталь на листе вырезать первой, второй и тд. или автоматически по крайчайшему растоянию.
3. Копирование деталей (массив) допустим нужо вырезать много листиков для кузнецов. Берем один листик и делаем массив и они плодятся на весь лист по заданному кол-ву.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
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 »

aftaev писал(а): Во во это точно не помне. Я тут недавно нашел в инете какую то десиртацию по раскрою, так там формулы разные что мозги в кучку сбиваются :)
А адресок остался? Я бы почитал...
aftaev писал(а): 3. Копирование деталей (массив) допустим нужо вырезать много листиков для кузнецов. Берем один листик и делаем массив и они плодятся на весь лист по заданному кол-ву.
В inkscape есть такая штука - клоны. Берем одну детальку, нажимаем Правка->Клонировать->Создать узор из клонов вводим сколько на сколько делать (Строк, столбцов) и нажимаем создать. (Там есть много разных настроек, самая простая - смещение.)
Вложения
0059 gcodetools inkscape clones.png (11050 просмотров) <a class='original' href='./download/file.php?id=567&mode=view' target=_blank>Загрузить оригинал (80.54 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

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

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

Сообщение Nick »

Итак, расстановка...

Для расстановки будем использовать генетические алгоритмы. Звучит страшно, но на деле это самое простое.

Какие нужны будут функции.
1. Самая сложная функция расстановки. По заданным параметрам нужно оптимально расставить объекты в заданном пространстве. Функция сложная т.к. фактически совпадает с поставленной задачей. Поэтому мы поступим хитрее, а именно: заменим сложную функцию простой и добавим элемент интеллекта в виде генетического отбора.
Итак простая функция расстановки получает на вход по порядку все контуры для которых заданы:
  • Поворот.
  • Положение относительно оси X
  • И, соответственно, порядок в котором они приходят.
Функция должна определить минимальное значение координаты Y.
Т.е. все выглядит так, как будто мы бросаем по очереди контуры сверху в стакан и они падают на самый низ. Но, т.к. функция простая, то она не учитывает гравитацию, отскоки и всякие повороты. Т.е. просто опускает контур как можно ниже. Т.к. функция должна работать быстро, то мы заменим кривые Безье на их выпуклые оболочки, чтобы уменьшить количество вычислений. (На рисунке пример работы функции, только поменян верх и низ, но это не важно ;) )
0060 gcode tools plasma.png (11007 просмотров) <a class='original' href='./download/file.php?id=579&mode=view' target=_blank>Загрузить оригинал (120.45 КБ)</a>
2. Теперь нам нужна интеллектуальная функция которая будет формировать последовательности в которых мы будем разбрасывать контуры, их повороты и смещение по оси Х. Для этого мы будем использовать генетические алгоритмы. Они работают так:
1. Сначала создаем 100 случайных последовательностей. Это наша начальная популяция.
2. Передаем наши последовательности функции расстановки. И вычисляем характеристическую функцию (За этим страшным названием кроется простой критерий "хорошести" расстановки, например площадь готовой расстановки).
3. Затем из нашей популяции выбираем 10-20 лучших экземпляров. И скрещиваем их, т.е. меняем берем кусочек от одной последовательности и вставляем в другую. Элементы последовательностей и есть те самые "гены". Таким образом делаем 40 потомков, к ним добавляем 30 "мутантов" потомки со случайно измененными генами и 20 случайных "особей".
4. Повторяем все с шага 2.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

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

Сообщение aftaev »

Вообщем раскрой как то будет работать :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
pasha
Новичок
Сообщения: 13
Зарегистрирован: 28 июл 2010, 23:30
Репутация: 0

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

Сообщение pasha »

Присоединяюсь к Вашему (пока) диалогу. С плазмой работаю уже достаточно долго. Софт пользую SheetCam TNG
и иногда для раскладки Пронест. Так вот что касаемо плазмы в Шиткаме всё почти сделано просто замечательно.
Настройки инструмента, входов, материалов, компенсаций, ручного нестинга и ещё много чего можно просто брать
за образец. Если ещё к этому добавиться автоматический нестинг то будет просто супер программа. Обратите на неё
внимание. Ну а вот что касается автонестинга то сдесь всё сложнее. Сложные детали (не круги или квадраты) ни одна
программа пока нормально раскладывать не умеет. Я всегда почти чуть пошевелив мозгами раскладываю лучше.
Так что я понимаю алгоритм раскроя это очень сложная вещь. Но дорогу осилит идущий. Так что давайте пробовать.
Задавайте вопросы по возможности буду помогать.
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 »

pasha писал(а):
Если мы оставляем перемычки, чтобы деталь не отвалилась, то по идее перед каждой перемычкой мы должны:

* делать выход
* гасить плазматрон
* перемещаться на толщину перемычки
* зажигать плазматрон
* делать вход

Или я что-то путаю?
По этому поводу скажу что при резке деталей больших размеров перемычки не так уж и актуальны. А вот когда детали маленькие ( сопоставимы с размером решётки стола) тогда часто бывают проблемы что детали падают и становятся в ванне
вертикально. Хорошо бы было чтоб перемычка оставалась между входом и выходом. То есть не дорезать несколько миллиметров. Ну а если ставить несколько перемычек на деталь желательно делать входы и выходы каждой перемычке
согласно конечно компенсации, внешней или внутренней. если этого не делать то контур детали будет подпорчен прожигами.
Есть несколько вариантов как делать перемычки:
1. Просто перед обработкой разбить контур и использовать обычную процедуру обработки.
2. Предусматривать перемычки в процедуре экспорта.

Наверное будет проще пойти по первому пути. Т.к. он будет более универсальный и его можно будет использовать и на фрезерных станках ...

Сейчас чуть-чуть затормозился на процедуре расстановки, пытаюсь упростить внешнюю оболочку, созданную из полигонов, чтобы алгоритм работал быстрее...
Ответить

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