สำหรับ Sketchup มี Ruby เป็นภาษาในการพัฒนาโปรแกรมเสริม และเราสามารถใช้ C/C++ ในการพัฒนาเชื่อมต่อ ได้ในบทความก่อนหน้านี้ สำหรับ C# มีสถานะที่ต่างกัน เนื่องจาก C# เป็น Manage Code การที่ C/C++ จะเรียก Manage Code ซึ่งเป็น Subset ที่ใหญ่กว่า จะยากกว่า ที่ Managed Code C# เรียก Unmanaged C/C++ มาก Microsoft ได้เปิดช่องใว้ทางเดียว คือต้องทำให้ Managed Code C# เป็น COM หรือ Component Object Model อันเป็นระบบเก่าแก่ของ Microsoftในการเชื่อม ระหว่างโปรแกรมด้วยกัน
ถ้าดูจากวิธีที่จะใช้ C# เข้าไปใน Sketchup นั้น จะเป็นไปตาม Diagram นี้
[Ruby] <----- C/C++ ----> [MFC C/C++] <----- COM----->[C# DotNet]
เร่ิมต้น เราสร้าง Project สำหรับ C# Class ก่อน โดยเปิด Visual Studio 2008 หรือ 2010
และสร้าง Class ตามตัวอย่าง จะเห็นได้ว่า มี Interface เป็นการตั้ง Type สำหรับการติดต่อ กับโปรแกรม
อื่น ตัวอย่างนี้ มี 2 Interface เป็นตัวอย่าง คำนวน บวกค่า และ ตัวอย่างในการแสดง Dialog
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace MathLib
{
public interface IAddClass
{
int Add(int a, int b);
}
public class CAddClass : IAddClass
{
public int Add(int a, int b)
{
return a + b;
}
public interface IForm1
{
int aForm();
}
public class CiForm1 : IForm1
{
public int aForm()
{
if (MessageBox.Show("HELLO") == DialogResult.OK)
{
return 1;
}
return 0;
}
}
}
}
ก่อนที่จะ Compile ให้สร้าง Stong Name เพื่อให้โปรแกรม Dll ที่ Compile นี้ เป็น Unique
สำหรับโปรแกรมอื่น ไปที่ Visual Studio ->Utitliy->Command Prompt
sn -k myClass.SNK
ทำการ Copy SNK นี้ ไปที่ โครงการที่กำลังทำอยู่ จากนั้น Add เข้าไปใน Project
และ สำหรับการ Build การ Compile ให้ตั้งค่าที่ Post Build ใน Build Event
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regAsm.exe <ชื่อโปรแกรม>.dll /tlb:MathLib.tlb /codebase
จะสร้าง tlb สำหรับให้ C/C++ รู้จัก
สำหรับ ใน โครงการ ให้แก้ AssemblyInfo.cs
[assembly: ComVisible(true)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("myClass.SNK")]
จากนั้น ให้ ทำการ Compile โปรแกรม จะได้ Dll พร้อมกับ Tlb สำหร้บ ทำการ Include ใน C/C++ ต่อไป เป็นอันสิ้นสุดการทำ COM ให้ C# ชุดนี้
win 64 register ใช้ 64 bit
ตอบลบC:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\regAsm.exe .dll /tlb:MathLib.tlb /codebase