SketchUp Make v17.1.173
MacOS X El Capitan
Groupのサイズを取得したい。
google検索してようやく以下の方法を見つけた。
Vector3d - SketchUp Ruby API Google Developers
www.sketchupdocs.com/docs/ourdoc/boundingbox
このページを訳す
You can get the bounding box on a model. model = Sketchup.active_model model_bb = model.bounds # Or you can get the ... first_entity.bounds # Or you can create an empty bounding box of your own. boundbox = Geom::BoundingBox.new ...
ただし、上記のリンク先はすでになくなっている。
とりあえずキャッシュで記載されたコード(上記の文字列のこと)を参考にした。
require 'sketchup.rb'
def measure_group()
model = Sketchup.active_model
my_selection = model.selection
my_selection.each do |ent|
if ent.is_a? Sketchup::Group
bnd = ent.bounds
print("W:",bnd.width)
print(",H:",bnd.height)
print(",D:",bnd.depth,"\n")
end
end
end
立方体を作成し、Group化する。
上記のスクリプトをRubyコンソールにて読込む。
(スクリプトの置き場所はこちら参照)
> load "measureGroup161224.rb"
true
Groupにしたオブジェクトを選択後、measure_group()を実行する。
> measure_group()
W:3000.000000mm,H:1000.000000mm,D:4000.000000mm
# <Sketchup::Selection:0x007fcfabe8d208>
作成したサイズを取得できた。
オブジェクト?を回転している場合はlocal_bounds
を使え、というようなメモを見た気もする。
今回はboundsというもので間に合った。
測定2
今日、立体ずらしスクリプトを使って作成したlaundry rackの案1。
それぞれがGroup化したオブジェクトなので、うまく動けば、NIC directに注文する情報が簡単に得られるはず。
全Groupを選択してmeasure_group()
してみた。
> measure_group()
W:900.000000mm,H:20.000000mm,D:20.000000mm
W:650.000000mm,H:20.303132mm,D:20.305539mm
W:20.000000mm,H:900.000000mm,D:20.000000mm
W:20.000000mm,H:20.000000mm,D:900.000000mm
W:650.000000mm,H:20.000000mm,D:20.000000mm
W:20.000000mm,H:900.000000mm,D:20.000000mm
W:20.000000mm,H:20.000000mm,D:650.305575mm
W:900.000000mm,H:20.000000mm,D:20.000000mm
W:20.000000mm,H:900.000000mm,D:20.000000mm
W:20.000000mm,H:20.000000mm,D:650.000000mm
W:20.000000mm,H:20.000000mm,D:900.000000mm
# <Sketchup::Selection:0x007fcfabe8d208>
少し誤差が出ているが、欲しい情報が簡単に得られようになった。
(誤差はモデリング時の失敗に起因するだろう)
900mmと650mmで統一することで、再利用性を検討している。
もしくかするとBorg Sensor System1の測定装置のフレームとして使うかもしれないので。
マグネトロンスキャナとか(原理を考える必要がある)。
測定3
多数の直方体から構成される構造物のサイズも一覧取得できる。
ただし、回転しているGroupはサイズ取得を失敗するようだ(値が正しく出力されない)。
link
以下のスクリプトの方が見やすい結果を生成しています。
http://qiita.com/yasuraok/items/8e69234f96178c2d48f7