Тема: Как удалить extension dictionary ?
Создал одному объекту словарь, добавил туда много записей, теперь не могу понять как можно удалить этот словарь. Был бы очень признателен, если кто-нибудь ответил бы.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Как удалить extension dictionary ?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Создал одному объекту словарь, добавил туда много записей, теперь не могу понять как можно удалить этот словарь. Был бы очень признателен, если кто-нибудь ответил бы.
AcDbObject::releaseExtensionDictionary() - это?
Да, но к сожалению не удаляет непустые словари, а когда в словаре много записей, довольно сложно удалять все. Я думал есть методы, позволяющие удалить непустой словарь.
> Костя
Можно конечно сделать AcDbDictonary::erase(), а затем AcDbObject::releaseExtensionDictionary(), но это не вполне корректно. Так будет лучше:
static void DelExtDict(void) { Acad::ErrorStatus es; ads_name en; ads_point p; if (acedEntSel(_T("\nУкажите примитив для удаления Extension Dictionary: "),en,p) != RTNORM) return; AcDbObjectId eId; acdbGetObjectId(eId,en); AcDbEntityPointer pEnt(eId,AcDb::kForWrite); if ((es = pEnt.openStatus()) != Acad::eOk) { acutPrintf(_T("\npEnt.openStatus()=%s"),acadErrorStatusText(es)); return; } AcDbObjectId eExtId = pEnt->extensionDictionary(); if (eExtId.isNull()) return; { AcDbDictionaryPointer pExtDict(eExtId,AcDb::kForWrite); if ((es = pExtDict.openStatus()) != Acad::eOk) { acutPrintf(_T("\npExtDict.openStatus()=%s"),acadErrorStatusText(es)); return; } AcDbDictionaryIterator *pIter = pExtDict->newIterator(); if (!pIter) return; for (;!pIter->done(); pIter->next()) { if ((es = pExtDict->remove(pIter->name())) != Acad::eOk) { acutPrintf(_T("\npEnt->pExtDict->remove(pIter->name())=%s"),acadErrorStatusText(es)); } } delete pIter; } if ((es = pEnt->releaseExtensionDictionary()) != Acad::eOk) { acutPrintf(_T("\npEnt->releaseExtensionDictionary()=%s"),acadErrorStatusText(es)); return; } }
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → Как удалить extension dictionary ?
Форум работает на PunBB, при поддержке Informer Technologies, Inc