เริ่มทำ Application บน Sketchup ได้
การ Interface กับ Sketchup ด้วย Ruby โดยปรกติจะผ่าน Class Sketchup ข้อดีของโปรแกรม Ruby คือ
การคำนวนคำสั่ง ไม่จำเป็นต้อง สร้าง Interface ใหม่ใช้ String ในการติดต่อได้เลย โดยจะทำงาน เหมือน
Command Line ของ Ruby
คำสั่ง rb_eval_string_protect จะเป็นคำสั่งในการติดต่อกับ Ruby ใน Sketchup
bool EvaluateRubyExpression(LPCTSTR expr, VALUE* pResult)
{
if( pResult ) *pResult = Qnil;
int state = 0;
VALUE val = rb_eval_string_protect(CT2A(expr), &state);
if( 0 == state && pResult )
{
*pResult = val;
}
return (state == 0);
}
ทีนี้ลองเขียน สีเหลี่ยม ขนาด 100x100 ที่ตำแหน่ง x=0,y=0 ดู
void doRectan()
{
VALUE self,name;
// make a face
VALUE p1 = EvaluateRubyExpression(_T("p1 = Geom::Point3d.new(0,0,0)"));
VALUE p2 = EvaluateRubyExpression(_T("p2 = Geom::Point3d.new(100,0,0)"));
VALUE p3 = EvaluateRubyExpression(_T("p3 = Geom::Point3d.new(100,100,0)"));
VALUE p4 = EvaluateRubyExpression(_T("p4 = Geom::Point3d.new(0,100,0)"));
EvaluateRubyExpression(_T("Sketchup.active_model.entities.add_face(p1,p2,p3,p4)"));
}
ตัวแปร p1 ให้เป็น Value จะเป็นจุด และ คำสั่ง Sketchup.active_mode.entities.add_face(..)
เป็นการสร้าง Face สี่เหลี่ยมจากจุด ใน แบบที่กำลังทำงานอยู่
เพิ่มใน คำสั่งใน init_<โปรแกรม>
rb_define_module_function(g_TI_ExtTest, "rectan", (VALUE *) doRectan,0);
ดูผล
ตอนนี้ก็สามารถให้ภาษา C สร้าง Object ใน Sketchup ได้แล้ว
ไม่มีความคิดเห็น:
แสดงความคิดเห็น