Sunday, May 6, 2012

QuickSketchup Ruby : หาพื้นที่จากผิวที่เลือก

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

บทความก่อนหน้า โปรแกรมแรก hello.rb

ปรกติแล้วสิ่งที่เราอยากทราบจาก โมเดลก็คือปริมาณงาน และส่วนมากก็จะเป็น ผิว (Face) ที่มีวัสดุเทอยู่

เราลองเริ่มจากเขียนโปรแกรม หาพื้นที่ผิวจากวัตถุที่เราเลือกมาดูสัก 1 ชิ้นก่อน


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

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

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


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


##กำหนดให้ตัวแปร model เป็น Sketchup active model
model = Sketchup.active_model

##กำหนดให้ตัวแปร selection เป็น object ทั้งหมดที่ถูกเลือกบนหน้าจอ
##ถ้าไม่มีวัตถุถูกเลือก selection จะมีค่าเป็น nil
selection = model.selection

##กำหนดให้ตัวแปร entity เป็น วัตถุชิ้นแรกที่ถูกเลือกใน selection
## selection[0] = วัตถุชิ้นแรก selection[1] = วัตถุชิ้นที่สอง
entity = selection[0]

##ตรวจสอบว่า entity เป็นผิว (Face) หรือไม่
if entity.class == Sketchup::Face ##ถ้าentity เป็นผิว ( Face) ทำงานจนกว่าจะพบคำว่า end
##พิมพ์ข้อความด้านล่าง
puts "Face area in sq.inch is"
##พิมพ์ค่าพื้นที่ของ entity จะมีหน่วยเป็น ตารางนิ้ว
puts entity.area

end ##จบคำสั่ง if entity.class == Sketchup::Face



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

1. สร้างสี่เหลี่ยม ขนาด 1x2 ตร.ม. หรือ เปิดไฟล์ area1.skp ที่ดาวน์โหลดมาจากด้านบน

2. คลิกที่ผิว



คลิกที่ภาพเพื่อขยาย



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

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

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

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



คลิกที่ภาพเพื่อขยาย


จะเห็นว่าพื้นที่ไม่ใช่ค่า 2 ตารางเมตร แต่เป็น 3100.0062 ตารางนิ้ว



สรุป


หน่วยความยาวใน Sketchup Ruby เป็น นิ้ว


หน่วยพื้นที่ใน Sketchup Ruby เป็น ตารางนิ้ว


ดังนั้นต้องแปลงค่าหน่วยให้เป็น เมตร หรือ ตารางเมตร ก่อน สำหรับปริมาณงานที่ต้องการ

แต่ในการคำนวณต้องแปลงค่ากลับไปเป็นค่าของ ระบบนิ้ว เสมอ ฟังก์ชันของ Sketchup Ruby จึงจะทำงานถูกต้อง


บทความต่อไป

หาพื้นที่จากผิวที่เลือกเป็นตารางเมตร


Keyword:ภาษา Ruby Sketchup plugin