月別アーカイブ: 2019年12月

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不可能なときに。