Как написать свою функцию для марлина ? (звучит глупо)
Задача:
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
Логику сравнения ещё не придумал, сначала хочу разобраться с тем , где и что прописывать.
Популярные вопросы
Диаметр сопла и композиты
Доброго времени суток.
Можно ли как-то по композиту определить что печать соплом 0.4 и меньше не получиться? Есть ли какая-то г...
Можно ли как-то по композиту определить что печать соплом 0.4 и меньше не получиться? Есть ли какая-то г...
Помощь по пластику)
Всем привет! Ранее задавал вопрос о том какой материал лучше использовать для домашних целей и тп. Изучив всю информацию и для своих целей выбрал опре...
Кубик, Simplify3D и мосты
slic3r перед тем, как выкладывать верхние слои, кладет мосты, а прекрасный Simpli3D этого не делает :(
То есть вот это зелено...
То есть вот это зелено...

Комментарии и вопросы
Ну у меня два варианта:Кто-то....
Уважаемый chapenkov11,И Вам сп...
Уважаемый petrov.feodot,Спасиб...
Возникла сложность понимая.Рас...
Здравствуйте , уважаемый форум...
Коллеги. Пришло время менять о...
Всем привет! Ранее задавал воп...