public void cmdImportBlockFromExternalDrawing() { var doc = AcApp.DocumentManager.MdiActiveDocument; var ed = doc.Editor; var db = doc.Database; var dlg = new Microsoft.Win32.OpenFileDialog(); dlg.ShowDialog(); var srcPath = dlg.FileName; var srcDb = new Database(); srcDb.ReadDwgFile(srcPath, FileOpenMode.OpenForReadAndReadShare, false, ""); var ids = new ObjectIdCollection(); using (var tr = srcDb.TransactionManager.StartTransaction()) { var bt = tr.GetObject(srcDb.BlockTableId, OpenMode.ForRead) as BlockTable; foreach (ObjectId id in bt) { var btr = tr.GetObject(id, OpenMode.ForRead) as BlockTableRecord; if (id != SymbolUtilityServices.GetBlockModelSpaceId(db) && //Block must have a Name !SymbolUtilityServices.IsBlockLayoutName(btr.Name)) { ids.Add(id); } } } var idmap = new IdMapping(); db.WblockCloneObjects(ids, db.BlockTableId, idmap, DuplicateRecordCloning.Ignore, false); }
public static List <ObjectId> GetBlockIds(Database db) { using (var tr = db.TransactionManager.StartTransaction()) { var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; var names = bt.Cast <ObjectId>() .Where(i => !SymbolUtilityServices.IsBlockLayoutName((tr.GetObject(i, OpenMode.ForRead) as BlockTableRecord).Name) && i != SymbolUtilityServices.GetBlockModelSpaceId(db)) .ToList() .Select(i => (tr.GetObject(i, OpenMode.ForRead) as BlockTableRecord).Name).ToList(); return(bt.Cast <ObjectId>() .Where(i => !SymbolUtilityServices.IsBlockLayoutName((tr.GetObject(i, OpenMode.ForRead) as BlockTableRecord).Name) && i != SymbolUtilityServices.GetBlockModelSpaceId(db)) .ToList()); } }
public void cmdGetBlocks() { var doc = AcApp.DocumentManager.MdiActiveDocument; var ed = doc.Editor; var db = doc.Database; using (var tr = db.TransactionManager.StartTransaction()) { var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; foreach (ObjectId id in bt) { var btr = tr.GetObject(id, OpenMode.ForRead) as BlockTableRecord; if (id != SymbolUtilityServices.GetBlockModelSpaceId(db) && //Block must have a Name !SymbolUtilityServices.IsBlockLayoutName(btr.Name)) { ed.WriteMessage(string.Format("\nBlock : {0}", btr.Name)); } } } }
public void cmdCreateBlockReferences() { var doc = AcApp.DocumentManager.MdiActiveDocument; var ed = doc.Editor; var db = doc.Database; var blockId = ObjectId.Null; using (var tr = db.TransactionManager.StartTransaction()) { var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; foreach (ObjectId id in bt) { var btr = tr.GetObject(id, OpenMode.ForRead) as BlockTableRecord; if (id != SymbolUtilityServices.GetBlockModelSpaceId(db) && //Block must have a Name !SymbolUtilityServices.IsBlockLayoutName(btr.Name)) { blockId = id; break; } } } using (var tr = db.TransactionManager.StartTransaction()) { var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; var btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; for (int i = 0; i < 5; i++) { var br = new BlockReference(new Point3d(i * 30, 0, 0), blockId); btr.AppendEntity(br); tr.AddNewlyCreatedDBObject(br, true); } tr.Commit(); } }