Как построить пять конечную звезду на 3д принтере в симуляторе с помощью кода используя workshop.movePrinterNozzle(x, y, z)
Ответ нейросети
13 ноября 2025 19:33
Ниже подробное решение с пояснениями и готовым кодом. Мы построим пятиконечную звезду (звезду {5/2}) в плоскости XY с заданным центром и радиусом, используя только функцию workshop.movePrinterNozzle(x, y, z). В симуляторе обычно нужна подача материала, поэтому в коде предполагаем, что движение в рабочем слое zPrint эквивалентно печати. Перед началом можно переключиться в режим печати (extrude), если ваша среда поддерживает это отдельно; здесь фокус на траектории движения.
Что будем строить и как устроена траектория
- Звезда {5/2} строится через последовательность вершин pentagon’а, соединяя каждые две вершины через одну: порядок вершин для звезды: [0, 2, 4, 1, 3], где вершины лежат на окружности радиуса R.
- Пусть центр звезды в координатах (cx, cy). Outer radius R задаёт размер звезды в плане XY.
- Угол поворота: начинаем с вершины наверху (pointing up). Угол baseAngle = -90° = -π/2. Затем каждая следующая вершина по индексу i из последовательности [0,2,4,1,3] имеет угол baseAngle + i*(2π/5).
- Координаты вершины i: x = cx + R * cos(angle) y = cy + R * sin(angle)
Пошаговый план
- Выбери параметры:
- cx, cy: центр звезды в мм.
- R: внешний радиус звезды в мм.
- zPrint: высота слоя печати (например, 0.2 мм).
- zSafe: безопасная высота при перемещении без печати (например, 5 мм).
- Сформируй массив вершин звезды в нужном порядке [0, 2, 4, 1, 3].
- Перемести наконечник над первой точкой на высоте zSafe, затем опусти на zPrint.
- Пройдись по точкам в порядке [0, 2, 4, 1, 3], вызывая workshop.movePrinterNozzle(x, y, zPrint) для каждой.
- По завершении можно вернуть головку к первой точке и поднять её на zSafe.
Простой пример кода (JavaScript-подобный синтаксис)
- В этом примере мы используем центр (cx, cy) = (100, 100) мм, внешний радиус R = 40 мм, высоту слоя zPrint = 0.2 мм и безопасную высоту zSafe = 5 мм. Изменяй параметры под свои нужды.
function drawFivePointStar(cx, cy, R, zPrint, zSafe) { // 1) Порядок вершин звезды {5/2} const indices = [0, 2, 4, 1, 3]; // 2) Базовый угол (звезда вверх) const baseAngle = -Math.PI / 2; // 3) Вычисляем координаты вершин const pts = indices.map(i => { const angle = baseAngle + i * (2 * Math.PI / 5); return { x: cx + R * Math.cos(angle), y: cy + R * Math.sin(angle) }; });
// 4) Подъем к безопасной высоте над первой точкой workshop.movePrinterNozzle(pts[0].x, pts[0].y, zSafe); // 5) Опускание на рабочую высоту workshop.movePrinterNozzle(pts[0].x, pts[0].y, zPrint);
// 6) Рисуем звезду: ходим по точкам в порядке [0,2,4,1,3] for (let k = 1; k < pts.length; k++) { const p = pts[k]; workshop.movePrinterNozzle(p.x, p.y, zPrint); } // 7) Возвращаемся к стартовой точке, чтобы замкнуть контур workspace.movePrinterNozzle(pts[0].x, pts[0].y, zPrint);
// 8) Поднимаем головку workshop.movePrinterNozzle(pts[0].x, pts[0].y, zSafe); }
// Пример вызова с параметрами по умолчанию const cx = 100; // центр по X мм const cy = 100; // центр по Y мм const R = 40; // внешний радиус звезды мм const zPrint = 0.2; // высота слоя печати мм const zSafe = 5; // безопасная высота мм
drawFivePointStar(cx, cy, R, zPrint, zSafe);
Пояснения по параметрам и настройкам
- cx, cy: положение звезды на столе принтера. Подстрой под свою платформу.
- R: размер звезды. Увеличение R увеличивает длину линий между вершинами.
- zPrint: высота слоя печати. Обычно 0.1–0.2 мм для настольной печати; подстрой под ваш материал и настройки.
- zSafe: высота перехода в воздухе между участками печати, чтобы избежать столкновений с уже напечатанным слоем.
Что учитывать в симуляторе
- В некоторых симуляторах помимо движения необходимо явно включать подачу материала (extrusion) во время движения между точками. Если ваша среда требует этого, перед началом траектории включи extrusion, и выключай после окончания, или используйте режим "print" при прохождении точек.
- Скорость движения: функция movePrinterNozzle не несёт параметры скорости. При необходимости добавь подстроку/интервал между вызовами, чтобы симулятор двигался с нужной скоростью.
- Орбитальная ориентация: если ваша платформа имеет иные оси или систему координат, перенастрой базовый угол и знаки cos/sin соответствующим образом.
Если хочешь, могу адаптировать код под конкретные параметры твоего симулятора (название функций, единицы измерения, способ включения подачи материала) и привести готовый пример под них.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



