Построение сетки кривизны стола
Владимир ШумовПрошу прощения за кривые рисунки далее по тексту, если кто-то решит сделать их ровнее и понятнее, буду благодарен.
Ручной способ построения сетки рассматривать не буду, так как точность такой сетки зависит от того, как тонко чувствует оператор прижатие бумажки соплом, да и вообще... Наш путь - сенсор BlTouch или BfTouch.
Будем считать, что калибровка сенсора и уровня стола выполнены.
В ранних версиях прошивки был встроен только один алгоритм построения сетки, а именно билинейной интерполяции по 9 точкам. Рассмотрим его подробнее.
Производится замер 9 точек, в результате замера получаются 4 квадрата, у которых известна высота углов относительно ноля. Далее по каждому квадрату строится билинейная поверхность:

Для любой сетки дальше работает следующий алгоритм:
Линия, рисуемая пластиком разбивается на маленькие сегменты. Согласно координатам начала и конца сегмента по поверхности сетки вычисляется их высота Z и уже после этого происходит перемещение по прямой сегмента. В настройках алгоритма выравнивания стола есть параметр, какого именно размера делать сегменты.
Влияние сетки кривизны стола постепенно уменьшается с каждым слоем и с определенного момента сетка просто выключается. Существует параметр, на какой высоте сетка должна полностью сойти на нет.
С какой-то версии в SHUI добавлены еще несколько алгоритмов компенсации кривизны стола. Все они делятся на 2 типа: использующие билинейную интерполяцию и интерполяцию по плоскости заданной тремя точками или набору треугольных полигонов.
1 точка
Замер только одной точки. Если это точка парковки, то сама сетка становится нулевой, а если какая-то другая, то сетка работает как константное для всей поверхности смещение Z, тем не менее постепенно исчезающее с ростом Z.
4 точки
Замер происходит по 4 точкам расположенным по углам стола, интерполяция билинейная

5 точек
Замер происходит по 4 точкам расположенным по углам стола и одной точке в центе. Получается 4 треугольника. Интерполяция по плоскости соответствующего треугольника.

9 точек
Замер происходит по сетке точек 3x3, которые образуют 4 прямоугольника. Интерполяция по четырем билинейным поверхностям.

13 точек
Точно так же как и с 9 точками, плюс 4 точки в центре каждого прямоугольника. Образуется 16 треугольников. Интерполяция по плоскости соответствующего треугольника.

Какой из алгоритмов замера выбрать - решайте сами. Стол у меня ровный и я использую чаще всего 4 точки замера для небольших моделей, 1 для совсем маленькой и 9, когда модель на весь стол. Дело в том, что в shui есть еще одна очень интересная особенность при построении сетки стола. Сетку можно строить не на весь стол, а на область занимаемую моделью. Действительно, зачем делать замер большого стола, когда площадь занимаемая деталью мала и достаточно анализировать лишь кривизну поверхности под ней.
Чтобы этот алгоритм мог работать, в управляющей программе должно быть указано где модель расположена и какие у нее размеры. Слайсер Cura эти данные прописывает самостоятельно, а вот Prusa слайсер надо научить:
;MINX:[first_layer_print_min_0]
;MAXX:[first_layer_print_max_0]
;MINY:[first_layer_print_min_1]
;MAXY:[first_layer_print_max_1]
Включить режим замера сетки по размеру модели можно так:
G29T1
За тип алгоритма отвечает параметр A:
G29 T1 A1
G29 T1 A4
G29 T1 A5
G29 T1 A9
G29 T1 A13
По своему опыту использования могу рекомендовать включить только замер по размеру модели, то есть добавить в стартовый G код, G29 T1, и в настройках указать замер по 4 точкам. Но, если затем захочется оптимизировать время построения сетки или сделать ее более точной для модели на весь стол при старте печати сменить алгоритм построения в фильтре (мне больше нравится название трансформатор) G кода. То есть, ориентироваться можно на наиболее часто печатаемый размер деталей.
Для куры, наверное, можно написать плагин, который позволит задать параметры для G29