public static List <IVisualBlock> LoadVisuals(string file, Func <string, string> filter) { var visualBlocks = new List <IVisualBlock>(); using var dbTemp = new Database(false, true); dbTemp.ReadDwgFile(file, FileOpenMode.OpenForReadAndReadShare, true, string.Empty); using (var t = dbTemp.TransactionManager.StartTransaction()) { var bt = (BlockTable)dbTemp.BlockTableId.GetObject(OpenMode.ForRead); foreach (var idBtr in bt) { var btr = (BlockTableRecord)idBtr.GetObject(OpenMode.ForRead); var group = filter(btr.Name); if (@group != null) { var visualBl = new VisualBlock(btr) { File = file, Group = @group }; visualBlocks.Add(visualBl); } } t.Commit(); } var alpha = NetLib.Comparers.AlphanumComparator.New; visualBlocks.Sort((v1, v2) => alpha.Compare(v1.Name, v2.Name)); return(visualBlocks); }
public static List<IVisualBlock> LoadVisuals(string file, Predicate<string> filter) { var visualBlocks = new List<IVisualBlock>(); using (var dbTemp = new Database(false, true)) { dbTemp.ReadDwgFile(file, FileOpenMode.OpenForReadAndReadShare, true, ""); using (var t = dbTemp.TransactionManager.StartTransaction()) { var bt = dbTemp.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable; foreach (var idBtr in bt) { var btr = idBtr.GetObject(OpenMode.ForRead) as BlockTableRecord; if (filter(btr.Name)) { var visualBl = new VisualBlock(btr); visualBl.File = file; visualBlocks.Add(visualBl); } } t.Commit(); } var alpha = Comparers.AlphanumComparator.New; visualBlocks.Sort((v1, v2) => alpha.Compare(v1.Name, v2.Name)); } return visualBlocks; }