App.Document doc = cad.DocumentManager.MdiActiveDocument;
Db.Database db = doc.Database;
Ed.Editor ed = doc.Editor;
Ed.PromptPointOptions pPtOpts;
pPtOpts = new Ed.PromptPointOptions("\nSpecify insertion point: ");
var pPtRes = doc.Editor.GetPoint(pPtOpts);
if (pPtRes.Status != Ed.PromptStatus.OK)
return;
var ptStart = pPtRes.Value;
using (Db.Transaction tr = db.TransactionManager.StartTransaction())
{
Db.BlockTable bt = tr.GetObject(db.BlockTableId, Db.OpenMode.ForRead) as Db.BlockTable;
Db.BlockTableRecord model =
tr.GetObject(bt[Db.BlockTableRecord.ModelSpace], Db.OpenMode.ForWrite) as Db.BlockTableRecord;
// Путь к файлу чертежа
string BlockPath;
BlockPath = "C:\\Remark leader R3.dwg";
// Создаем новую базу
using (Db.Database db1 = new Db.Database(false, false))
{
// Получаем базу чертежа-донора
db1.ReadDwgFile(BlockPath, System.IO.FileShare.Read, true, null);
// Получаем ID нового блока
Db.ObjectId BlkId = db.Insert(BlockPath, db1, false);
Db.BlockReference bref = new Db.BlockReference(ptStart, BlkId);
// Дефолтные свойства блока (слой, цвет и пр.)
bref.SetDatabaseDefaults();
// Добавляем блок в модель
model.AppendEntity(bref);
// Добавляем блок в транзакцию
tr.AddNewlyCreatedDBObject(bref, true);
// Расчленяем блок
bref.ExplodeToOwnerSpace();
bref.Erase();
// Закрываем транзакцию
tr.Commit();
}
}