Спасибо Александр, я уже двое суток ищу ошибку в своем арх-приложении. Надеюсь, ошибка в нем, т.к. приложение запускал в 2007 и 2009 акадах, результат одинаков. Я просек, что акад дурит после моего черчения полилинии. Вот код:
AcGePoint2d ptt; // объекты cur, vert - мои собственные
int i = 0;
AcDbPolyline* pPoly =
new AcDbPolyline( unsigned(cur.Size()) );
double bulge = 0.0;
while ( i < cur.Size() ){
vert = cur.GetVertex(i);
ptt.x = vert.GetX() ; ptt.y = vert.GetY();bulge = vert.Bulge;
pPoly->addVertexAt( i, ptt, bulge );
i++;
}
pPoly->setNormal ( Z_vec );
pPoly->setElevation ( Elev );
pPoly->setColorIndex( color );
pPoly->setLayer( LayName);
// Добавление к рисунку полилинии
AcDbObjectId pOutputId;
addToModelSpace( pOutputId, pPoly );
pPoly->close();
а в базу вставляется так:
bool addToModelSpace(AcDbObjectId &objId, AcDbEntity* pEntity)
{ acDocManager->lockDocument(curDoc );
if ((es =
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(this->pBlockTbl, AcDb::kForRead)) != Acad::eOk ){
Autodesk::AutoCAD::ApplicationServices::Application::ShowAlertDialog( _T("\nНе открыть таблицу блоков!"));
acDocManager->unlockDocument(curDoc ); return false; }
this->pBlockTbl->getAt(ACDB_MODEL_SPACE, this->pMS, AcDb::kForWrite);
if (this->pMS == NULL){
Autodesk::AutoCAD::ApplicationServices::Application::ShowAlertDialog( _T("\nНет доступа к блоку *Model_Space. "));
pBlockTbl->close();
acDocManager->unlockDocument(curDoc ); return false; }
if (this->pMS->isWriteEnabled()){
if ((es = pMS->appendAcDbEntity(objId, pEntity)) != Acad::eOk){
Autodesk::AutoCAD::ApplicationServices::Application::ShowAlertDialog( _T("\nОшибка при добавлении объекта в базу... "));
}
}
pMS->close(); pBlockTbl->close();
acDocManager->unlockDocument(curDoc );
return true;
}
Не взглянете свежим взглядом, где тут баг закрался?
Заранее спасибо.