ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Создание Словаря


Следующий пример создает новый словарь (ASDK_DICT) и добавляет это к словари имен объектов. Тогда это создает два новых объекта класса пользователя AsdkMyClass (полученный из AcDbObject) и добавляет их к словарю, используя setAt () функция.

ОБРАТИТЕ ВНИМАНИЕ, что Вы должны закрыть объекты после добавления их с setAt () функция.

// This function creates two objects of class AsdkMyClass.

// It fills them in with the integers 1 and 2, and then adds

// them to the dictionary associated with the key ASDK_DICT. If this

// dictionary doesn’t exist, it is created and added to the named

// object dictionary.

//

void

createDictionary()

{

AcDbDictionary *pNamedobj;

acdbHostApplicationServices()->workingDatabase()->

getNamedObjectsDictionary(pNamedobj, AcDb::kForWrite);

// Check to see if the dictionary we want to create is

// already present. If not, create it and add

// it to the named object dictionary.

//

AcDbDictionary *pDict;

if (pNamedobj->getAt("ASDK_DICT", (AcDbObject*&) pDict,

AcDb::kForWrite) == Acad::eKeyNotFound)

{

pDict = new AcDbDictionary;

AcDbObjectId DictId;

pNamedobj->setAt("ASDK_DICT", pDict, DictId);

}

pNamedobj->close();

if (pDict) {

// Create new objects to add to the new dictionary,

// add them, then close them.

//

AsdkMyClass *pObj1 = new AsdkMyClass(1);

AsdkMyClass *pObj2 = new AsdkMyClass(2);

AcDbObjectId rId1, rId2;

pDict->setAt("OBJ1", pObj1, rId1);

pDict->setAt("OBJ2", pObj2, rId2);

pObj1->close();

pObj2->close();

pDict->close();

}

}



Содержание раздела