Как создавать файлы изображений PNG из файлов STL?
Мне нужно добавить в документ несколько простых изображений файлов STL. В настоящее время я открываю файлы STL в режиме предварительного просмотра или в одном из слайсеров и делаю снимок экрана.
Существует ли более простой или автоматический способ создания изображений PNG из файлов STL на Mac?
@Mark Harrison, 👍9
Обсуждение4 ответа
Лучший ответ:
Если у вас установлен OpenSCAD, этот скрипт оболочки будет генерировать изображения PNG размером 100x100 пикселей для каждого файла STL в вашем текущем каталоге.
for i in *.stl; do
T=__tmp__$i
b=`basename $i`
echo import\(\"$i\"\)\; >$T
/Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD -o $b.png --imgsize=100,100 $T
rm $T
done
Следует отдать должное 0scar за указание на то, что файлы STL могут быть импортированы в OpenSCAD.
Обновление: Этот код делает то же самое и создает html-файл с аннотированными изображениями отображаемых файлов. Когда я распечатал партию запасных частей для своего 3D-принтера, я сделал печатную копию и засунул ее в коробку, чтобы позже идентифицировать детали.
n=-1
H=00-catalog.html
echo >$H '<table>'
echo >>$H ' <tr>'
for i in $*; do
n=`expr $n + 1`
if test $n = 4; then
n=0
echo >>$H ' </tr>'
echo >>$H ' <tr>'
fi
echo $i
T=__tmp__$i
B=`basename $i .stl`
echo import\(\"$i\"\)\; >$T
/Applications/OpenSCAD.app//Contents/MacOS/OpenSCAD -o $B.png --imgsize=200,200 $T
echo >>$H
echo >>$H ' <td>'$i'<br><img src="'$B'.png"></td>'
rm $T
done
echo >>$H ' </tr>'
echo >>$H '</table>'
Я уже давно пытаюсь понять этот код. Что на самом деле делает строка `echo import\(\"./$i\"\)\; > "$T"'? Я пытаюсь отредактировать его, чтобы я мог конвертировать файлы, содержащие пробелы в их именах., @erdostamasa
Примечание: При использовании в безголовой среде, такой как CI/CD/Github Actions, вам понадобится среда x11. Обходной путь-запустить поддельный X11 с Xvfb, например ( Xvfb :99 & export DISPLAY=:99
)., @spuder
@erdostamasa - строка создает однострочный временный скрипт, который импортирует файл STL. Когда вызывается openscad, он импортирует этот файл, затем -o
и --imgsize=100,100
из командной строки делают все остальное. Затем rm $T
очищает этот временный файл., @Ken Hiatt
Как правило, вы устанавливаете (бесплатную) программу 3D-модели, такую как Fusion 360, FreeCAD или многие другие варианты на выбор. После установки импортируйте файл STL и используйте параметры меню для экспорта изображения вашего STL.
В качестве альтернативы, если у вас есть некоторые навыки программирования, вы можете импортировать файл STL в OpenSCAD, визуализировать и экспортировать изображение оттуда. Просто создайте файл OpenSCAD со строкой кода ниже, и он импортирует ваш пример.stl
.
import("example.stl", convexity=10);
Через меню вы можете затем экспортировать представление в изображение. Обратите внимание, что вы можете сделать это также из командной строки, как показано в собственном ответе OP (хороший пример использования OpenSCAD в командной строке).
Это не единственные варианты, их гораздо больше. Например, это хороший пример. В нем также описывается, как Thingiverse.com делает STL для веб-изображения.
Для тех, кто ищет миниатюру наутилуса, использующую эту технику, я написал здесь краткое описание: https://github.com/sbrl/nautilus-thumbnailer-stl/, @starbeamrainbowlabs
Если вы не возражаете против использования захватов экрана, вы можете использовать AppleScript или как он там называется в последних версиях macOS, чтобы создать автоматический скрипт для открытия каждого файла, захвата экрана, сохранения и т. Д.
Вы можете использовать OpenSCAD, как указано в принятом ответе. Вот версия этого скрипта, которая работает для Windows для всех, кому она нужна, как это сделал я.
# Измените высоту и ширину на желаемые размеры выходного изображения в пикселях.
# Путь к openscad.exe также может потребоваться настройка в зависимости от вашей установки.
height=1080
width=1080
for i in *.stl; do
T=__tmp__$i
b=`basename "$i"`
echo import\(\"./$i\"\)\; > "$T"
C:/'Program Files'/OpenSCAD/openscad.exe -o "$b".png --autocenter --viewall --imgsize=$width,$height "$T"
rm "$T"
done
Что делает строка `echo import\(\"./$i\"\)\; > "$T"'? Я пытаюсь конвертировать файлы с пробелами в их именах, но продолжаю получать различные ошибки., @erdostamasa
- Механизм масштабирования в Creality Slicer 1.2.3 для супер малых/больших STL
- Cura испортила отпечаток. Как заставить его печатать то, что я вижу в Blender?
- Все ли слайсеры обрабатывают несколько объектов .STL для правильной для многоцветной печати?
- Нужна помощь, чтобы напечатать только одну небольшую часть
- 3D печать с использованием только двоичных тензоров, представляющих детали
- Разная заливка в одной и той же части
- Почему принято устанавливать ширину линии > диаметр сопла?
- Экспорт STL как ASCII или двоичный?
Приведенный ниже ответ звучит довольно хорошо, поэтому я просто отмечу, что Google предлагает ряд опций для создания файлов *postscript* из STL, и вы должны иметь возможность конвертировать их в другие форматы изображений. Я не уверен, насколько потерян будет этот переход (и он будет отличаться в зависимости от инструмента), но решил упомянуть об этом на случай, если кто-то придет сюда в поисках, например, решения, не относящегося к Mac..., @A C