public static void AddOverride(Document doc, View view, ElementId pattern, List <List <string> > category_cols) { using (Transaction tx = new Transaction(doc)) { tx.Start("SetViewtx"); foreach (List <string> category_ovr in category_cols) { try { OverrideCat ov = new OverrideCat(doc, pattern, category_ovr); FilteredElementCollector col = new FilteredElementCollector(doc, view.Id) .WhereElementIsNotElementType() .OfCategory(ov.builtincategory); if (col.Count() > 0) { foreach (Element e in col) { view.SetElementOverrides(e.Id, ov.overrides); } } } catch (Exception) { } } tx.Commit(); } }
public static List <OverrideCat> GetCategoryOverrides( Document doc, DocPatterns patterns, List <List <string> > category_cols) { List <OverrideCat> ovrs = new List <OverrideCat>(); foreach (List <string> category_ovr in category_cols) { OverrideCat ov = new OverrideCat(doc, patterns.Solidfill, category_ovr); } return(ovrs); }
private void test1(Document doc) { var category_colors = FileManager.ReadDefCsv(FileManager.data_location); DocPatterns patterns = new DocPatterns(doc); List <OverrideCat> rcs = new List <OverrideCat>(); //foreach (var cs in category_colors) //{ // OverrideCat cst = new OverrideCat(patterns.Solidfill, cs); // rcs.Add(cst); //} //FilteredElementCollector collec = new FilteredElementCollector(doc, doc.ActiveView.Id); //var collector // = collec.WheToElements() // .Select(x => x.Category) // .Distinct(new CategoryComparer()) // .ToList(); var iter = doc.Settings.Categories; //doc.Settings.Categories.AsQueryable(); // iter.MoveNext(); foreach (Category cat in iter) { try { // iter.C BuiltInCategory curcat = (BuiltInCategory)cat.Id.IntegerValue; //doc.Settings.Categories string ccat = curcat.ToString(); var found = category_colors.Where(x => x.First() == ccat); OverrideCat cst; if (found.Count() > 0) { cst = new OverrideCat(doc, patterns.Solidfill, found.First()); } else { cst = new OverrideCat(patterns.Dotline, curcat); cst.visible = false; } rcs.Add(cst); // iter.MoveNext(); } catch (Exception) { } } var viewsCol = new FilteredElementCollector(doc) .WhereElementIsNotElementType() .OfCategory(BuiltInCategory.OST_Views) .ToElements().Cast <View>().ToList(); var watch = Stopwatch.StartNew(); foreach (var vs in viewsCol) { string ext1 = "---base---"; string ext2 = "---mask---"; string view_export_loc1 = "C:\\data\\t1\\" + Helper.AndHash(vs.Name) + ext1 + vs.Name; string view_export_loc2 = "C:\\data\\t1\\" + Helper.AndHash(vs.Name) + ext2 + vs.Name; Applicator.ExportView(doc, vs, view_export_loc1, ext1); var rvs = Applicator.viewCatOverride(doc, vs, rcs); Applicator.ExportView(doc, rvs, view_export_loc2, ext2); } watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; //uiapp.OpenAndActivateDocument(paths[1]); //doc.Close(false); //var watch2 = Stopwatch.StartNew(); //foreach (var vs in viewsCol) //{ // string ext1 = "---base---"; // string ext2 = "---mask---"; // string view_export_loc1 = "C:\\data\\t2\\" + Helper.AndHash(vs.Name) + ext1 + vs.Name; // string view_export_loc2 = "C:\\data\\t2\\" + Helper.AndHash(vs.Name) + ext2 + vs.Name; // Applicator.ExportView(doc, vs, view_export_loc1, ext1); // Applicator.AddOverride(doc, vs, patterns.Solidfill, category_colors); // Applicator.ExportView(doc, vs, view_export_loc2, ext2); //} //watch2.Stop(); //var elapsedMs2 = watch2.ElapsedMilliseconds; TaskDialog.Show("opt", "base " + elapsedMs.ToString()); }