Здравствуйте. Возникла такая проблема при работе со спецификацией.
Например, был создан объект спецификации в разделе "Детали" (sectionNum=20). Требуется изменить раздел на "Стандартные изделия" (sectionNum=25).
У меня получаются 2 варианта (оба не устраивают):
-1) Старая строка в спецификации изменяется, но при этом не меняется раздел (если sectionNum=0).
-2) Создаётся новый объект спецификации в нужном разделе, но старая строка остаётся (если sectionNum=25).
//Код сильно упростил.
int sectionNum=0; // Номер раздела в спецификации (0 - поиск по всем разделам, либо 25 - поиск в "Стандартных изделиях")
refSpcObj = pSpcDoc->ksGetSpcObjForGeomWithLimit( "graphic.lyt", 1, refGeom, 0, 1, sectionNum, 0 ); //Ищем дескриптор существующего объекта спецификации.
if ( refSpcObj != 0 ) pSpcDoc->ksSpcObjectEdit( refSpcObj ); //Если нашли, переходим к редактированию найденного объекта (и получаем см. п.1).
else pSpcDoc->ksSpcObjectCreate( "graphic.lyt", 1, sectionNum, 0, typeNum, 0 ); //Если не нашли, создаём новый объект (и получаем см. п.2).
.
.
.
Подскажите, как изменить и название раздела? Или как удалить существующий объект (найденную старую строку) спецификации?
И возможно ли это в принципе?
Для удаления подойдет функция DeleteObj.
Например, получили указатель на строку с помощью функции ksGetSpcObjForGeom, и затем в DeleteObj подаем полученный указатель
Вам, Taro, огромное спасибо за идею! :) Так действительно очень неплохо получается.
А меня переклинило что-то: решил, что функция DeleteObj работает только с графическими объектами; а использовать её для спецификации не смекнул.
Ещё раз спасибо!