/// <summary> /// Program entry point /// </summary> /// <param name="commandData"></param> /// <param name="message"></param> /// <param name="elements"></param> /// <returns>Result</returns> public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { try { UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Autodesk.Revit.ApplicationServices.Application app = uiapp.Application; Document doc = uidoc.Document; // Determine elements to export FilteredElementCollector collector = null; // Access current selection SelElementSet set = uidoc.Selection.Elements; int n = set.Size; if (0 < n) { // If any elements were preselected, export those ICollection <ElementId> ids = set .Cast <Element>() .Select <Element, ElementId>(e => e.Id) .ToArray <ElementId>(); collector = new FilteredElementCollector(doc, ids); } else { // If nothing was preselected, export everything collector = new FilteredElementCollector(doc); } collector.WhereElementIsNotElementType() .WhereElementIsViewIndependent(); if (null == _exportFolderName) { _exportFolderName = Path.GetTempPath(); } string filename = null; if (!FileSelect(_exportFolderName, out filename)) { return(Result.Cancelled); } _exportFolderName = Path.GetDirectoryName(filename); Command exporter = new Command(); Options opt = app.Create.NewGeometryOptions(); ExportElements(exporter, collector, opt); exporter.ExportTo(filename); return(Result.Succeeded); } catch (Exception ex) { message = ex.Message; return(Result.Failed); } }