using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
namespace pavpp
{
public class pavpp
{
[CommandMethod("PAVPP")]
public void Run()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
ObjectIdCollection ids = new ObjectIdCollection();
using (Transaction tr = db.TransactionManager.StartTransaction())
{
//создаем временную базу
Database newDB = new Database(false, false);
string pth = @"D:\.....\1.dwg";
newDB.ReadDwgFile(pth, System.IO.FileShare.Read, false, string.Empty);
BlockTable bt = tr.GetObject(newDB.BlockTableId, OpenMode.ForRead) as BlockTable;
//копируем определение динамического блока в активный файл
ids.Add(bt["Names"]);
IdMapping iMap = new IdMapping();
db.WblockCloneObjects(ids, db.BlockTableId, iMap, DuplicateRecordCloning.Ignore, false);
//вставляем блок в активный файл
ObjectId psid = db.CurrentSpaceId;
BlockTableRecord ms = tr.GetObject(psid, OpenMode.ForWrite) as BlockTableRecord;
BlockTable bt0 = tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
BlockReference br = new BlockReference(Point3d.Origin, bt0["Names"]);
// blRefTest.SetDatabaseDefaults();
ms.AppendEntity(br);
tr.AddNewlyCreatedDBObject(br, true);
//ed.Regen();
//ed.UpdateScreen();
//br.RecordGraphicsModified(true);
//переключаем свойство динблока
Number(br);
//включаем внешние ссылки блока
db.ResolveXrefs(true, false);
tr.Commit();
}
}
private void Number(BlockReference bref)
{
foreach (DynamicBlockReferenceProperty num in bref.DynamicBlockReferencePropertyCollection)
{
if (num.PropertyName == "Test")
{
num.Value = "222";
return;
}
}
}
}
}