Необходимо изменить последовательность элементов в группе и добавить новые объекты
Как правильно изменить группу?
Группа корректно создается, изменяется имя и описание группы. В группе делается реверс последовательности элементов.
Но возникнет ошибка при - изменении последовательности элементов группы (transfer) и добавление новых элементов в группу
(append, prepend, insertAt)Пример кода ниже
Если заменить строку
Res=pGroup->append(entId);функциями prepend, insertAt - результат одинаковый
При выполнении функция возвращает код ошибки -
83 - eWasOpenForWriteПри использовании функции transfer перемещаемый объект просто пропадает из группы, а не перемещается.
Как правильно сделать эти операции?
//Добавить объект в конец группы
int appendObjectGroup(LPCTSTR NameGroup, AcDbObjectId entId)
{
int Res;
AcDbDictionary *pGroupDict=NULL;
acdbHostApplicationServices()->workingDatabase()
->getGroupDictionary(pGroupDict, AcDb::kForWrite); //получить адрес словаря
if (pGroupDict->has(NameGroup) == TRUE) {//Если группа с таким именем существует -добавить в нее примитив
AcDbGroup *pGroup;
AcDbObjectId groupId;
pGroupDict->getAt(NameGroup, groupId); //получить индентификатор группы по ее имени
acdbOpenObject(pGroup, groupId, AcDb::kForWrite); //открыть группу для записи
Res=pGroup->append(entId); //добавить новый объект в конец группы
if (Res != Acad::eOk) {
acutPrintf(_T("\n\n*** pGroup->append Error=%i \n\n"), Res);
}
pGroupDict->close();
pGroup->close();
Res=0;
}
else {//словаря с таким именем не найдено
Res=pGroupDict->close();
Res=1;
}
return Res;
}