Как написать свою функцию для марлина ? (звучит глупо)
Задача:
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
Логику сравнения ещё не придумал, сначала хочу разобраться с тем , где и что прописывать.
Популярные вопросы
Оптимальное выставление высоты зазора от стола - Anet ET5 pro
Всем доброго времени суток! 4 месяца обладатель 3д принтера. Стол выставил в 0, по углам тоже несколько раз, автоуровень и щуп 0,1мм. Температура стол...
Какой софт выбрать для моделирование под 3д печать?
Начал заниматься 3д печатью, пока для себя, есть редкие заказы на коммерческую печать, но пока приходится отдавать моделирование на фриланс, т.к. не х...
Зачем используют слово '3D' при описании аддитивных технологий?
Несколько раз уже я обращался к уважаемому сообществу с вопросом на тему - почему так говорят '3D печать', '3D принтеры' и прочие интерпретации, типа...
Комментарии и вопросы
Долго смотрел в сторону электр...
На айли, 3 день выставлены по....
Пины и ласточкин хвост тема. У...
Или же будут ли они вообще, т....
Нужна помощь. Не получается по...
Может есть у кого модель адапт...
Всем привет, может кто знает п...