Не могу понять в чем дело. Что я не так делаю?
База в шаблоне без ошибок в файле источника,
где хранятся вставки блоков тоже ошибок нет
Вот код функции, которая:
1) открывает базу файла шаблона
2) вставляет в него примитивы,
которые я вынимаю методом BlockREference.Explode(...)
3) Сохраняет в файле по имени dest_dwg_FileName
public static void add_ents_to_file(ref List<CAD_DBS.Entity> Ents,
string Template_dwg_FileName,
string dest_dwg_FileName)
{
CAD_DBS.Database db = new CAD_DBS.Database(false, true);
if (db == null)
return;
db.ReadDwgFile(Template_dwg_FileName, System.IO.FileShare.ReadWrite, false, null);
using (CAD_DBS.Transaction tr = db.TransactionManager.StartTransaction())
{
CAD_DBS.BlockTable bt = (CAD_DBS.BlockTable)tr.GetObject(db.BlockTableId, CAD_DBS.OpenMode.ForWrite);
CAD_DBS.BlockTableRecord btr =
(CAD_DBS.BlockTableRecord)tr.GetObject(bt[CAD_DBS.BlockTableRecord.ModelSpace], CAD_DBS.OpenMode.ForWrite);
foreach (CAD_DBS.Entity e in Ents)
{
if (e is CAD_DBS.BlockReference)
{
CAD_DBS.DBObjectCollection coll = new CAD_DBS.DBObjectCollection();
(e as CAD_DBS.BlockReference).Explode(coll);
foreach (CAD_DBS.DBObject dbo in coll)
{
if (dbo is CAD_DBS.Entity)
{
CAD_DBS.Entity ent = dbo as CAD_DBS.Entity;
btr.AppendEntity(ent); // Ошибка вот тут eWrongDataBase
tr.AddNewlyCreatedDBObject(ent, true);
}
}
}
}
tr.Commit();
}
db.CloseInput(true);
db.SaveAs(dest_dwg_FileName, DwgVersion.Current);
db.Dispose();
}