Тема: Изменение цвета примитивов
Всем доброго времени суток! Написал процедуру по изменению цвета примитивов в блоке, но чет не совсем понимаю, с одними чертежами работает на ура, а снекоторыми не совсем. Вот с которыми не совсем, просто стопориться в блоке и не даёт удалить слой на котором находиться блок, но работу продолжает.
Использовал интеллектуальные указатели подскажите че не так, буду очень благодарен. Вот код:
void changeBlockColor() { AcAxDocLock lock(acdbHostApplicationServices()->workingDatabase(), AcAxDocLock::kNormal); if ((lock.lockStatus() != Acad::eOk) | (lock.lockStatus() != Acad::eNoDatabase)) { AcDbBlockTable *pBlkTbl; acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlkTbl, AcDb::kForRead); AcDbBlockTableIterator *itr; if (pBlkTbl->newIterator(itr) == Acad::eOk) { for (itr->start(); !itr->done(); itr->step()) { AcDbBlockTableRecord *pRecord; if (itr->getRecord(pRecord, AcDb::kForRead) == Acad::eOk) { char *pName; pRecord->getName(pName); AcDbBlockTableRecordIterator * pIter; pRecord->newIterator(pIter); for (pIter->start(); !pIter->done(); pIter->step()) { AcDbObjectId pObj; pIter->getEntityId(pObj); ads_name ent; acdbGetObjectId(pObj, ent); AcDbObjectPointer<AcDbEntity> pEntity(pObj, AcDb::kForWrite); if (pEntity.openStatus() == Acad::eOk) { if (checkEntity(pEntity->layer()) == true) { if (pEntity->isKindOf(AcDbLine::desc())) { if (pEntity->layer() == CString("0")) { int colorIndex = pEntity->colorIndex(); AcCmColor color = pEntity->color(); if (color.isByLayer()) { AcCmColor col; col.setColorMethod(AcCmEntityColor::kByBlock); pEntity->setColor(col); } } } else if (pEntity->isKindOf(AcDbPolyline::desc())) { if (pEntity->layer() == CString("0")) { int colorIndex = pEntity->colorIndex(); AcCmColor color = pEntity->color(); if (color.isByLayer()) { AcCmColor col; col.setColorMethod(AcCmEntityColor::kByBlock); pEntity->setColor(col); } } } else pEntity->setColor(getLayerColor(CString(pEntity->layer()))); } } } delete pIter; pRecord->close(); } } } delete itr; pBlkTbl->close(); } }