public void CreatingABlock()
{
Database acCurDb;
acCurDb = Application.DocumentManager.MdiActiveDocument.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
BlockTable acBlkTbl;
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
if (!acBlkTbl.Has("CircleBlock"))
{
using (BlockTableRecord acBlkTblRec = new BlockTableRecord())
{
acBlkTblRec.Name = "CircleBlock";
acBlkTblRec.Origin = new Point3d(0, 0, 0);
using (Circle acCirc = new Circle())
{
acCirc.Center = new Point3d(0, 0, 0);
acCirc.Radius = 100;
acBlkTblRec.AppendEntity(acCirc);
acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForWrite);
acBlkTbl.Add(acBlkTblRec);
acTrans.AddNewlyCreatedDBObject(acBlkTblRec, true);
}
}
}
else
{
using (BlockTableRecord acBlkTblRec1 = new BlockTableRecord())
{
acBlkTblRec1.Name = "CircleBlock1";
acBlkTblRec1.Origin = new Point3d(100, 0, 0);
BlockTableRecord block = (BlockTableRecord)acTrans.GetObject(acBlkTbl["CircleBlock"], OpenMode.ForRead);
ObjectIdCollection ids = block.GetBlockReferenceIds(true, true);
// поскольку в коллекции д.б. всего одна запись
BlockReference br =(BlockReference)acTrans.GetObject(ids[0], OpenMode.ForRead);
acBlkTblRec1.AppendEntity(br); // ЗДесь все сломалось...
acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForWrite);
acBlkTbl.Add(acBlkTblRec1);
acTrans.AddNewlyCreatedDBObject(acBlkTblRec1, true);
}
}
acTrans.Commit();
}
}