Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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());
            }
        }
Esempio n. 3
0
        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));
                    }
                }
            }
        }
Esempio n. 4
0
        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();
            }
        }