Google Sketchupのデータのダンプ (Proof of Concept)
- http://sketchup.google.co.jp/ Google SketchUp - ホーム
- http://download.sketchup.com/OnlineDoc/gsu6_ruby/Docs/ruby-classes.html SketchUp Ruby API Class Index
C:\Program Files\Google\Google SketchUp 6\Plugins\
に以下のRubyスクリプトを nk_dump.rb
として保存し,さらに C:\Program Files\Google\Google SketchUp 6\Tools\sketchup.rb
を Plugins\
にコピーする.
require "sketchup.rb" unless file_loaded?("nk_dump.rb") def nk_dump m = Sketchup.active_model File.open("#{m.title}.dat", "w") {|f| m.active_entities.each{|e| case e when Sketchup::Edge f.print("Edge: ") f.puts(e.start.position.to_s + "--" + e.end.position.to_s) when Sketchup::Face f.print("Face: ") f.puts(e.vertices.map{|v| v.position.to_s + "--" }.join ) else f.print("unsupported: ") f.puts(e.inspect) end } } end tools = $suStrings.GetString("Tools") add_separator_to_menu(tools) UI.menu(tools).add_item($suStrings.GetString("nk_dump")) { nk_dump } file_loaded("nk_dump.rb") end
こういう立体図形(くぼみ付きの,1辺1インチの立方体)を作ってから
「ツール」メニューに新設された "nk_dump" をクリックするとこういうデータが(同じフォルダに,拡張子 .dat で)書き出される:
Edge: (0", 1", 0")--(0", 0", 0") Edge: (0", 0", 0")--(1", 0", 0") Edge: (1", 0", 0")--(1", 1", 0") Edge: (1", 1", 0")--(0", 1", 0") Face: (1", 0", 0")--(0", 0", 0")--(0", 1", 0")--(1", 1", 0")-- Face: (0", 0", 1")--(1", 0", 1")--(1", 1", 1")--(0", 1", 1")--(0.2", 0.2", 1")--(0.2", 0.8", 1")--(0.8", 0.8", 1")--(0.8", 0.2", 1")-- Edge: (0", 0", 1")--(1", 0", 1") Edge: (0", 1", 1")--(0", 0", 1") Edge: (1", 1", 1")--(0", 1", 1") Edge: (1", 0", 1")--(1", 1", 1") Edge: (0", 0", 0")--(0", 0", 1") Edge: (1", 0", 0")--(1", 0", 1") Face: (0", 0", 0")--(1", 0", 0")--(1", 0", 1")--(0", 0", 1")-- Edge: (0", 1", 0")--(0", 1", 1") Face: (0", 1", 0")--(0", 0", 0")--(0", 0", 1")--(0", 1", 1")-- Edge: (1", 1", 0")--(1", 1", 1") Face: (1", 1", 0")--(0", 1", 0")--(0", 1", 1")--(1", 1", 1")-- Face: (1", 0", 0")--(1", 1", 0")--(1", 1", 1")--(1", 0", 1")-- Edge: (0.2", 0.2", 1")--(0.8", 0.2", 1") Edge: (0.8", 0.2", 1")--(0.8", 0.8", 1") Edge: (0.8", 0.8", 1")--(0.2", 0.8", 1") Edge: (0.2", 0.8", 1")--(0.2", 0.2", 1") Face: (0.2", 0.8", 0.5")--(0.2", 0.2", 0.5")--(0.8", 0.2", 0.5")--(0.8", 0.8", 0.5")-- Edge: (0.2", 0.8", 0.5")--(0.2", 0.2", 0.5") Edge: (0.2", 0.2", 0.5")--(0.8", 0.2", 0.5") Edge: (0.8", 0.2", 0.5")--(0.8", 0.8", 0.5") Edge: (0.8", 0.8", 0.5")--(0.2", 0.8", 0.5") Edge: (0.2", 0.2", 1")--(0.2", 0.2", 0.5") Edge: (0.2", 0.8", 1")--(0.2", 0.8", 0.5") Face: (0.2", 0.8", 1")--(0.2", 0.2", 1")--(0.2", 0.2", 0.5")--(0.2", 0.8", 0.5")-- Edge: (0.8", 0.2", 1")--(0.8", 0.2", 0.5") Face: (0.2", 0.2", 1")--(0.8", 0.2", 1")--(0.8", 0.2", 0.5")--(0.2", 0.2", 0.5")-- Edge: (0.8", 0.8", 1")--(0.8", 0.8", 0.5") Face: (0.8", 0.2", 1")--(0.8", 0.8", 1")--(0.8", 0.8", 0.5")--(0.8", 0.2", 0.5")-- Face: (0.8", 0.8", 1")--(0.2", 0.8", 1")--(0.2", 0.8", 0.5")--(0.8", 0.8", 0.5")--
これで有限要素法もへっちゃら!(ぇー