Acad::ErrorStatus ArxDbgUtils::collectSymbolIds(AcRxClass* symTblClass, AcDbObjectIdArray& objIds, AcDbDatabase* db) { ASSERT(symTblClass != NULL); ASSERT(db != NULL); Acad::ErrorStatus retCode = Acad::eInvalidInput; AcDbSymbolTable* symTbl = openSymbolTable(symTblClass, AcDb::kForRead, db); if (symTbl != NULL) { // get an iterator over this symbol Table AcDbSymbolTableIterator* tblIter; if (symTbl->newIterator(tblIter) == Acad::eOk) { // walk table and just collect all the objIds // of the entries if (symTbl->isKindOf(AcDbLayerTable::desc())) static_cast<AcDbLayerTableIterator*>(tblIter)->setSkipHidden(false); Acad::ErrorStatus es; AcDbObjectId tblRecId; for (; !tblIter->done(); tblIter->step()) { es = tblIter->getRecordId(tblRecId); if (es == Acad::eOk) objIds.append(tblRecId); } delete tblIter; retCode = Acad::eOk; } symTbl->close(); } return retCode; }