Как создавать файлы изображений PNG из файлов STL?

Мне нужно добавить в документ несколько простых изображений файлов STL. В настоящее время я открываю файлы STL в режиме предварительного просмотра или в одном из слайсеров и делаю снимок экрана.

Существует ли более простой или автоматический способ создания изображений PNG из файлов STL на Mac?

, 👍9

Обсуждение

Приведенный ниже ответ звучит довольно хорошо, поэтому я просто отмечу, что Google предлагает ряд опций для создания файлов *postscript* из STL, и вы должны иметь возможность конвертировать их в другие форматы изображений. Я не уверен, насколько потерян будет этот переход (и он будет отличаться в зависимости от инструмента), но решил упомянуть об этом на случай, если кто-то придет сюда в поисках, например, решения, не относящегося к Mac..., @A C


4 ответа


Лучший ответ:

12

Если у вас установлен 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


4

Как правило, вы устанавливаете (бесплатную) программу 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


2

Если вы не возражаете против использования захватов экрана, вы можете использовать AppleScript или как он там называется в последних версиях macOS, чтобы создать автоматический скрипт для открытия каждого файла, захвата экрана, сохранения и т. Д.

,

1

Вы можете использовать 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