/// <summary> /// Static method o select valid input element for the structural connection. /// </summary> /// <param name="document"> Current document. </param> /// <returns>Returns a list of element ids.</returns> public static List <ElementId> SelectConnectionElements(UIDocument document) { List <ElementId> elemIds = new List <ElementId>(); // Create a filter for the allowed structural connection inputs. LogicalOrFilter connElemTypes = new LogicalOrFilter(new List <ElementFilter> { new ElementCategoryFilter(BuiltInCategory.OST_StructuralFraming), new ElementCategoryFilter(BuiltInCategory.OST_StructuralColumns), new ElementCategoryFilter(BuiltInCategory.OST_StructuralFoundation), new ElementCategoryFilter(BuiltInCategory.OST_Floors), new ElementCategoryFilter(BuiltInCategory.OST_Walls) }); StructuralConnectionSelectionFilter elemFilter = new StructuralConnectionSelectionFilter(connElemTypes); List <Reference> refs = document.Selection.PickObjects(ObjectType.Element, elemFilter, "Select elements to add to connection :").ToList(); elemIds = refs.Select(e => e.ElementId).ToList(); return(elemIds); }
/// <summary> /// Static method to select structural connections. /// </summary> /// <returns>Returns the id of the connection.</returns> public static StructuralConnectionHandler SelectConnection(UIDocument document) { StructuralConnectionHandler conn = null; // Create a filter for structural connections. LogicalOrFilter types = new LogicalOrFilter(new List <ElementFilter> { new ElementCategoryFilter(BuiltInCategory.OST_StructConnections) }); StructuralConnectionSelectionFilter filter = new StructuralConnectionSelectionFilter(types); Reference target = document.Selection.PickObject(ObjectType.Element, filter, "Select connection element :"); if (target != null) { Element targetElement = document.Document.GetElement(target); if (targetElement != null) { conn = targetElement as StructuralConnectionHandler; } } return(conn); }