Message 1 of 9
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi,
I am working on a macro for 2015+ that will move families based on categories to the appropriate workset. The routine builds but i am unable to get it to run correctly
Code:
public void Shared_LEVELWS() { Document doc = this.ActiveUIDocument.Document; if(doc.IsWorkshared==false) { TaskDialog.Show("Worksets", "Document is not workshared"); } if(doc.IsWorkshared==true) { //Select the shared grid workset IList<Workset> worksetList = new FilteredWorksetCollector(doc).OfKind(WorksetKind.UserWorkset).ToWorksets(); int sharedGridWorksetId=0; foreach (Workset workset in worksetList) { if (workset.Name.Contains("Shared Levels and Grids")) { sharedGridWorksetId = workset.Id.IntegerValue; } } //Reference planes List<Element> elements = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_CLines).ToElements().ToList(); //Grids List<Element> grids = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Grids).ToElements().ToList(); //Scope box List<Element> scopeBoxes = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_VolumeOfInterest).ToElements().ToList(); //Level List<Element> levels = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Levels).ToElements().ToList(); elements.AddRange(grids); elements.AddRange(scopeBoxes); elements.AddRange(levels); if (elements == null) return; using (Transaction tx = new Transaction(doc,"Change Workset")) { tx.Start(); foreach (Element e in elements) { Parameter wsparam =e.get_Parameter(BuiltInParameter.ELEM_PARTITION_PARAM); //set workset to Shared Levels and Grids wsparam.Set(sharedGridWorksetId); } tx.Commit(); } } }
Solved! Go to Solution.