3Dプリンタ」カテゴリーアーカイブ

STLファイルの寸法を知りたい

3Dプリンタでも良く使われるSTLファイルですが,人からもらったSTLファイルの外寸(寸法,サイズ)をさくっと知りたいときはRubyで以下のような感じです。

#!/usr/bin/ruby
# stldimensions.rb: STLの外寸を求める。
# 要 stl (Gem)
# usage: $0 stlfile

require 'stl'

class Points < Array
  def dimension(axis)
    (self.map(&axis).max-self.map(&axis).min)
  end
end

# STLファイル中の全平面の全座標を得る。各要素はGeometry::Point。
points = Points.new(STL.read(ARGV.shift).map(&:last).map(&:points).flatten)

# 最大外寸を調べて表示
printf("%.2f x %.2f x %.2f\n",
       points.dimension(:x),
       points.dimension(:y),
       points.dimension(:z))

stlはgemでインストールできます。

$ gem install stl

STLビューアを立ち上げるのが面倒or不可能なときに。

OpenGLが使えない環境でも3Dプリンタのスライサが使いたい(MesaによるOpenGLのソフトウェアエミュレーション)

3Dプリンタでは,3Dモデルをスライサというソフトウェアでスライスする必要があります。スライサは大抵の場合「どんな向きでプリントするか」等も調節できるため,一種の3Dビューアにもなっており,このためOpenGLを要求されることがあります。

本研究室の3Dプリンタ「QiDi X-Smart」付属のスライサ「QiDi Print」でもやはりOpenGLを要求されます。このため,リモートデスクトップや,非力なノートPC等でQiDi Printを起動すると,

Could not probe OpenGL. This program requires OpenGL 2.0 or higher.
Please check your video card drivers.

のように言われてしまい起動できません。しかし,そんなに凝った調節をしたいことはあまりないので,どうにか起動させてスライスだけしたいことも多いと思います。こんなときの解決法として,OpenGLをソフトウェアでエミュレーションしてしまうという方法があります。方法は非常に簡単です。

具体的には,まず普通に QiDiInstall 4.2.16.exe をインストールします (C:\Program Files\QiDi 4.2 に入る)。
次に
http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mesa-18.3.4-1-any.pkg.tar.xz
をダウンロードし,7zip等でxz,tarの順に伸長していくと,mingw64\bin\opengl32.dll があるのでこれを
C:\Program Files\QiDi 4.2
にコピーします (QiDiPrint.exe のある場所)。

これだけです。意外にも軽く,普通に実用になります。
これはたまたまQiDi Printの例ですが,他のスライサやその他の3D関係にも応用可能だと思います。