Тема: Root Dictionary в Civil3d
Здравствуйте все!
Посмотрел содержимое Dictionaries в Civil3D и наткнулся помимо стандартных Autocad'овских на невиданный ранее "Root". В LDD их много, например AEC_SPIRAL_TABLES, и можно посмотреть коллическво вхождений (numEntries). А вот с Root'ом такие фокусы не проходят. Вот код приводящий к fatal error:
AcDbDictionary* pNamedObj; if(Acad::eOk != acdbHostApplicationServices()->workingDatabase() ->getNamedObjectsDictionary(pNamedObj, AcDb::kForRead)) { acutPrintf("\nFail getNamedObjectsDictionary()!!!"); return; } AcDbDictionary* pDict; if(Acad::eOk != pNamedObj->getAt("Root", (AcDbObject*&)pDict, AcDb::kForRead)) { acutPrintf("\nFail pNamedObj->getAt()!!!"); return; } pNamedObj->close(); acutPrintf("\nCall <Root> ->numEntries"); unsigned int i = pDict->numEntries(); acutPrintf("\nnumEntries = %d", i); pDict->close();
Абсолютно невинный код, позволяющий стучаться к любым AcDbDictionary в LDD и в Civil3D кроме "Root". Если у кого-нибудь есть Civil3D помогите разобраться в чём дело.
Спасибо!
P.S. Root созвучно с именет администратора UNIX систем, в которых есть каталог /root в который никто кроме него не имеет прав доступа ... Кто попробует углубиться в Root Dictionary (получить numEntries, например) и знаком хотя бы с Linux поймёт, почему я провёл такую аналогию.