ObjectARX_將實體添加到圖形數據庫的模型空間相關函數

(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 類,能夠使用這個函數。

相關文章
相關標籤/搜索