SketchUp (r) を楽しむ

Googleのフリーソフトウエアー「SketchUp (r)」奮戦記

Google SketchUp Ruby API をかじる (3)

2008年12月08日 | Weblog
今回は、面を作成することに挑戦し、その後その面を数枚、間隔をあけて描くこともやってみたいと思います。今回も、こうやればできた、というアバウトな感じでやってみたいと思います。

1.面の作成:

Google SketchUp APIの資料ページの左下に「Methods」(メソッド)の一覧表があり、その中に、add_arcから始まって、add_circle, add_line、それに面を追加すると思われるメソッドのadd_faceがあります。ただ、このサイトだと使い方がよくわからないので、使い方やサンプルが紹介されているこちらのグーグルのサイトの方がわかりやすいと思います。

さて、線を引く場合は、add_lineを使用しましたが、面を描く場合は、add_faceというメソッドがあります。線の場合は2点でしたが、面の場合は4点を定義し、add_faceで面を描けばいいようです。スクリプトは以下の通りです。

********************************************************************

require 'sketchup'
def draw_face

pt0=[0,0,0]
pt1=[0,100,0]
pt2=[100,100,0]
pt3=[100,0,0]

model=Sketchup.active_model
model.entities.add_face(pt0,pt1,pt2,pt3)

end #def draw_face
UI.menu("PluagIns").add_item("Draw face"){draw_face}

********************************************************************

以下が実行結果です。




2.5つの面を同じ間隔で積み上げる:

次に上記の面を5つ同じ間隔で積み上げる場合は、ループを使いますが、ルビーの場合の for ループは、以下のような構造をとるとのことです。この場合、8回繰り返します。参考にしたページは、こちらです。

********************************************************************

for i in 1..8 do
  繰り返す動作の内容
end

********************************************************************

回数を5にして、それぞれの座標のうち、z 座標の値のみを10だけプラスするようにしました。pt0.z+10 は配列の変数である pt0 の z の値に 10 加算するものです。たぶん、もっとスマートな書き方があるのでしょうが。

********************************************************************

require 'sketchup'
def draw_5faces

pt0=[0,0,0]
pt1=[0,100,0]
pt2=[100,100,0]
pt3=[100,0,0]

model=Sketchup.active_model

for i in 1..5
model.entities.add_face(pt0,pt1,pt2,pt3)

pt0.z=pt0.z+10
pt1.z=pt1.z+10
pt2.z=pt2.z+10
pt3.z=pt3.z+10
end

end #def draw_face
UI.menu("PluagIns").add_item("Draw 5 faces"){draw_5faces}

********************************************************************

以下が実行結果です。




ここまでくると、入力フォームを表示させ、面の数を任意で決めて表示させることにも挑戦したいと思いますが、それは次回に.....

=======================================================================

記事一覧表==>>ここをクリックして下さい。

ビデオ・ギャラリー==>>こちらをクリックして下さい。

=======================================================================



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。