ObjectARX, AutoCAD. C++



- 3


// and iterates through all its entries, printing out the

// integer data value in each entry.

//

void

iterateDictionary()

{

AcDbDictionary *pNamedobj;

acdbHostApplicationServices()->workingDatabase()

->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);

// Get a pointer to the ASDK_DICT dictionary.

//

AcDbDictionary *pDict;

pNamedobj->getAt("ASDK_DICT", (AcDbObject*&)pDict, AcDb::kForRead);

pNamedobj->close();

// Get an iterator for the ASDK_DICT dictionary.

//

AcDbDictionaryIterator* pDictIter= pDict->newIterator();

AsdkMyClass *pMyCl;

Adesk::Int16 val;

for (; !pDictIter->done(); pDictIter->next()) {

// Get the current record, open it for read, and

// print its data.

//

pDictIter->getObject((AcDbObject*&)pMyCl,

AcDb::kForRead);

pMyCl->getData(val);

pMyCl->close();

acutPrintf("\nintval is: %d", val);

}

delete pDictIter;

pDict->close();

}

// The initialization function called from the acrxEntryPoint()

// function during the kInitAppMsg case is used to add commands

// to the command stack and to add classes to the ACRX class

// hierarchy.

//

void

initApp()

{

acedRegCmds->addCommand("ASDK_DICTIONARY_COMMANDS",

"ASDK_CREATE", "CREATE", ACRX_CMD_MODAL,

createDictionary);

acedRegCmds->addCommand("ASDK_DICTIONARY_COMMANDS",

"ASDK_ITERATE", "ITERATE", ACRX_CMD_MODAL,

iterateDictionary);

AsdkMyClass::rxInit();

acrxBuildClassHierarchy();

}

// The cleanup function called from the acrxEntryPoint() function

// during the kUnloadAppMsg case removes this applications

// command set from the command stack and removes this applications

// custom classes from the ACRX runtime class hierarchy.

//

void

unloadApp()

{

acedRegCmds->removeGroup("ASDK_DICTIONARY_COMMANDS");

// Remove the AsdkMyClass class from the ACRX runtime

// class hierarchy. If this is done while the database is

// still active, it should cause all objects of class

// AsdkMyClass to be turned into proxies.

//

deleteAcRxClass(AsdkMyClass::desc());

}