Hi,
I am working on a macro for 2015+ that will move families to the appropriate workset. The routine builds but i am unable to get it to build.
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();
}
}
}
Any help would be greatly appreciated.