/// <summary> /// get selected floor (slab) /// </summary> /// <param name="commandData">object which contains reference of Revit Application.</param> /// <returns>selected floor (slab)</returns> private Floor GetSelectFloor(ExternalCommandData commandData) { SelElementSet eleSet = commandData.Application.ActiveUIDocument.Selection.Elements; if (eleSet.Size != 1) { return(null); } IEnumerator iter = eleSet.GetEnumerator(); iter.Reset(); while (iter.MoveNext()) { return(iter.Current as Floor); } return(null); }
/// <summary> /// found the element which using the GUID /// that was assigned to the shared parameter in the shared parameters file. /// </summary> /// <param name="UniqueIdValue"></param> public void FindElement(string UniqueIdValue) { SelElementSet seleElements = m_revit.ActiveUIDocument.Selection.Elements; // all the elements of current document IEnumerator i = seleElements.GetEnumerator(); // if the selections include beams and slabs, // find out the element using the select value for display i.Reset(); bool moreElements = i.MoveNext(); while (moreElements) { // Get beams and slabs from selections Element component = i.Current as Autodesk.Revit.DB.Element; if (null == component) { moreElements = i.MoveNext(); continue; } if (null == component.Category) { moreElements = i.MoveNext(); continue; } if (("Structural Framing" != component.Category.Name) && ("Floors" != component.Category.Name)) { moreElements = i.MoveNext(); continue; } // Get "Unique ID" parameter ParameterSet attributes = component.Parameters; foreach (object o in attributes) { Parameter attribute = o as Parameter; if ("Unique ID" == attribute.Definition.Name) { if (null == attribute.AsString()) { break; } // compare if the parameter's value is the same as the selected value. // Clear the SelElementSet and add the found element into it. // So this element will highlight in Revit UI if (UniqueIdValue == attribute.AsString()) { seleElements.Clear(); seleElements.Add(component); return; } break; } } moreElements = i.MoveNext(); } }