1
2

More than 5 years have passed since last update.

SketchUp Make v17 / Ruby > GroupのWidth, Height, Depth[mm]を表示する実装

Last updated at Posted at 2016-12-24
動作環境
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 ...

ただし、上記のリンク先はすでになくなっている。
とりあえずキャッシュで記載されたコード(上記の文字列のこと)を参考にした。

measureGroup161224.rb
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>

作成したサイズを取得できた。

qiita.png

オブジェクト?を回転している場合はlocal_boundsを使え、というようなメモを見た気もする。

今回はboundsというもので間に合った。

測定2

今日、立体ずらしスクリプトを使って作成したlaundry rackの案1。
それぞれがGroup化したオブジェクトなので、うまく動けば、NIC directに注文する情報が簡単に得られるはず。

qiita.png

全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

多数の直方体から構成される構造物のサイズも一覧取得できる。

qiita.png

ただし、回転しているGroupはサイズ取得を失敗するようだ(値が正しく出力されない)。

link

以下のスクリプトの方が見やすい結果を生成しています。
http://qiita.com/yasuraok/items/8e69234f96178c2d48f7

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2