void RefreshList() { var selectedItems = ListItems.Where(x => x.Selected).Select(x => x.Expression).ToList(); ListItems.Clear(); if (Revit.ActiveDBDocument is DB.Document doc) { using (var collector = new DB.FilteredElementCollector(doc)) { foreach (var family in collector.OfClass(typeof(DB.Family)).Cast <DB.Family>().OrderBy((x) => $"{x.FamilyCategory.Name} : {x.Name}")) { var referenceId = FullUniqueId.Format(doc.GetFingerprintGUID(), family.UniqueId); var item = new GH_ValueListItem($"{family.FamilyCategory.Name} : {family.Name}", $"\"{ referenceId }\""); item.Selected = selectedItems.Contains(item.Expression); ListItems.Add(item); } } } }
void RefreshList() { var selectedItems = ListItems.Where(x => x.Selected).Select(x => x.Expression).ToList(); ListItems.Clear(); if (Revit.ActiveDBDocument is DB.Document doc) { using (var collector = new DB.FilteredElementCollector(doc)) { foreach (var level in collector.OfClass(typeof(DB.Level)).Cast <DB.Level>().OrderByDescending(x => x.GetHeight())) { var referenceId = FullUniqueId.Format(doc.GetFingerprintGUID(), level.UniqueId); var item = new GH_ValueListItem(level.Name, $"\"{ referenceId }\""); item.Selected = selectedItems.Contains(item.Expression); ListItems.Add(item); } } } }
public override bool CastFrom(object source) { if (source is IGH_Goo goo) { if (source is IGH_Element element) { var document = element.Document; var id = element.Id; if (id == DB.ElementId.InvalidElementId) { SetValue(document, id); return(true); } else { source = document?.GetElement(id); } } else { source = goo.ScriptVariable(); } } if (source is string uniqueid) { if (FullUniqueId.TryParse(uniqueid, out var documentId, out var uniqueId)) { if (Revit.ActiveUIApplication.TryGetDocument(documentId, out var doc)) { try { source = doc.GetElement(uniqueId); } catch { } } } } return(SetValue(source as DB.Element)); }
protected override void RefreshList(IEnumerable <IGH_Goo> goos) { var selectedItems = ListItems.Where(x => x.Selected).Select(x => x.Expression).ToList(); ListItems.Clear(); if (Revit.ActiveDBDocument is DB.Document doc) { int selectedItemsCount = 0; using (var collector = new DB.FilteredElementCollector(doc)) using (var elementTypeCollector = collector.WhereElementIsElementType()) { foreach (var goo in goos) { var e = new Types.Element(); if (e.CastFrom(goo)) { switch (e.Value) { case DB.Family family: foreach (var elementType in elementTypeCollector.Cast <DB.ElementType>()) { if (elementType.GetFamilyName() != family.Name) { continue; } var referenceId = FullUniqueId.Format(doc.GetFingerprintGUID(), elementType.UniqueId); var item = new GH_ValueListItem($"{elementType.GetFamilyName()} : {elementType.Name}", $"\"{referenceId}\""); item.Selected = selectedItems.Contains(item.Expression); ListItems.Add(item); selectedItemsCount += item.Selected ? 1 : 0; } break; case DB.ElementType elementType: { var referenceId = FullUniqueId.Format(doc.GetFingerprintGUID(), elementType.UniqueId); var item = new GH_ValueListItem(elementType.GetFamilyName() + " : " + elementType.Name, $"\"{referenceId}\""); item.Selected = selectedItems.Contains(item.Expression); ListItems.Add(item); selectedItemsCount += item.Selected ? 1 : 0; } break; case DB.Element element: { var type = doc.GetElement(element.GetTypeId()) as DB.ElementType; var referenceId = FullUniqueId.Format(doc.GetFingerprintGUID(), type.UniqueId); var item = new GH_ValueListItem(type.GetFamilyName() + " : " + type.Name, $"\"{referenceId}\""); item.Selected = selectedItems.Contains(item.Expression); ListItems.Add(item); selectedItemsCount += item.Selected ? 1 : 0; } break; } } else { var c = new Types.Category(); if (c.CastFrom(goo)) { foreach (var elementType in elementTypeCollector.WhereCategoryIdEqualsTo(c.Id).Cast <DB.ElementType>()) { var referenceId = FullUniqueId.Format(doc.GetFingerprintGUID(), elementType.UniqueId); var item = new GH_ValueListItem(elementType.GetFamilyName() + " : " + elementType.Name, $"\"{referenceId}\""); item.Selected = selectedItems.Contains(item.Expression); ListItems.Add(item); selectedItemsCount += item.Selected ? 1 : 0; } } else { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Unable to convert some input data."); } } } } // If no selection and we are not in CheckList mode try to select default model types if (ListItems.Count > 0 && selectedItemsCount == 0 && ListMode != GH_ValueListMode.CheckList) { var defaultElementTypeIds = new HashSet <string>(); foreach (var typeGroup in Enum.GetValues(typeof(DB.ElementTypeGroup)).Cast <DB.ElementTypeGroup>()) { var elementTypeId = doc.GetDefaultElementTypeId(typeGroup); if (elementTypeId != DB.ElementId.InvalidElementId) { var type = doc.GetElement(elementTypeId); var referenceId = FullUniqueId.Format(doc.GetFingerprintGUID(), type.UniqueId); defaultElementTypeIds.Add(elementTypeId.IntegerValue.ToString()); } } foreach (var item in ListItems) { item.Selected = defaultElementTypeIds.Contains(item.Expression); } } } }
protected override void RefreshList(string familyName) { var selectedItems = ListItems.Where(x => x.Selected).Select(x => x.Expression).ToList(); ListItems.Clear(); if (familyName.Length == 0 || familyName[0] == '\'') { return; } if (Revit.ActiveDBDocument is DB.Document doc) { int selectedItemsCount = 0; using (var collector = new DB.FilteredElementCollector(doc)) { var elementCollector = collector.WhereElementIsElementType(); if (Components.ElementCollectorComponent.TryGetFilterStringParam(DB.BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM, ref familyName, out var familyNameFilter)) { elementCollector = elementCollector.WherePasses(familyNameFilter); } var elementTypes = elementCollector.Cast <DB.ElementType>(); foreach (var elementType in elementTypes) { if (familyName is object) { if (!elementType.GetFamilyName().IsSymbolNameLike(familyName)) { continue; } } if (SourceCount == 0) { // If is a no pattern match update NickName case if (string.Equals(elementType.GetFamilyName(), familyName, StringComparison.OrdinalIgnoreCase)) { familyName = elementType.GetFamilyName(); } } var referenceId = FullUniqueId.Format(doc.GetFingerprintGUID(), elementType.UniqueId); var item = new GH_ValueListItem($"{elementType.GetFamilyName()} : {elementType.Name}", $"\"{referenceId}\""); item.Selected = selectedItems.Contains(item.Expression); ListItems.Add(item); selectedItemsCount += item.Selected ? 1 : 0; } } // If no selection and we are not in CheckList mode try to select default model types if (ListItems.Count == 0) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, string.Format("No ElementType found using pattern \"{0}\"", familyName)); } else if (selectedItemsCount == 0 && ListMode != GH_ValueListMode.CheckList) { var defaultElementTypeIds = new HashSet <string>(); foreach (var typeGroup in Enum.GetValues(typeof(DB.ElementTypeGroup)).Cast <DB.ElementTypeGroup>()) { var elementTypeId = Revit.ActiveDBDocument.GetDefaultElementTypeId(typeGroup); if (elementTypeId != DB.ElementId.InvalidElementId) { defaultElementTypeIds.Add(elementTypeId.IntegerValue.ToString()); } } foreach (var item in ListItems) { item.Selected = defaultElementTypeIds.Contains(item.Expression); } } } }