(1)getBlockTable 是 AcDbDatabase 類的一個成員函數,用於得到指向圖形數據庫的塊表的指針。數據庫
getBlockTable 函數的定義形式爲:app
inline Acad::ErrorStatus getBlockTable(AcDbBlockTable*& pTable,AcDb::OpenMode mode);
該函數的返回值 Acad::ErrorStatus 是 ObjectARX 中定義的一個枚舉類型,主要用於判斷函數的返回狀態,若是函數成功執行會返回 Acad::eOk。第一個參數 pTable 返回指向塊表的指針;第二個參數一樣是一個枚舉類型的變量,其類型 AcDb::OpenMode 包含了AcDb::kForRead、AcDb::kForWrite 和 AcDb::kForNotify 三個可取的值。函數
具體用法如例:spa
AcDbBlockTable *pBlockTable; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead);
acdbHostApplicationServices()->workingDatabase()可以得到一個指向當前活動的圖形數據庫的指針。指針
(2)getAt 函數是 AcDbBlockTable 類的一個成員函數,用於得到塊表中特定的記錄。code
getAt 函數的定義形式爲:對象
Acad::ErrorStatus getAt(const char* entryName,AcDbBlockTableRecord*& pRec,AcDb::OpenMode openMode, bool openErasedRec = false) const;
第一個參數用於指定塊表記錄的名稱;第二個參數用於返回指向塊表記錄的指針;第三個參數指定了塊表記錄打開的模式,下一步要向塊表記錄中添加實體,因此就用寫的模式(AcDb::kForWrite)打開;第四個參數指定是否查找已經被刪除的記錄,通常使用默認的參數值。繼承
具體語法如例:get
AcDbBlockTableRecord *pBlockTableRecord; pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite);
ACDB_MODEL_SPACE 是 ObjectARX 中定義的一個常量,其內容是「*Model_Space」模型空間,若是想在圖紙空間,則用ACDB_PAPER_SPACE。it
(3)appendAcDbEntity 是 AcDbBlockTableRecord 類的成員函數,用於將 pEntity 指向的實體添加到塊表記錄和圖形數據庫中。
appendAcDbEntity 函數的定義形式爲:
Acad::ErrorStatus appendAcDbEntity(AcDbObjectId& pOutputId,AcDbEntity* pEntity);
第一個參數返回圖形數據庫爲添加的實體分配的 ID 號;第二個參數指定了所要添加的實體。
具體語法如例:
AcDbObjectId lineId; pBlockTableRecord->appendAcDbEntity(lineId, pLine);
(4)全局函數 acdbOpenAcDbEntity用於從實體的 ID 號得到指向圖形數據庫中實體的指針。
acdbOpenAcDbEntity函數的定義形式爲:
Acad::ErrorStatus acdbOpenAcDbEntity(AcDbEntity*& pEnt,AcDbObjectId id,AcDb::OpenMode mode,bool openErasedEntity = false);
返回值不爲Acad::eOk,則都屬於打開失敗。第一個參數返回指向圖形數據庫實體的指針;第二個參數輸入了要得到的實體的 ID 號;第三個參數指定了打開該實體的方式,若是僅是查詢該實體的特性用「讀」模式打開便可,要修改實體的特性就必須用「寫」模式打開;第四個參數指定是否容許訪問一個已經被刪除的實體。
acdbOpenAcDbEntity:適用於打開繼承於 AcDbEntity 的數據庫常駐對象,這類對象通常都能在圖形窗口中顯示,如直線、圓等。 acdbOpenAcDbObject:適用於打開未繼承於 AcDbEntity 的數據庫常駐對象,這類對象不能在圖形窗口中顯示,如層表、線型表等。acdbOpenObject:若是不知道要打開的對象是否繼承於 AcDbEntity 類,能夠使用這個函數。