每乙個資料庫物件都可以通過下面3種方式來獲得:
通過物件控制代碼
通過物件id
通過c++例項指標
當控制項沒有執行時,圖形儲存在檔案系統中,而包含在dwg檔案中的物件是通過它的控制代碼來識別的。
當圖形開啟後,圖形資訊可以通過mcdbdatabase物件來訪問。在資料庫中每乙個物件都有乙個物件id,這個物件id儲存在當前編輯過程中,從mcdbdatabase的建立直到刪除,物件id一直存在。物件開啟函式將物件id作為引數,返回乙個mcdbobject物件指標。這個指標在物件被刪除前一直有效。
可以使用mx::mcdbopenobject()函式來開啟物件,該函式的原型如下:
mcad::errorstatus mcdbopenmcdbobject (
mcdbobject*& obj,
mcdbobjectid id,
mcdb::openmode mode,
mdesk::boolean openerasedobject = mdesk::kfalse);
mcad::errorstatus mcdbopenobject(t_object*& pobj, mcdbobjectid id, mcdb::openmode mode, bool openerased = false);
可以使用下面的函式通過控制代碼獲取物件id,函式原型如下:
mcad::errorstatus mcdbdatabase::getacdbobjectid(mcdbobjectid& retid,mdesk::boolean createifnotfound, const mcdbhandle& objhandle, mdesk::uint32 xrefid=0);
可以使用mcdbobjectpointer模板類開啟:
mcdbobjectpointer(mcdbobjectid objid,
mcdb::openmode mode,
bool openerased = false);
當然,也可以開啟乙個物件,然後獲得此物件的控制代碼:
pobject->getmcdbhandle(handle);
mds_name與物件id作用是相同的,在mcdb庫中提供了兩個單獨的函式在mds_name和mcdbobjectid之間轉換,函式原型如下:
mcdbgetadsname(mds_name& objname, mcdbobjectid objid);
mcdbgetobjectid(mcdbobjectid& objid, mds_name objname);
可以使用如下方式開啟物件:
kforread:讀方式。如果物件沒有被以寫方式開啟,它可以被最多256個使用者以讀方式開啟。
kforwrite:寫方式。如果乙個物件沒有被開啟,則它可以被以寫方式開啟,否則開啟物件的操作將失敗。
CAD開啟和關閉資料庫物件
1 每乙個資料庫物件都可以通過下面3種方式來獲得 1 通過物件控制代碼 2 通過物件id 3 通過c 例項指標 2 當控制項沒有執行時,圖形儲存在檔案系統中,而包含在dwg檔案中的物件是通過它的控制代碼來識別的。3 當圖形開啟後,圖形資訊可以通過mcdbdatabase物件來訪問。在資料庫中每乙個物...
CAD 移動和複製命令
方法一 選中要移動的圖形,然後輸入命令m,按 回車鍵 選中乙個基點,再選中另乙個點,移動到需要的位置 把第乙個基點移動到第二個基點 也可以輸入命令m,選擇移 形,回車,選中乙個基點,再選中另乙個點,移動到需要的位置 方法二 選中要移動的圖形,滑鼠點選中間的點,然後拖動它,移動到目標位置雙擊 方法三 ...
隨CAD載入Arx和dll
使用lisp載入 在.lsp中加入下面這句 command netload arc.dll 然後在autocad 使用登錄檔載入 非託管的arx程式的載入 非託管的arx程式是指用c 編譯的以.arx為字尾的動態鏈結庫檔案,實現方法很簡單,只需在登錄檔中加入以下資訊 示例 windows regis...