一、CAD由句柄(字符串)獲取ID
public ObjectId GetObjectId(Database db, string handleString)
{
long l = Convert.ToInt64(handleString, 16);
Handle handle = new Handle(l);
return db.GetObjectId(false, handle, 0);
}
二、IntPtr 與 string互轉
ID、指針、句柄和 ads_name 之間具有下面的轉換關係:
(1)從 ID 到對象acdbOpenAcDbObject 和 acdbOpenObject 中的任何一個。
(2)從對象指針到 ID:所有的數據庫常駐對象都繼承自 AcDbOb包含的 objectId 函數能獲得所指向對象的 ID。
(3)從句柄到 ID:使用 AcDbDatabase::getAcDbObje
(4)從 ID 到句柄:使用 AcDbObjectId::handle 函數。
(5)從指針到句柄:使用 AcDbObject::getAcDbHandle
(6) 從 ads_name 到 ID:使用全局函數 acdbGetObjectId。
(7)從 ID 到 ads_name:使用全局函數 acdbGetAdsName。
三、IntPtr 與 string互轉
string str = “aa”;
IntPtr init = Marshal.StringToHGlobalAnsi(str);
string ss= Marshal.PtrToStringAnsi(init);
//最後釋放掉
Marshal.FreeHGlobal(init);