โดย ประยุทธ พันธุลาภ
บทความก่อนหน้า
หาพื้นที่จากผิวที่เลือกเป็นตารางเมตร
จากตัวอย่างที่แล้ว เราแปลงพื้นที่ของ face เป็น ตารางเมตร ด้วยค่าคงที่ 1.m ของ Sketchup Ruby ไปแล้ว
สิ่งที่เราอยากรู้ต่อไป คือ ชื่อวัสดุของ face
ดาวน์โหลดไฟล์ตัวอย่าง
1.ไฟล์ Sketchup
ไฟล์ area2.skp
Save ไว้ในโฟลเดอร์ C:\myruby
2.ไฟล์ Ruby
ไฟล์ area2th.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
##พิมพ์คำว่า Value of 1.m is เป็นค่าแปลงหน่วยจาก เมตรเป็นนิ้ว ของ Sketchup Ruby
puts "Value of 1.m is"
##พิมพ์ค่า 1.m
puts 1.m
##แปลงค่าพื้นที่ของ entity เก็บไว้ในตัวแปรชื่อ area_m จะมีหน่วยเป็น ตารางเมตร
area_m = entity.area / (1.m * 1.m)
##พิมพ์ค่าพื้นที่ของ entity จะมีหน่วยเป็น ตารางเมตร
puts "Face area in sq.m. is"
puts area_m
##ตรวจสอบว่า entity มีค่า material หรือไม่
if entity.material
##กรณีที่ entity มีค่า material
puts "************************"
##พิมพ์ค่าของ entity.material
puts "entity.material is "
puts entity.material
puts "************************"
##พิมพ์ค่าของ entity.material.name
puts entity.material.name
puts "************************"
##พิมพ์ค่าของ entity.material.display_name
puts "entity.material.display_name is"
puts entity.material.display_name
else
##กรณีไม่มีวัสดุ
puts "entity has no material it's value is"
puts entity.material
end
##if entity.material not nil
end
##จบคำสั่ง if entity.class == Sketchup::Face
ทดสอบกับโปรแกรม Sketchup
1. สร้างสี่เหลี่ยม ขนาด 1x2 ตร.ม. แล้วเทวัสดุ Stone_Flagstone_Ashlar หรือ เปิดไฟล์ area2.skp ที่ดาวน์โหลดมาจากด้านบน
2. คลิกที่ผิว
คลิกที่ภาพเพื่อขยาย
3. เปิด Ruby Console พิมพ์
load 'c:\\myruby\\area2th.rb'
แล้วกดปุ่ม Enter บนคีย์บอร์ด
ดูผลลัพธ์ใน Ruby Console
กรณีที่ face มีวัสดุ
คลิกที่ภาพเพื่อขยาย
ถ้าท่านสร้างผิวขึ้นมาใหม่ โดยที่ไม่เทวัสดุ เลือกผิวใหม่แล้ว Run
กรณีที่ face ไม่มีวัสดุ
คลิกที่ภาพเพื่อขยาย
สรุป
face จะมีคุณสมบัติเกี่ยวกับวัสดุ อยู่ 3 ประเภท คือ
1.ค่า entity.material เป็นค่าที่ Sketchup Ruby ใช้เก็บข้อมูล แต่เราอ่านไม่ออก เช่น #<Sketchup::Material:0x83cccc0>
2.ค่า entity.material.name เป็นค่าที่ Sketchup Ruby ใช้เก็บข้อมูลชื่อของวัสดุ เช่น [Stone_Flagstone_Ashlar]
3.ค่า entity.material.display_name เป็นค่าที่ Sketchup Ruby แสดงชื่อของวัสดุใน paint Bucket เช่น
คลิกที่ภาพเพื่อขยาย
ต่อไป
การหาพื้นที่หลายผิวมารวมกัน
Keyword: อบรม Sketchup