Sunday, June 10, 2012

QuickSketchup Ruby : การหาพื้นที่หลายผิวมารวมกัน

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้า การหาชื่อวัสดุของผิวที่เลือก

ดาวน์โหลดไฟล์ตัวอย่าง

1.ไฟล์ Sketchup
ไฟล์ house1.skp
Save ไว้ในโฟลเดอร์ C:\myruby

2.ไฟล์ Ruby
ไฟล์ area3.rb
Save ไว้ในโฟลเดอร์ C:\myruby


โปรแกรมเริ่มใต้เส้น #ตัวอักษรสีเขียว คือ คอมเมนท์

require 'sketchup'
#กำหนดตัวแปร entities เป็นวัตถุที่เลือกจาก selection
entities = Sketchup.active_model.selection
#กำหนดตัวแปร sumarea เป็นค่า 0
sumarea = 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
sumarea += (face.area / sfactor)

} #สิ้นสุดการวน loop

#แสดงผลของตัวแปร sumarea
puts "*****Total Area (sq.m.)*****"
#พิมพ์ค่าทศนิยม 2 ตำแหน่งของตัวแปร sumarea
puts (sumarea*100).round / 100.0



ทดสอบกับโปรแกรม Sketchup


1.เปิดไฟล์ house1.skp ที่ดาวน์โหลดมาจากด้านบน

2.เลือกผิว (Face) ที่ต้องการรวมพื้นที่

คลิกที่รูปเพื่อขยาย


3.เปิด Ruby Console พิมพ์

load 'c:\\myruby\\area3.rb'

แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console

คลิกที่รูปเพื่อขยาย



สรุป



ต่อไป
การหา BOQ จากผิวและชื่อวัสดุ


Keyword:ภาษา Ruby Sketchup plugin