> Сергей
И все-таки я не поленился и проверил в AutoCAD 2004-2006 следующий код, когда к только что созданному примитиву, еще не добавленному в базу, добавляются расширенные данные. И он работает. Так что или в вашем коде ошибка, или что-то более сложное...
static void CreateEntityWithXdata(void)
{
AcDbDatabase *pDb = acdbCurDwg();
Acad::ErrorStatus es;
char *MyApplication = "MyApplication";
AcDbBlockTable *pBlockTable;
if ((es = pDb->getSymbolTable(pBlockTable, AcDb::kForRead)) == Acad::eOk) {
AcDbBlockTableRecord *pBlockTableRecord;
if ((es = pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite)) == Acad::eOk) {
pBlockTable->close();
AcDbLine *pLine = new AcDbLine(AcGePoint3d(0,0,0),AcGePoint3d(100,100,0));
pLine->setDatabaseDefaults(pDb);
acdbRegApp(MyApplication);
resbuf *rb = acutBuildList(1001,MyApplication,1000,"Line1",1000,"Line2",RTNONE);
es = pLine->setXData(rb); acutRelRb(rb);
if (es != Acad::eOk) {
acutPrintf("\nОшибка присвоения XDATA: %s",acadErrorStatusText(es));
}
AcDbObjectId eid;
if ((es = pBlockTableRecord->appendAcDbEntity(eid,pLine)) != Acad::eOk) {
acutPrintf("\nОшибка добавления в MODEL_SPACE: %s",acadErrorStatusText(es));
}
pBlockTableRecord->close();
pLine->close();
} else {
pBlockTableRecord->close();
}
}
}