標籤:write ice 2.4 記錄 語句 block bho 圖形 base
剛剛學習一樣新東西的時候,首先要解決的幾個問題
1. 任何搭建一個項目環境;
2. 建立一個項目的流程;
3. 調試;
4. 熟悉其API;
5. 錯誤積累與解決辦法;
6. 其中隱含的文法知識和UML知識;
這是針對代碼而言,如果對專業背景不熟悉,還能掌握相關背景知識。
這篇主要講的是基本流程如下:
2.1 基於AutoCAD內部的實現機制,必須在堆上建立對象,而不能用下面的語句建立直線的對象:
比如: AcDbLine line(ptStart, ptEnd);
只能用: AcDbLine *pLine = new AcDbLine(ptStart, ptEnd);
這隻是在記憶體上建立,並沒有添加到圖形資料庫中,因此不可能會顯示在圖形視窗中。
2.2 獲得指向塊表的指標
AcDbBlockTable *pBlockTable;//獲得指向塊表的指標;
acdbHostApplicationServices()->workingDatabase() 能夠獲得一個指向當前活動的圖形資料庫的指標。
getBlockTable是AcDbDatabase類的一個成員函數,用於獲得指向圖形資料庫的塊表的指標。
2.3 獲得指向特定的塊表記錄(模型空間)的指標
AcDbBlockTableRecord *pBlockTableRecord; //獲得指向特定的塊表記錄(模型空間)的指標
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
AcDbBlockTable::getAt(…) 是獲得塊表中特定的記錄。
2.4 在塊表記錄中添加實體
AcDbObjectId lineId; //將AcDbline類的對象添加到塊表記錄中
pBlockTableRecord->appendAcDbEntity(lineId, pLine);
AcDbBlockTableRecord::appendAcDbEntity(…); //用於將pEntity指向的實體添加到塊表記錄和圖形資料庫中。
2.5 關閉圖形資料庫的各種對象
pBlockTable->close();
pBlockTableRecord->close();
pLine->close();
要注意: 1). 開啟或建立資料庫物件之後,必須儘可能早的關閉它。
2). 不要使用delete pLine。在C++中,new,delete運算子配對使用。但在ObjectARX的編程中,當用appendAcDbEntity函數將對象添加到圖形資料庫之後,就需要由圖形資料庫來操作該對象。這裡是由內部自己釋放了嗎?
ARXObject的入門學習