private static FilteredElementCollector WorksetElements(Document doc, Workset workset) { FilteredElementCollector elementCollector = new FilteredElementCollector(doc).OfClass(typeof(Family)); ElementWorksetFilter elementWorksetFilter = new ElementWorksetFilter(workset.Id, false); return(elementCollector.WherePasses(elementWorksetFilter)); }
public static List <string> GetEmptyWorksets(Document doc) { List <string> wnames = new List <string>(); if (!doc.IsWorkshared) { return(null); } List <Workset> wids = new FilteredWorksetCollector(doc) .OfKind(WorksetKind.UserWorkset) .ToWorksets() .ToList(); foreach (Workset w in wids) { ElementWorksetFilter wfilter = new ElementWorksetFilter(w.Id); FilteredElementCollector col = new FilteredElementCollector(doc).WherePasses(wfilter); if (col.GetElementCount() == 0) { wnames.Add(w.Name); } } return(wnames); }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { Application app = commandData.Application.Application; UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; if (!doc.IsWorkshared) return Result.Failed; List<WorksetId> worksetIds = uidoc.Selection.GetElementIds().Select(id => doc.GetElement(id)).Select(e => e.WorksetId).Distinct().ToList(); ICollection<ElementId> elementIdsWithSameWorkset = new List<ElementId>(); foreach (var worksetsId in worksetIds) { ElementWorksetFilter elementWorksetFilter = new ElementWorksetFilter(worksetsId); var ids = new FilteredElementCollector(doc, doc.ActiveView.Id).WherePasses(elementWorksetFilter).ToElementIds(); foreach (var id in ids) { elementIdsWithSameWorkset.Add(id); } } if (elementIdsWithSameWorkset.Any()) { uidoc.Selection.SetElementIds(elementIdsWithSameWorkset); return Result.Succeeded; } else { return Result.Succeeded; } }
/// <inheritdoc/> internal override int Execute(string args) { var worksetList = new FilteredWorksetCollector(_doc) .OfKind(WorksetKind.UserWorkset) .ToDictionary(wSet => wSet.Name, wSet => wSet.Id); ElementFilter elementWorksetFilter = new ElementWorksetFilter(worksetList[args]); var elementsOnWorkset = new FilteredElementCollector(_doc).WherePasses(elementWorksetFilter).ToElements(); return(HelperMethods.RemoveElements(Name, _doc, elementsOnWorkset)); }
/// <summary> /// Publishes Workset Item Count data when Document is closed. /// </summary> /// <param name="doc">Revit Document.</param> /// <param name="filePath">Revit Document central file path.</param> public void PublishData(Document doc, string filePath) { try { var worksets = new FilteredWorksetCollector(doc) .OfKind(WorksetKind.UserWorkset) .ToWorksets(); var worksetInfo = new List <WorksetItem>(); foreach (var w in worksets) { // (Konrad) It turns out that for some reason Linked worksets // contain things like CopyMonitor options and Sketch Planes. var worksetFilter = new ElementWorksetFilter(w.Id, false); var planeFilter = new ElementClassFilter(typeof(SketchPlane), true); var filter = new LogicalAndFilter(worksetFilter, planeFilter); var count = new FilteredElementCollector(doc) .WherePasses(filter) .WhereElementIsNotElementType() .GetElementCount(); worksetInfo.Add(new WorksetItem { Name = w.Name, Count = count }); } var wItemData = new WorksetItemData { CentralPath = filePath.ToLower(), User = Environment.UserName.ToLower(), Worksets = worksetInfo }; if (!ServerUtilities.Post(wItemData, "worksets/itemcount", out WorksetItemData unused)) { Log.AppendLog(LogMessageType.ERROR, "Failed to publish Worksets Data."); } } catch (Exception ex) { Log.AppendLog(LogMessageType.EXCEPTION, ex.Message); } }