Добро пожаловать на Форум по станкам с ЧПУ!

Image-to-gcode + решение для нежестких станков

Тема в разделе "Программы исполняющие G-код", создана пользователем pavel-kpll, 25 сен 2017.

  1. pavel-kpll

    pavel-kpll Member

    Регистрация:
    4 май 2012
    Сообщения:
    719
    Симпатии:
    0
    Доп-функционал:

    Печенько №1 Не делать ж-код по фону внутри рельефа.
    Пример "Max background len(pixels)" = 0 - т.е. - не использовать.

    image2gcode Max background len=0


    image2gcode Max background len=1


    image2gcode Max background len=25


    image2gcode Max background len=65



    Печенько №2 Не обрезать углы
    Пример флаг "Dont cut angles" сброшен

    вставить скрин

    Пример флаг "Dont cut angles" установлен

    вставить скрин


    Печенько №3 двойная конфигурация фрезы
    Задается параметрами:




    Могу сделать работу с фрезой любой! конфигурации.
    Считаешь размер матрицы фрезы, задаешь в Gimp-e картинку с этим количеством пикселей по горизонтали и на картинке рисуешь вертикальное сечение своей фрезы, а я могу сделать чтобы image-to-gcode ее подхватывал и использоваля для создания матрицы высот инструмента. Вот только нужно ли так неэффективно тратить время? image-to-gcode это плагин для не точной обработки, потому что для создания точного рельефа картинку нужно увеличивать многократно(а увеличив - во столько же раз увеличивается время компиляции g-кода). Если ты хочешь точный рельеф, то лучше взять CAM который делает по 3d модели, а не по картинке.
    Поэтому(если ничего не изменится) я думаю - прекратить доработку image-to-gcode. Благо сейчас появился CAM под Linux для Blender.


    Скрин как это выглядит в g-коде:

    Обычная шаровая
    картинку в код - обычная полусфера

    полусфера + угол 45град

    полусфера + угол 120град

    обратите внимание: угол - КАСАЕТСЯ шара!
    а не рисуется от точки диаметра. Из-за этого при больших углах(100-200град) - шарик даже большого диаметра почти не видно на рисунке. Что наглядно видно на скрине выше.

    обычная конусная 90град

    откуда взялась небольшая "ступенька"(3й излом) в самом верху - я написал в следующем сабже.
    конус 90град + угол 45град
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
     
  2. pavel-kpll

    pavel-kpll Member

    Регистрация:
    4 май 2012
    Сообщения:
    719
    Симпатии:
    0
    важное отступление:
    Чем обусловлен излом если грань фрезы прямая(сама фреза - обычная конусная острая)?




    Конфигурация фрезы строится по точкам!
    Строится квадратная матрица, с размером грани = диаметру фрезы/размер одной точки.
    Из этого получается важный вывод: если например диаметр фрезы 1мм, а размер точки 0.3мм, то размер матрицы получается 3и на 3и - и то что тип фрезы полусфера уже - почти не играет роли! Поэтому для большей точности нужно увеличить размер рисунка(например в Gimp-e - меню - Image - Scale image - тип увеличения Linear[/B] !!! другие типы портят рисуток).
    Кстати - черновой отступ не может быть меньше размера одного пикселя(хотя image2gcode позволяет его ввести).

    Предварительно картинка чтобы было ясно о чем речь:



    Матрица может иметь четное(пример: 6мм диаметр фрезы - точка 1мм) или нечетное(пример: 1,5мм диаметр фрезы - точка 0,1мм) число ячеек в грани. К тому же программно можно искусственно увеличить получившуюся матрицу на +1 и получить по желанию хоть чет, хоть нечет. Я сделал программно - "всегда нечет":

    Если получился(сделали искусственно) четное, то в центре 4 яцейки матрицы = 0 - кончик фрезы. И не только из-за этого - тратится много лишнего места. Плюс в том что сама фреза напоминает круг(читай ниже).

    Если получился(сделали искусственно) нечетное, то в центре 1 яцейки матрицы = 0 - кончик фрезы. Фреза более острая и точность получается выше, но сама фреза напоминает квадрат(читай ниже).

    Возвращаясь к излому:
    Каждая ячейка матрицы - имеет квадратную форму с 4мя углами.
    Фреза может касаться ячейки:

    получим в теории 3 алгоритма(в принципе - можно и больше придумать):
    1. Фреза касается каждой ячейки всегда в левом нижнем углу[/B](так сделано в предыдущих версиях image-to-gcode)

    2. Фреза касается каждой ячейки в центре ячейки[/B](см. на рисунке изображени "1 нечетное" внизу)
    Но тогда фреза может "подрезать" рельеф. Если это не принципиально - то это лучший вариант(жаль только не реализованный).
    3. Фреза касается каждой ячейки в ближайшем угле[/B](я выбрал и реализовал этот - смотри на рисунке изображени "2 нечетное" поцентру).

    Я сделал по алгоритму 3. Обрати внимание на излом фколетовой линии на рисунке поцентру.
    В результате из-за этого - получается вот этот излом... может стоит переделать, но как ?...




    ------------------------------------------------
    Раз пошла такая пьянка реж последний огурец: для наглядности приведу матрицы шаровой фрезы для различных размеров,
    чтобы никто не тешил себя идеями к примеру: что он задаст размер точки 0,1мм, диаметр фрезы 0,6мм
    тип фрезы шаровая - наивно полагая что при таких пропорциях - тип инструмента что-то изменить на конечном g-коде. А в резульате получиться почти "прямая", а не "шаровая" фреза.

    Итак:
    Обратите внимание где Inf, а где цифра:
    Тип фрезы - шаровая, размер пикселя = 0.1mm

    Диаметр фрезы = 0.05mm
    [[ 0.]]

    размер матрицы 1 на 1

    Диаметр фрезы = 0.1mm
    [[ 0.]]
    размер матрицы 1х1

    Диаметр фрезы = 0.103mm
    [[ Inf 0.03916104 Inf]
    [ 0.03916104 0. 0.03916104]
    [ Inf 0.03916104 Inf]]

    размер матрицы 3х3

    тут нужно пояснить: диаметр фрезы 0.103мм/0.1мм = 1,03 > 1
    Поэтому размер матрицы увеличивается до 2 на 2.
    Плюс включен механизм: always_an_odd - всегда нечетное(зачем - я писал выше),
    который размер матрицы увеличивает до 3х3.

    Inf = плюс бесконечность. Т.е. считайте что в єтих местах фрезы вообще нет.
    Получается сечение фрезы имеет форму креста!
    Учитывайте это если хотите получить рельеф с высокой точностью.

    Диаметр фрезы = 0.15mm
    [[ 0.05 0.0190983 0.05 ]
    [ 0.0190983 0. 0.0190983]
    [ 0.05 0.0190983 0.05 ]]

    3х3
    снова квадратное сечение фрезы

    Диаметр фрезы = 0.199mm
    [[ 0.02949821 0.01347529 0.02949821]
    [ 0.01347529 0. 0.01347529]
    [ 0.02949821 0.01347529 0.02949821]]
    3х3

    Диаметр фрезы = 0.2mm
    [[ 0.02928932 0.01339746 0.02928932]
    [ 0.01339746 0. 0.01339746]
    [ 0.02928932 0.01339746 0.02928932]]
    3х3

    Диаметр фрезы = 0.3mm
    [[ 0.01771243 0.00857864 0.01771243]
    [ 0.00857864 0. 0.00857864]
    [ 0.01771243 0.00857864 0.01771243]]
    3х3

    Диаметр фрезы = 0.31mm
    [[ Inf Inf 0.11594875 Inf Inf]
    [ Inf 0.01706886 0.00828599 0.01706886 Inf]
    [ 0.11594875 0.00828599 0. 0.00828599 0.11594875]
    [ Inf 0.01706886 0.00828599 0.01706886 Inf]
    [ Inf Inf 0.11594875 Inf Inf]]

    5х5

    обратите внимание как резко размер матрицы увеличивается сразу на 2 ячейки
    Форма сечения фрезы напоминает ромб

    Диаметр фрезы = 0.4mm
    [[ Inf 0.07752551 0.06771243 0.07752551 Inf]
    [ 0.07752551 0.01291713 0.00635083 0.01291713 0.07752551]
    [ 0.06771243 0.00635083 0. 0.00635083 0.06771243]
    [ 0.07752551 0.01291713 0.00635083 0.01291713 0.07752551]
    [ Inf 0.07752551 0.06771243 0.07752551 Inf]]
    5х5

    Диаметр фрезы = 0.4001mm
    [[ Inf 0.07749388 0.06768686 0.07749388 Inf]
    [ 0.07749388 0.01291368 0.00634919 0.01291368 0.07749388]
    [ 0.06768686 0.00634919 0. 0.00634919 0.06768686]
    [ 0.07749388 0.01291368 0.00634919 0.01291368 0.07749388]
    [ Inf 0.07749388 0.06768686 0.07749388 Inf]]

    5х5
    а тут матрица не увеличилась на 2 квадрата, т.к. фреза помещается в матрицу:
    0.4001мм/0.1мм < 5

    Диаметр фрезы = 0.4999mm
    [[ 0.11775695 0.05636539 0.0500125 0.05636539 0.11775695]
    [ 0.05636539 0.01021055 0.00505206 0.01021055 0.05636539]
    [ 0.0500125 0.00505206 0. 0.00505206 0.0500125 ]
    [ 0.05636539 0.01021055 0.00505206 0.01021055 0.05636539]
    [ 0.11775695 0.05636539 0.0500125 0.05636539 0.11775695]]

    5х5
    Сечение квадратное!

    Диаметр фрезы = 0.5mm
    [[ 0.11771244 0.05635083 0.05 0.05635083 0.11771244]
    [ 0.05635083 0.01020842 0.00505103 0.01020842 0.05635083]
    [ 0.05 0.00505103 0. 0.00505103 0.05 ]
    [ 0.05635083 0.01020842 0.00505103 0.01020842 0.05635083]
    [ 0.11771244 0.05635083 0.05 0.05635083 0.11771244]]
    5х5

    Диаметр фрезы = 0.6mm
    [[ Inf 0.22928932 0.14188612 0.13416876 0.14188612 0.22928932 Inf]
    [ 0.22928932 0.08786797 0.04504902 0.04019238 0.04504902 0.08786797 0.22928932]
    [ 0.14188612 0.04504902 0.00845241 0.00419601 0.00845241 0.04504902 0.14188612]
    [ 0.13416876 0.04019238 0.00419601 0. 0.00419601 0.04019238 0.13416876]
    [ 0.14188612 0.04504902 0.00845241 0.00419601 0.00845241 0.04504902 0.14188612]
    [ 0.22928932 0.08786797 0.04504902 0.04019238 0.04504902 0.08786797 0.22928932]
    [ Inf 0.22928932 0.14188612 0.13416876 0.14188612 0.22928932 Inf]]
    7х7
    далее из-за больших матриц я покажу на экселе


    Диаметр фрезы = 0.7mm
    7х7



    Диаметр фрезы = 0.8mm
    9х9


    вот тут сечение начинает напоминать круг

    Диаметр фрезы = 0.8999mm
    9х9


    снова урезаный квадрат

    Диаметр фрезы = 0.9001mm
    11х11


    напоминает круг

    Диаметр фрезы = 1.0mm
    11х11


    Диаметр фрезы = 1.10mm
    11х11


    Диаметр фрезы = 1.10001mm
    13х13



    Выводы:
    1. Сечение фрезы получается всегда - не круглое
    2. при четных диаметрах инструмента(0.4 0.8 1 1.2...) - сечение внешне получается более округлое, но сама матрица увеличина. Появляется некоторая избыточность.
    При нечетных диаметрах инструмента - наоборот - сечение получается более квадратичное, но "сжато".


    Как это относится к реальной работе?
    Пример у вас глубокое круглое отверстие с диаметром меньшим диаметра фрезы,
    и по логике в ж-коде долна появится траектория заглубляющая фрезу в эту выемку,
    но программа считает, что фреза не пролазит в нее и в результирующем ж-коде
    нежного вам заглубления - НЕТ! Фреза просто проходит над ним как буд-то его нет.

    Это может произойти из-за того что сечение фрезы получается квадратное
    (из-за выбранной мной стратегии формирования матрицы инструмента - см. выше)
    и уголки этого квадрата при формировании ж-кода скажут программе что фреза в это отверстие - НЕ ПРОЛЕЗЕТ.

    Повторюсь: думаю что для точных работ(особенно для создания деталей механизмов) - image-to-gcode - может неподойти.
    Используйте для єтих целей САМ-ы строящие g-код по 3d объектам.
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
     
  3. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    + большая золотая медалька! :) Давно хотел разобраться, что тут на самом деле сделанно, откладывал на по-позже, когда будет больше свободного времени. И уже потом выписать медальку. Но так и не смог... В общем совесть меня совсем замучила.

    Сразу видно, что работа проделана громадная, я бы за такое наверное даже не взялся! :cool: И чувствуется серьезный подход!

    Надо теперь придумать, как все это продвинуть в массы! :confused:
     
  4. pavel-kpll

    pavel-kpll Member

    Регистрация:
    4 май 2012
    Сообщения:
    719
    Симпатии:
    0
    уже почти доделан станок №2 и в планах выложить фотки реального использования - ака "урок".
    Хотя я уже реально пробовал, но это было все же больше - бэтатестирование... вобщем - ждемс...
     
  5. pavel-kpll

    pavel-kpll Member

    Регистрация:
    4 май 2012
    Сообщения:
    719
    Симпатии:
    0
    Нашел промышленный аналог - его задача аналогичная - выбрать материал, оставшийся от предыдущей фрезы в местах с глубиной более предельной.
    Смотрим видео:


    На что нужно обратить внимание(конечно же кроме железных сисек):

    сама модель

    САМ-интерфейс еще и визуализирует процесс фрезеровки

    На сколько оптимальна траектория!
    CAM-МЕЧТА ЧПУ-линуксоида: 3d модель + траектория движения инструмента + отображение не снятого материала
    да к тому же - все это в динамике!!!

    смотрите на сколько программный расчет соответствует готовому изделию


    а теперь самое интересное:
    разница между предыдущей(пройденно) фрезой и будущей(еще не прошла) фрезой
    красным показаны места со слишком высоким рельефом

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

    слева - до обработки, справа - после обработки
    сравните между собой(обращая внимание на 2е предыдущие картинки)

    после предыдущих 2х фрез - снова режим разницы
    красным показаны места со слишком высоким рельефом: предыдущая фреза в эти места не пролезла, а более мелкая фреза в них пролезет, но может сломаться - поэтому рельеф в этих участках нужно выбирать мелкой фрезой ПОСЛОЙНО!

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

    специальный режим: ж-код формируется ТОЛЬКО в этих участках с послойным снятием


    странно, но последние 2 слайда у меня никак не сопоставляются с красными участками ни в 1й(5.png 6.png) ни во 2й(7.png) раз.
    Возможно на видео не видно "желтого" цвета на "зеленом"... не ясно.
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
     
  6. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Визуализация процесса обработки - прикольная вещь! Правда пока не совсем понимаю, как ее можно реализовать... По идее это очень много булевых операций на трехмерных объектах... только обычно эти операции подглючивают и они далеко не быстрые... может они большие допуски на визуализацию ставят...
     
  7. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Визуализация процесса обработки - прикольная вещь! Правда пока не совсем понимаю, как ее можно реализовать... По идее это очень много булевых операций на трехмерных объектах... только обычно эти операции подглючивают и они далеко не быстрые... может они большие допуски на визуализацию ставят...
     
  8. pavel-kpll

    pavel-kpll Member

    Регистрация:
    4 май 2012
    Сообщения:
    719
    Симпатии:
    0
    Смотрю в сторону Blendera: нарисовать в нем функционал, позволяющий открывать саму 3д модель и файл G-кода + нарисовать 3д конфигурацию фрезы - остальное дело техники...

    но это будет не "онлайн" - режим. Для онлайна: нужно в отдельном окне LinuxCNC(как окно смены инструмента) - загрузить Blender и туда передавать текущие координаты(или хотя бы - текущую строку ngc-файла), а в остальном как в предудущем абзаце...

    на эту тему лучше отдельную тему создать ;)
     
  9. pavel-kpll

    pavel-kpll Member

    Регистрация:
    4 май 2012
    Сообщения:
    719
    Симпатии:
    0
    Планирую выпустить версию 3.7 - сильно переделанную, т.к. нашел много неоптимальностей и глюков. Например:
    - на вершинах из-за пошагового заглубления фреза на каждом новом слое проходит участки уже отработанные на предыдущих слоях - что бесцельно тратит время, износ станка, фрезы,... В новой версии там где на предыдущем слое фреза уже прошла весь требуемый для снятия материал - то на новом слое в этих местах уже не будет формироваться ж-код.
    - на участке вычисляется максимальная высота, оставленная от предыдущей фрезы. Если участок большой(например когда delta=0 - участок это вся картинка), то получается много не ходов вхолостую. В новой версии - высота недореза предыдущей фрезы будет вычисляться в каждой точке.
    ...

    (моя первая анимация в Gimp-е) демонстрация предварительных результатов(т.е. что собственно я хочу получить):
    сложный участок



    этот же участок
    каждый фрейм - это отдельный слой заглубления с шагом 0.4мм

    Это то самое "узкое место" в которое прямая фреза 3мм полностью не входит(точнее сказать - "входит, но не на столько глубоко как фреза с меньшим диаметром"). Отступ 0,54мм.
    Следующая фреза 1,5мм "шаровая"(она же "полусфера", она же "круглая", она же "полукруглая", она "со скруглением на конце радиусом...", она же...) . Отступ такой же - 0,54мм.

    Белые линии - (та самая "разница между 2мя режимами" (("Roughin Minus Finish" = rmf)) в виде ж-кода) ж-код построенный по "недорезанным" фрезой 3мм местам, с высотой более(параметр "min rmf delta") 0.7мм. Шаг заглубления фрезой 1.5мм = 0.4мм. Слоев получилось 16. Я скрыл быстрые переходы. Обратите внимание что для каждого нового слоя фреза выходит полностью! а потом снова заглубляется - проходя значительные путь! Это планирую убрать... А еще есть идея(правда в далеких планах) реализовать получение ж-кода задом наперед: т.е. один слой будет справа налево, второй слева на право, потом снова справа налево... чтобы уменьшить быстрые переходы...

    Красные линии это - чистовой режим(т.е. "отступ"=0) этой же[/B] полукруглой фрезой 1,5мм - для сравнения.



    К счастью - глядя со стороны на свою работу над image-to-gcode - я вижу что движение идет только в сторону усовершенствования.
    К сожалению - все эти улучшения требуют более сложных алгоритмов, что плохо сказывается на скорости получения ж-кода(скорость работы image-to-gcode)... и чем дальше - тем хуже и хуже...
    но думаю результат того стоит...
    [​IMG]
    [​IMG]
    [​IMG]
     
  10. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Wow! :cool:!
    10 минут на постоение траектории может сэкономить часы в обработке!
    Потом все это можно пытаться оптимизировать.
     
  11. pavel-kpll

    pavel-kpll Member

    Регистрация:
    4 май 2012
    Сообщения:
    719
    Симпатии:
    0
    Как и обещал: выложил новую версию v3.7 CAM "картинку в ж-код"

    Опробовал на своей рамке и вот что у меня получилось:
    3д модель изделия:


    Размер картинки: 4000 х 2920
    размер пикселя 0,0875мм глубина 7,5мм
    Траектория движения - по зигзагу.
    Высота изделия ~320мм

    Режим 1 - убрал основной объем материала:
    Фреза 12мм сферическая, 2 слоя по 3,6мм, шаг 56линий=4,9мм(50% диаметра фрезы)






    Режим 2 - обвел (хотя можно было этого не делать):
    Фреза 5мм прямая, 3 слоя по 3мм - готовил этот ж-код посредством GCodeTools




    нужно было обводить фрезой 1,5мм как я сделал в конце...

    Режим 3 - подготовка к чистовому режиму:
    Фреза сфера 8мм, 1 слой, шаг 36линий=3,15мм(40% диаметра фрезы)




    Многочисленные расчеты и тесты показали что без этого режима(после фрезы 12мм)
    остается слишком много узких мест, оставшихся как недоработки фрезы 12мм.
    Можно и без этого режима, но как вы понимаете: чем больше разница диаметров 2х фрез, тем больше работы для 4-го режима "Дельта".

    Режим 4 - ДЕЛЬТА - собственно то почему эта тема создана - :
    Фреза сфера 1,5мм, шаг 3линии=0,2625мм(18% диаметра фрезы)
    Высота слоя 1,2мм(шаг заглубления). Слои создаются динамически в зависимости от того какой высоты материал нужно снять в данном конкретном месте.
    режим "Дельты": разница между фрезами 8мм и 1,5мм; дельта >=2мм

    Настройки режима "Дельта"
    ВНИМАНИЕ: на картинке ошибка! Вместо "Max background len(pixels)" = 4 - должно быть 330!

    Обратите внимание: при помощи этого инструмента - можно проводить анализ вашей поверхности[/B]
    например: "найти все места где фреза оставила материал более Х-мм" просто задаете диаметр чистовой фрезы=1 точке...

    Режим 5 - чистовой(?) :
    Фреза сфера 1,5мм, шаг 3линии=0,2625мм(18% диаметра фрезы), 1слой




    фреза не сломалась. Буду экспериментировать с более мелкими фрезами.

    Режим 6 - ...(нехватает словарного запаса...) "вырезание"? изделия из заготовки... :
    Фреза - все та же - сфера 1,5мм, 10?слоев, высота слоя 1мм
    планирую в следующий раз попробовать "взять новую глубину" - 10мм сразу фрезой 1,2мм!
    Опять же - низкий поклон разработчикам GCodeTools






    только вытянул из станка:
    рамка слева сделана на предыдущем станке -до сих пор медитативно шлифую,
    справа на новом - еще не шлифовал


    а теперь - подближе:














    игрался с настройками фотоаппарата и "поймал" фрезу во время работы на скорости ~19000об/мин
    видно как стружка разлетается во все стороны... потрясающе...
    можно собрать 10 фотиков засинхать их сделать серию снимков каждые 0,01сек... наблюдая как "работает" фреза под разной нагрузкой и скоростями...



    а вот тут было стремно! Дело в том что процесс реза идет так что фреза "открыта" с той стороны где она уже прошла -
    это значит что есть куда и стружку отбрасывать и боковая нагрузка небольшая т.к. только с одной стороны,... а вот в таких местах фреза зажата со всех сторон.
    Но благодаря режиму "Дельта" высота рельефа негде не была выше 2мм(хотя 2мм - это тоже опасно если подача сумасшедшая), что не позволило перенагрузить фрезу.
    Вобщем я доволен результатами. :eek:
    На чистовом режиме нет черных подпаленностей от перегрева, правда на самой фрезе налипшая стружка почернела...
    но думаю это из-за последнего режима вырезания изделия из заготовки...

    Огорчает только качество поверхности (см. полоски на фото выше)
    сравнил с ж-кодом и такое ощущение что полоски идут через одну, т.е. только когда фреза движется в одну сторону - еще не понял в какую:
    по ходу реза и вращения лезвий фрезы или при обратном направлении...
    - может это фреза завалена, может шаг 0,26мм слишком большой, может кончик фрезы слишком большой(диаметр 1,5мм),...
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
     
  12. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Ахрененть! Просто супер! :cool:!

    Режим подрезки тонких мест это очень хорошая штука!

    Может быть просто потому, что ходит зигзагами, когда идет вправо фрезу отклоняет в одну сторону, когда влево - в другую...
     
  13. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Не удержался выписал еще медальку :).
     
  14. invalid

    invalid Active Member

    Регистрация:
    21 сен 2012
    Сообщения:
    2.254
    Симпатии:
    0
    обычно берут шаг = 10-15% от радиуса фрезы.
     
  15. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    http://en.wikipedia.org/wiki/Biarc
    Собственно у меня все это аппроксимируется по такому алгоритму:
    берем сегмент. по двум касательным на его краях строим биарку. Смотрим попадаем ли в допуск по растоянию (это тупо берем n точек от кривой и ищем расстояние до биарки). Если не попали в допуск - то разбиваем сегмент попалам.

    Для тебя надо обратный механизм - берем два сегмента, строим по ним биарку, если попали в допуск - то добавляем еще сегмент.

    Вот моя функция построения биарки: https://github.com/cnc-club/gcodetools/ ... v.py#L2583

    Биарка как мне помнится строится однозначо по точкам начала и конца, касательным в начале и конце и отношению радиусов (r1/r2)

    Вот так вычисляем отношение радиусов (к этому пришел опытным путем):
    Тупо отношение касательных, не знаю, как это сделать в твоем случае... надо будет что-то придумать, для начала можно взять 1:1.
    Код:
    if TE.mag() < straight_distance_tolerance:
          TE = -(TS+v).unit()
          r = TS.mag()/v.mag()*2
       elif TS.mag() < straight_distance_tolerance:
          TS = -(TE+v).unit()
          r = 1/( TE.mag()/v.mag()*2 )
       else:   
          r=TS.mag()/TE.mag()
    


    Вот статья по которой я это делал... вроде...
    Там даже вроде что-то есть по аппроксимации ломанной кривой.
     
  16. redneo

    redneo Member

    Регистрация:
    4 май 2012
    Сообщения:
    44
    Симпатии:
    0
    Есть пара вопросов:
    1. Удалось ли как-то выйти на доработку официального проекта image-to-gcode? Здорово будет если включат в релиз LinuxCNC! Потому как стало уже очень круто! :cool:
    2. Самый главный вопрос: делаю деталь тремя фрезами – совсем черновой (flat например D10mm), черновой (flat D3mm) и чистовой (к примеру V 45 град D4mm).
    Для этого прогоняю картинку 3 раза. Первый прогон настраиваю Roughing offset на 3мм, Tool diam 10 Stepover так чтоб получилось расстояние между проходами примерно в диаметр инструмента; второй Roughing offset на 0.6 например, Tool diam 3, Stepover тоже неочень часто; и третий Roughing offset 0 (V 45 Tool diam 4), Stepover для получения максимального качества.
    Потом ручками слепляю G код из 3х файлов: из первого прогона исключаю чистовую, добавляю код из второго прогона, исключая верхние проходы и чистовую (то есть оставляю один или 2 последних черновых прохода) и последним добавляю из третьего прогона.
    Теперь самое интересное – начинаются танцы с бубном: из-за разных диаметров фрез результирующие коды получаются смещёнными друг относительно друга в плоскости XY (как я понял (предварительно) на
     
  17. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Туториал супер, а я долго искал, как вывести Zmap в итоге просто сделал скриншот :mad:.
    ЗЫ добавил ссылку на туториал в wiki.
     
  18. redneo

    redneo Member

    Регистрация:
    4 май 2012
    Сообщения:
    44
    Симпатии:
    0
    косяк: прога не работает с инвертированным изображением и упорно срезает "лишнее" с черной стороны.
    то есть если фон черный - все ок, подложка убирается.
    если фон белый и стоит галочка инвертировать - срезает сверху
    [​IMG]
     
  19. pavel-kpll

    pavel-kpll Member

    Регистрация:
    4 май 2012
    Сообщения:
    719
    Симпатии:
    0
    сори за отсутствие - был в отпуске...
    спасибо за баг-репор - посмотрю.
    было бы неплохо, т.к. я выдахся с этим скриптом.
    Писал последнему разработчику Jeff Epler - он грит что я уже не занимаюсь найди того кто занимается. Написал предыдущему разработчику Chris Radek - еще не ответил. Просил их помочь поделиться с миром достижениями т.к. я пльохо говорить по англицки...
    а еще сегодня узнал(тут http://www.linuxcnc.org/docs/html/code/ ... uxCNC.html ) что существует 2а! проекта LinuxCNC. 2й проект развивается командой анонимусов на http://git.linuxcnc.org. . Так что не знаю кому писать письма...
    (а вообще - официальный проект мне не очень нравиться т.к. он стоит на SourceForge.net - а в вики написано что эти ребята некрасиво себя ведут. Цитата:
    В одном из пунктов условий использования говорится, что передавая какие-либо данные через SourceForge.net, пользователи дают SourceForge, Inc. неисключительную пожизненную лицензию на их использование, изменение и продажу. пруф http://ru.wikipedia.org/wiki/SourceForg ... ite_note-4 )

    Это я проверю. Но это странно, т.к. я это проверял и исправлял. Дело в том что именно в оригинальной версии ж-коды для фрез разного диаметра получались смещенными - а я это исправил и проверил. Странно, проверю еще раз. А можешь прислать скриншот? А ты мою версию img2gcod используешь или из коробки?
     
  20. Arhi

    Arhi Active Member

    Регистрация:
    7 май 2012
    Сообщения:
    10.435
    Симпатии:
    0
    странный вывод из прочитанного... Вообще-то там написано, что если есть желание что-то изменить в LinuxCNC по своему желанию и сделать эти изменения доступными для других, то можно организовать свою ветку на официальном http://git.linuxcnc.org .

    Хмм.. На SourceForge.net в качестве ссылки на официальный вебсайт проекта указано http://www.linuxcnc.org , да и emc.sf.net сразу перебрасывает туда-же.

    А это ничего, что LinuxCNC существует под лицензией GPLv2/LGPLv2, которая разрешает всё тоже самое и даже больше?..