🖨️ Генератор STL по изображению для многоцветной 3D-печати
Скрипт преобразует изображение в набор STL-файлов, разделённых по цветам и слоям, для послойной FDM-печати с несколькими экструдерами или цветами.
📦 Что делает
- Определяет до 3 преобладающих цветов
- Создаёт:
- Слой 0 — сплошная подложка (150×150 мм, 0.48 мм)
- Слои 1+ — каждый слой содержит свой цвет + все менее распространённые
- Промежуточные слои — для плавных переходов между цветами (опционально)
- Каждый STL содержит только нужную геометрию слоя
- Все STL объединяются в единый .3mf-файл для удобной печати
🛠 Установка
pip install -r requirements.txt
Или вручную:
pip install numpy opencv-python trimesh scikit-learn tk configparser
Для GUI может потребоваться установка:
sudo apt install python3-tk
🚀 Использование
- Поместите изображение (.png или .jpg) в любую папку.
- Запустите из терминала:
python3 img_print.py путь/к/изображению.png
- Для запуска графического интерфейса:
python3 gui.py
📂 Результат
В той же папке появится подкаталог __result
, содержащий:
- STL-файлы с подложкой и цветными слоями (
*_layer.stl
) - Маски-предпросмотры (
*_preview.png
) - Финальный .3mf-файл для загрузки в слайсер
Импортируйте все STL или .3mf
в слайсер (например, Bambu Studio), объедините в один объект, назначьте цвет/экструдер для каждого слоя.
⚙️ Настройки по умолчанию
Параметр | Значение | Назначение |
---|---|---|
output_size_mm | 150 | Размер модели в мм по большей стороне (ширина или высота) |
base_thickness_mm | 0.48 | Толщина базовой подложки, которая печатается первой |
layer_thickness_mm | 0.08 | Толщина цветных слоёв, соответствующих сегментам изображения |
shade_thickness_mm | 0.08 | Толщина дополнительных слоёв-затенений между цветами |
max_colors | 4 | Максимальное количество выделяемых цветов изображения |
target_resolution | 1024 | Размер изображения, к которому оно приводится перед анализом |
smooth_kernel | 3 | Размер ядра для размытия масок (0 — без сглаживания) |
shade_delta | 100 | Максимальное отличие цвета для попадания в зону тени |
debug_mode | false | Только сохранять маски без генерации STL (для тестов) |
Настройки можно изменить в файле config.ini
или через графический интерфейс.
✅ Поддержка
Проект заточен под Bambu Lab A1 mini, но может работать и с другими принтерами. Ошибки, предложения и баг-репорты приветствуются!
Описание
Репозиторий чтоб превратить картинку в модели для печати несколькими цветами