Как построить пять конечную звезду на 3д принтере в симуляторе с помощью кода используя workshop.movePrinterNozzle(x, y, z) (напиши код)
Ответ нейросети
24 ноября 2025 16:24
Кратко: задача сводится к построению звездной фигуры в плоскости XY на одном слое и перемещению сопла по соответствующей последовательности вершин. Ниже приводжу подробное решение и готовый код (пользуемся API workshop.movePrinterNozzle(x, y, z)).
Что именно делаем
- Задаём радиус окружности, на котором размещаются внешние вершины пятиконечной звезды.
- Вычисляем координаты пяти внешних вершин окружности (углы: -90, -18, 54, 126, 198 градусов).
- Путь рисования для пятиконечной звезды (пентакрамма) — соединяем вершины в следующем порядке: 0 -> 2 -> 4 -> 1 -> 3 -> 0.
- Сначала подводим сопло на безопасную высоту, затем опускаем до слоя печати и последовательно перемещаемся по заданной последовательности, после чего поднимаем сопло обратно.
Пояснения по коду
- R — внешний радиус звезды; z — высота печати слоя (глубина сопла в просвете печати).
- safeZ (или startZ) — безопасная высота над столом для перемещений без печати.
- Координаты рассчитаны так, чтобы звезда была ориентирована вертикально вверх, но можно поменять начальный угол для другой ориентации.
- Если в вашей симуляции есть режим extrusion, он распознается по настройкам симулятора; здесь мы просто последовательно перемещаемся по точкам через API movePrinterNozzle.
Код (Python-подобный синтаксис) import math
def draw_pentagram_star(R=40.0, z=0.2, safeZ=60.0): # Перемещаемся на безопасную высоту workshop.movePrinterNozzle(0, 0, safeZ)
# Вычисляем внешние вершины звезды (5 точек)
angles = [math.radians(-90 + 72 * i) for i in range(5)]
outer = [(R * math.cos(a), R * math.sin(a)) for a in angles]
# Порядок соединения точек для пентаграммы: 0 -> 2 -> 4 -> 1 -> 3 -> 0
sequence = [0, 2, 4, 1, 3, 0]
# Перемещаемся к стартовой вершине на нужной высоте
start_idx = sequence[0]
x0, y0 = outer[start_idx]
workshop.movePrinterNozzle(x0, y0, z)
# Рисуем звезду по последовательности
for idx in sequence[1:]:
x, y = outer[idx]
workshop.movePrinterNozzle(x, y, z)
Пример параметров:
- R = 60 мм, z = 0.2 мм, safeZ = 80 мм — можно подстроить под ваш принтер/симулятор.
Код (JavaScript-подобный синтаксис) function drawPentagramStar(R = 40, z = 0.2, safeZ = 60) { const toRad = (deg) => deg * Math.PI / 180;
// Безопасное перемещение workshop.movePrinterNozzle(0, 0, safeZ);
// Внешние вершины звезды const angles = [toRad(-90 + 72 * 0), toRad(-90 + 72 * 1), toRad(-90 + 72 * 2), toRad(-90 + 72 * 3), toRad(-90 + 72 * 4)]; const outer = angles.map(a => [R * Math.cos(a), R * Math.sin(a)]);
// Порядок соединения вершин для пентаграммы const sequence = [0, 2, 4, 1, 3, 0];
// Перемещаемся к стартовой вершине const [startX, startY] = outer[sequence[0]]; workshop.movePrinterNozzle(startX, startY, z);
// Рисуем звезду по последовательности точек for (let i = 1; i < sequence.length; i++) { const [x, y] = outer[sequence[i]]; workshop.movePrinterNozzle(x, y, z); } }
Пояснения по использованию
- Задайте нужный размер звезды через параметр R (например, 40–60 мм).
- Задайте высоту слоя z (обычно 0.1–0.3 мм) и безопасную высоту safeZ для перемещений без печати.
- Если нужно, можно изменить ориентацию звезды, изменив начальный угол (-90 градусов можно заменить на другой, например -45).
Дополнительные советы
- Если ваш симулятор поддерживает подачу тестовых линий а-ля “extruder on/off”, можно добавить режим печати внутри траектории (например, начать extrusion перед перемещением к следующей вершине).
- Чтобы получить заполненную звезду, можно реализовать внутреннюю заливку: после прорисовки внешнего контура повторно пройти по внутренним линиям или реализовать полигональный метод заполнения. Это потребует дополнительных функций симулятора.
Хотите, я адаптирую код под конкретный язык/интерфейс вашего симулятора или добавлю вариант с заполнением звезды?
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



