/// <summary> /// Implement this method as an external command for Revit. /// </summary> /// <param name="revit">An object that is passed to the external application /// which contains data related to the command, /// such as the application object and active view.</param> /// <param name="message">A message that can be set by the external application /// which will be displayed if a failure or cancellation is returned by /// the external command.</param> /// <param name="elements">A set of elements to which the external application /// can add elements that are to be highlighted in case of failure or cancellation.</param> /// <returns>Return the status of the external command. /// A result of Succeeded means that the API external method functioned as expected. /// Cancelled can be used to signify that the user cancelled the external operation /// at some point. Failure should be returned if the application is unable to proceed with /// the operation.</returns> public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit, ref String message, Autodesk.Revit.DB.ElementSet elements) { m_revit = revit; UnitType = m_revit.Application.ActiveUIDocument.Document.GetUnits().GetFormatOptions(Autodesk.Revit.DB.UnitType.UT_Length).DisplayUnits; Transaction documentTransaction = new Transaction(revit.Application.ActiveUIDocument.Document, "Document"); documentTransaction.Start(); try { //Get every level by iterating through all elements systemLevelsDatum = new List <LevelsDataSource>(); FilteredElementCollector collector = new FilteredElementCollector(m_revit.Application.ActiveUIDocument.Document); ICollection <Element> collection = collector.OfClass(typeof(Level)).ToElements(); foreach (Element element in collection) { Level systemLevel = element as Level; LevelsDataSource levelsDataSourceRow = new LevelsDataSource(); levelsDataSourceRow.LevelIDValue = systemLevel.Id.IntegerValue; levelsDataSourceRow.Name = systemLevel.Name; Parameter elevationPara = systemLevel.get_Parameter(BuiltInParameter.LEVEL_ELEV); double temValue = Unit.CovertFromAPI(UnitType, elevationPara.AsDouble()); double temValue2 = double.Parse(temValue.ToString("#.0")); levelsDataSourceRow.Elevation = temValue2; systemLevelsDatum.Add(levelsDataSourceRow); } using (LevelsForm displayForm = new LevelsForm(this)) { displayForm.ShowDialog(); } } catch (Exception ex) { message = ex.Message; documentTransaction.RollBack(); return(Autodesk.Revit.UI.Result.Failed); } documentTransaction.Commit(); return(Autodesk.Revit.UI.Result.Succeeded); }
/// <summary> /// Implement this method as an external command for Revit. /// </summary> /// <param name="revit">An object that is passed to the external application /// which contains data related to the command, /// such as the application object and active view.</param> /// <param name="message">A message that can be set by the external application /// which will be displayed if a failure or cancellation is returned by /// the external command.</param> /// <param name="elements">A set of elements to which the external application /// can add elements that are to be highlighted in case of failure or cancellation.</param> /// <returns>Return the status of the external command. /// A result of Succeeded means that the API external method functioned as expected. /// Cancelled can be used to signify that the user cancelled the external operation /// at some point. Failure should be returned if the application is unable to proceed with /// the operation.</returns> public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit, ref String message, Autodesk.Revit.DB.ElementSet elements) { m_revit = revit; UnitType = m_revit.Application.ActiveUIDocument.Document.ProjectUnit.get_FormatOptions(Autodesk.Revit.DB.UnitType.UT_Length).Units; Transaction documentTransaction = new Transaction(revit.Application.ActiveUIDocument.Document, "Document"); documentTransaction.Start(); try { //Get every level by iterating through all elements systemLevelsDatum = new List<LevelsDataSource>(); FilteredElementCollector collector = new FilteredElementCollector(m_revit.Application.ActiveUIDocument.Document); ICollection<Element> collection = collector.OfClass(typeof(Level)).ToElements(); foreach (Element element in collection) { Level systemLevel = element as Level; LevelsDataSource levelsDataSourceRow = new LevelsDataSource(); levelsDataSourceRow.LevelIDValue = systemLevel.Id.IntegerValue; levelsDataSourceRow.Name = systemLevel.Name; Parameter elevationPara = systemLevel.get_Parameter(BuiltInParameter.LEVEL_ELEV); double temValue = Unit.CovertFromAPI(UnitType, elevationPara.AsDouble()); double temValue2 = double.Parse(temValue.ToString("#.0")); levelsDataSourceRow.Elevation = temValue2; systemLevelsDatum.Add(levelsDataSourceRow); } using (LevelsForm displayForm = new LevelsForm(this)) { displayForm.ShowDialog(); } } catch (Exception ex) { message = ex.Message; documentTransaction.RollBack(); return Autodesk.Revit.UI.Result.Failed; } documentTransaction.Commit(); return Autodesk.Revit.UI.Result.Succeeded; }