บทความก่อนหน้า การหาพื้นที่หลายผิวมารวมกัน
ดาวน์โหลดไฟล์ตัวอย่าง
1.ไฟล์ Sketchupไฟล์ house1.skp
Save ไว้ในโฟลเดอร์ C:\myruby
2.ไฟล์ Ruby
ไฟล์ faceboq.rb
Save ไว้ในโฟลเดอร์ C:\myruby
โปรแกรมเริ่มใต้เส้น #ตัวอักษรสีเขียว คือ คอมเมนท์
require 'sketchup'
#กำหนดตัวแปร entities เป็นวัตถุที่เลือกจาก selection
entities = Sketchup.active_model.selection
#กำหนดตัวแปร sumarea เป็นค่า Hash
#ดูเพิ่มเติมเกี่ยวกับ Ruby Hash ที่ http://ruby.about.com/od/rubyfeatures/a/hashes.htm
sumarea = Hash.new(0)
#กำหนดตัวแปร sfactor เป็นค่าแปลงหน่วยของพื้นที่จากตารางนิ้วเป็นตารางเมตร
sfactor = (1.m * 1.m)
#เริ่มต้นวน loop
entities.each{ |face|
#ถ้าตัวแปร face ไม่ใช่ Sketchup::Face ข้ามไปวัตถุชิ้นถัดไป
next unless (face.class == Sketchup::Face) #ถ้าตัวแปร face เป็น Sketchup::Face ทำบรรทัดข้างล่าง
#ถ้าตัวแปร face เป็น Sketchup::Face และมี Material เทอยู่ด้านหน้า
if face.material
#บวกค่าพื้นที่เพิ่ม สำหรับชื่อวัสดุด้านหน้า
sumarea[face.material.display_name] += (face.area / sfactor)
end
#ถ้าตัวแปร face เป็น Sketchup::Face และมี Material เทอยู่ด้านหลัง
if face.back_material
#บวกค่าพื้นที่เพิ่ม สำหรับชื่อวัสดุด้านหลัง
sumarea[face.back_material.display_name] += (face.area / sfactor)
end
} #สิ้นสุดการวน loop
#แสดงผลของตัวแปร sumarea
puts "*****BOQ Start*****"
#เริ่มต้นวน loop
#กำหนดตัวแปร name คือชื่อ display_name ของ material
#ส่วนตัวแปร area เป็นค่าพื้นที่ของ face มีหน่วยเป็นตารางเมตร
sumarea.each do|name,area|
#กำหนดตัวแปร marea มีค่าเป็นพื้นที่ให้มีค่าทศนิยม 2 ตำแหน่งจากค่าของตัวแปร area
marea = (area*100).round / 100.0
puts "#{name}, #{marea}, sq.m."
end #สิ้นสุดการวน loop
puts "*****BOQ End*****"
ทดสอบกับโปรแกรม Sketchup
1.เปิดไฟล์ house1.skp ที่ดาวน์โหลดมาจากด้านบน2.เลือกผิว (Face) ที่ต้องการถอดปริมาณวัสดุ
3.เปิด Ruby Console พิมพ์
load 'c:\\myruby\\faceboq.rb'
แล้วกดปุ่ม Enter บนคีย์บอร์ด
ดูผลลัพธ์ใน Ruby Console
สรุป
ต่อไป
การส่ง BOQ ไปยัง Excel ด้วยไฟล์ CSV
Keyword:ภาษา Ruby Sketchup plugin, อบรม Sketchup