Как написать свою функцию для марлина ? (звучит глупо)
Задача:
1)Установка на дельта принтер нестандартного (треугольного или шестиугольного) стола,
2)Запрограммировать функцию в марлине так, что бы, принтер всегда знал границы стола, и не выходил за их пределы
Моё виденье выполнения:
Границы стола можно описать прямыми отрезками, составить 'этакий' многоугольник.
В файле Configuration.h
прописываем два массива координат X и Y, эти координаты где отрезки соединяются.
(в марлине 2.0 от 2019 года)
в файле motion.h
есть функция проверки 'находятся ли текущие координаты в области печати &rx и &ry', и если ДА то выдаёт TRUE, если нет то FALSE
в этой функции идёт сравнение по переменной DELTA_PRINTABLE_RADIUS (т.е. радиус печатной области круглого стола)
выглядит это так:
// Return true if the given point is within the printable area
inline bool position_is_reachable(const float &rx, const float &ry, const float inset=0) {
#if ENABLED(DELTA)
return HYPOT2(rx, ry) <= sq(DELTA_PRINTABLE_RADIUS - inset);
#endif
#elif IS_SCARA
......
дальше идёт для кинематики SCARA она уже не важна.
для проверки я менял значение DELTA_PRINTABLE_RADIUS именно в этой функции и ещё в одной функции для меню принтера, там тоже делает упор на значение DELTA_PRINTABLE_RADIUS, и отключат все программные ЭНДСТОПЫ
результат: из меню принтера можно двигать эффектор за пределы границ стола(если механика тяг позволяет)
ДАЛЕЕ
в этом файле прописываем свою функцию проверки 'находится ли каоординаты печати в области границы НАШЕГО МНОГО-УГОЛЬНОГО стола'
Что уже сделал:
в файле Configuration.h
прописал
#define ArrayBedXY
#if ENABLED(ArrayBedXY)
#define arrayBedX {100, 100, 20, -20, -100, -100};//координаты для примера
#define arrayBedY {100, -20, -100, -100, -20, 100};//координаты для примера
#endif
в файле motion.h
хотел прописать свою функцию расчёта
inline bool position_is_reachable(const float &rx, const float &ry, const float inset=0) {
#if ENABLED(DELTA)
#if ENABLED(ArrayBedXY)
///////////////////////////////
//Здесь должен быть код проверки, это заголовочный файл
// простое логическое true/false (правда/ложь)
//т.е. в данном месте необходимо сделать функцию проверки текущих координат $rx и $ry, с функцией вычисляющей гарницы печатного стола
// результат сравнения либо true(правда ,точка находится в области печати), либо false(лож, точка не находится в области печати)
///////////////////////////////
return HYPOT2(rx, ry) <= sq(DELTA_PRINTABLE_RADIUS - inset);//данное выражение оставил только для того что бы неругалось при компилировании
#else
return HYPOT2(rx, ry) <= sq(DELTA_PRINTABLE_RADIUS - inset);
#endif
#elif IS_SCARA
-------------------------------------------------------
из того что не получилось
хотел прописать массивы в Configuration.h
int arrayBedX[] = {100, 100, 20, -20, -100, -100}
int arrayBedY[] = {100, 100, 20, -20, -100, -100}
компилятор ругается
--------------------------------------------------
Раньше умел немного программировать в матлабе, создавал свои М-функции, делал графики
А в Си подобном немогу разобраться, почему есть файлы с расширением .h и .cpp
Просто подскажите почему не получается использовать работу смассивом
#define arrayBedX {100, 100, 20, -20, -100, -100} из Configuration.h
в функции в файле motion.h
Логику сравнения ещё не придумал, сначала хочу разобраться с тем , где и что прописывать.
1)Установка на дельта принтер нестандартного (треугольного или шестиугольного) стола,
2)Запрограммировать функцию в марлине так, что бы, принтер всегда знал границы стола, и не выходил за их пределы
Моё виденье выполнения:
Границы стола можно описать прямыми отрезками, составить 'этакий' многоугольник.
В файле Configuration.h
прописываем два массива координат X и Y, эти координаты где отрезки соединяются.
(в марлине 2.0 от 2019 года)
в файле motion.h
есть функция проверки 'находятся ли текущие координаты в области печати &rx и &ry', и если ДА то выдаёт TRUE, если нет то FALSE
в этой функции идёт сравнение по переменной DELTA_PRINTABLE_RADIUS (т.е. радиус печатной области круглого стола)
выглядит это так:
// Return true if the given point is within the printable area
inline bool position_is_reachable(const float &rx, const float &ry, const float inset=0) {
#if ENABLED(DELTA)
return HYPOT2(rx, ry) <= sq(DELTA_PRINTABLE_RADIUS - inset);
#endif
#elif IS_SCARA
......
дальше идёт для кинематики SCARA она уже не важна.
для проверки я менял значение DELTA_PRINTABLE_RADIUS именно в этой функции и ещё в одной функции для меню принтера, там тоже делает упор на значение DELTA_PRINTABLE_RADIUS, и отключат все программные ЭНДСТОПЫ
результат: из меню принтера можно двигать эффектор за пределы границ стола(если механика тяг позволяет)
ДАЛЕЕ
в этом файле прописываем свою функцию проверки 'находится ли каоординаты печати в области границы НАШЕГО МНОГО-УГОЛЬНОГО стола'
Что уже сделал:
в файле Configuration.h
прописал
#define ArrayBedXY
#if ENABLED(ArrayBedXY)
#define arrayBedX {100, 100, 20, -20, -100, -100};//координаты для примера
#define arrayBedY {100, -20, -100, -100, -20, 100};//координаты для примера
#endif
в файле motion.h
хотел прописать свою функцию расчёта
inline bool position_is_reachable(const float &rx, const float &ry, const float inset=0) {
#if ENABLED(DELTA)
#if ENABLED(ArrayBedXY)
///////////////////////////////
//Здесь должен быть код проверки, это заголовочный файл
// простое логическое true/false (правда/ложь)
//т.е. в данном месте необходимо сделать функцию проверки текущих координат $rx и $ry, с функцией вычисляющей гарницы печатного стола
// результат сравнения либо true(правда ,точка находится в области печати), либо false(лож, точка не находится в области печати)
///////////////////////////////
return HYPOT2(rx, ry) <= sq(DELTA_PRINTABLE_RADIUS - inset);//данное выражение оставил только для того что бы неругалось при компилировании
#else
return HYPOT2(rx, ry) <= sq(DELTA_PRINTABLE_RADIUS - inset);
#endif
#elif IS_SCARA
-------------------------------------------------------
из того что не получилось
хотел прописать массивы в Configuration.h
int arrayBedX[] = {100, 100, 20, -20, -100, -100}
int arrayBedY[] = {100, 100, 20, -20, -100, -100}
компилятор ругается
--------------------------------------------------
Раньше умел немного программировать в матлабе, создавал свои М-функции, делал графики
А в Си подобном немогу разобраться, почему есть файлы с расширением .h и .cpp
Просто подскажите почему не получается использовать работу смассивом
#define arrayBedX {100, 100, 20, -20, -100, -100} из Configuration.h
в функции в файле motion.h
Логику сравнения ещё не придумал, сначала хочу разобраться с тем , где и что прописывать.
Популярные вопросы
Есть ли пластик без усадки ?
Из черного пластика ABS+ ESUN с заявленной термостойкостью 73 градуса сделал адаптер, который крепит ламповый домик с галогенкой 100 вт на корпус микр...
Работа с пластиком.
Друзья... Всем привет.. Я новичёк от слова совсем... Приобрел 3Д принтер Bambu Lab X2D Combo AMS 2 Pro. Суть вопроса вот в чем.. Проблема с пластиком...
нужна консультация
Решаю купить принтер, думаю но пока не решил какую выбрать конструкцию. На али нашел вот такой вариант ru.aliexpress.com/item/2016-Newest-TEVO-Tarant...

Комментарии и вопросы
Честно сказать, посыл автора м...
Уважуха что не побоялся заморо...
Спасибо, что прочитали. Похоже...
Приветствую! Приобрел себ...
постоянный засор сопла после з...
Добрый день.Подскажите в чем м...
Photon Mono 4 Ultra. Во время...