важное отступление:
Чем обусловлен излом если грань фрезы прямая(сама фреза - обычная конусная острая)?
Конфигурация фрезы строится по точкам!
Строится квадратная матрица, с
размером грани = диаметру фрезы/размер одной точки.
Из этого получается важный вывод: если например диаметр фрезы 1мм, а размер точки 0.3мм, то размер матрицы получается 3и на 3и - и то что тип фрезы полусфера уже - почти не играет роли! Поэтому
для большей точности нужно увеличить размер рисунка(например в Gimp-e - меню - Image - Scale image - тип увеличения
Linear !!! другие типы портят рисуток).
Кстати -
черновой отступ не может быть меньше размера одного пикселя(хотя image2gcode позволяет его ввести).
Предварительно картинка чтобы было ясно о чем речь:
Матрица может иметь
четное(пример: 6мм диаметр фрезы - точка 1мм) или
нечетное(пример: 1,5мм диаметр фрезы - точка 0,1мм) число ячеек в грани. К тому же программно можно искусственно увеличить получившуюся матрицу на +1 и получить по желанию хоть чет, хоть нечет.
Я сделал программно - "всегда нечет":
Если получился(сделали искусственно) четное, то в центре 4 яцейки матрицы = 0 - кончик фрезы. И не только из-за этого - тратится много лишнего места. Плюс в том что сама фреза напоминает круг(читай ниже).
Если получился(сделали искусственно) нечетное, то в центре 1 яцейки матрицы = 0 - кончик фрезы. Фреза более острая и точность получается выше, но сама фреза напоминает квадрат(читай ниже).
Возвращаясь к излому:
Каждая ячейка матрицы - имеет квадратную форму с 4мя углами.
Фреза может касаться ячейки:
получим в теории 3 алгоритма(в принципе - можно и больше придумать):
1. Фреза касается каждой ячейки
всегда в левом нижнем углу(так сделано в предыдущих версиях image-to-gcode)
2. Фреза касается каждой ячейки
в центре ячейки(см. на рисунке изображени "1 нечетное" внизу)
Но тогда фреза может "подрезать" рельеф. Если это не принципиально - то это лучший вариант(жаль только не реализованный).
3. Фреза касается каждой ячейки
в ближайшем угле(я выбрал и реализовал этот - смотри на рисунке изображени "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 объектам.