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 类,能够使用这个函数。

相关文章
相关标签/搜索