# OZReport.rb http://www.est.hi-ho.ne.jp/atamadekkati/ # グループ化,コンポーネント化された材の幅、奥行き、高さの一覧表を書きだす。 # 2009/07/19 ver1.00 作成 # 2009/11/05 ver1.10 ver7用に修正 # # 使用者の自己責任でご使用下さい。 # 改変してマシなのができたら私にも教えてください。 # # windows等で日本語のsjisファイル名を使用する場合は、uconv.soを入手してプラグインフォルダに入れ、 # 「#uconv」とある3箇所を空白に置換等して、その3行をコメント行じゃなくすとよいはずです。 # 修正したファイルを保存するときは、UTF-8Nで保存しなくちゃいけないので、windowsのメモ帳では無理です。 require 'sketchup.rb' #uconv require 'uconv' #ruby(http://www.ruby-lang.org/ja/)に標準で入っているらしい。 #uconv $KCODE = 'UTF8' #sketchup上はUTF8が標準らしいので。 def ozreport # バージョンチェック version_required = 6.0 if (Sketchup.version.to_f < version_required) UI.messagebox("You must have Sketchup " + version_required.to_s + " to run this plugin. Visit sketchup.google.com to upgrade.") return end model = Sketchup.active_model entities = model.entities mpath = model.path if mpath == "" UI.messagebox "このファイルの保存フォルダに一覧ファイルを出力するので、事前に無題を保存してください。" return nil end model_filename = mpath.split("\\") model_filename = model_filename[model_filename.length-1].split(".")[0] bbox = model.bounds # ファイル名の設定とファイル形式(セパレータ-)の設定 f_name = model_filename + "_group_report.html" $stline = "" $sep = '' $endline = '' Sketchup::set_status_text("Gathering information, please wait...", SB_PROMPT) # ファイル作成(エラーハンドルは作ってない 強制上書き) #uconv f_name=Uconv.u8tosjis(f_name) #ファイル名をUTF-8からshift-JISに変換する。 output = File.new(f_name , "w" ) # htmlヘッダー部 output.puts("") output.puts('') output.puts("") # htmlデータ部のファイル概要 output.puts("") output.puts($stline + "ファイル名" + $sep + File.basename(model.path) + $endline) output.puts($stline + "entities数" + $sep + entities.length.to_s + $endline) output.puts("
") output.puts("") output.puts($stline + "図形範囲 幅" + $sep + bbox.width.to_l.to_s + $endline) output.puts($stline + "図形範囲 奥行き" + $sep + bbox.height.to_l.to_s + $endline) output.puts($stline + "図形範囲 高さ" + $sep + bbox.depth.to_l.to_s + $endline) output.puts("
") # 親エンティティごとの処理 nr_edges = nr_faces = nr_componentinstances = nr_groups = nr_images = nr_sectionplanes = nr_dimensions = nr_texts = nr_clines = nr_cpoints = 0 output.puts("") output.puts($stline + "タイプ" + $sep + "layer名" + $sep + "名称" + $sep + "全体幅" + $sep + "全体奥行" + $sep + "全体高さ" + $sep \ + "定義名" + $sep + "定義幅" + $sep + "定義奥行" + $sep + "定義高さ" + $endline) entities.each {|e| type = e.typename case type when "Edge" nr_edges = nr_edges + 1 when "Face" nr_faces = nr_faces + 1 # Componentの書き出し when "ComponentInstance" nr_componentinstances = nr_componentinstances + 1 output.puts($stline + "component" + $sep + e.layer.name.to_s + $sep + e.name.to_s + $sep + e.bounds.width.to_l.to_s + $sep + e.bounds.height.to_l.to_s + $sep + e.bounds.depth.to_l.to_s + $sep \ + e.definition.name.to_s + $sep + e.definition.bounds.width.to_l.to_s + $sep + e.definition.bounds.height.to_l.to_s + $sep + e.definition.bounds.depth.to_l.to_s + $endline) # groupの書き出し when "Group" nr_groups = nr_groups + 1 if (Sketchup.version.to_f >= 7.0) output.puts($stline + "group" + $sep + e.layer.name.to_s + $sep + e.name.to_s + $sep + e.bounds.width.to_l.to_s + $sep + e.bounds.height.to_l.to_s + $sep + e.bounds.depth.to_l.to_s + $sep \ + "group初期値" + e.local_bounds.width.to_l.to_s + $sep + e.local_bounds.height.to_l.to_s + $sep + e.local_bounds.depth.to_l.to_s + $endline ) else output.puts($stline + "group" + $sep + e.layer.name.to_s + $sep + e.name.to_s + $sep + e.bounds.width.to_l.to_s + $sep + e.bounds.height.to_l.to_s + $sep + e.bounds.depth.to_l.to_s + $sep \ + "" + $sep + "" + $sep + "" + $sep + "" + $endline ) end when "Image" nr_images = nr_images + 1 when "SectionPlane" nr_sectionplanes = nr_sectionplanes + 1 when "DimensionLinear" nr_dimensions = nr_dimensions + 1 when "DimensionRadial" nr_dimensions = nr_dimensions + 1 when "Text" nr_texts = nr_texts + 1 when "ConstructionLine" nr_clines = nr_clines + 1 when "ConstructionPoint" nr_cpoints = nr_cpoints + 1 end } output.puts("
") # 親エンティティ情報の書き出し output.puts("") output.puts($stline + "Edges" + $sep + nr_edges.to_s + $endline) output.puts($stline + "Faces " + $sep + nr_faces.to_s + $endline) output.puts($stline + "Components" + $sep + nr_componentinstances.to_s + $endline) output.puts($stline + "Groups" + $sep + nr_groups.to_s + $endline) output.puts($stline + "Images" + $sep + nr_images.to_s + $endline) output.puts($stline + "Section_planes" + $sep + nr_sectionplanes.to_s + $endline) output.puts($stline + "Dimensions" + $sep + nr_dimensions.to_s + $endline) output.puts($stline + "Texts" + $sep + nr_texts.to_s + $endline) output.puts($stline + "Construction lines" + $sep + nr_clines.to_s + $endline) output.puts($stline + "Construction points" + $sep + nr_cpoints.to_s + $endline) output.puts("
") # フッダー書き出し、ファイルクローズ output.puts("") output.puts("") output.close # メッセージ Sketchup::set_status_text("Gathering information, please wait...Done.", SB_PROMPT) UI.messagebox "ファイルを書きだしました。" end #of def #============================================================================= # Add a menu if( not $ozreport_menu_loaded ) add_separator_to_menu("Tools") ozreport_menu = UI.menu("Tools").add_item("部材一覧html") { ozreport } $ozreport_menu_loaded = true end