private async void PlaceInstances() { try { for (int i = 0; i < 10; i++) { var instance = (FamilyInstance)await _revitTask.Run((uiApp) => CreateFamilyInstance( uiApp.ActiveUIDocument.Document, null)); } } catch (Exception e) { TaskDialog.Show("Debug", e.Message); } }
async void Remove() { await _revitTask.Run((uiApp) => RemoveElement( uiApp.ActiveUIDocument)); }
/// <summary> /// Run desired tests. /// </summary> private void Run(RunRequest request, Response response, UIApplication application) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (response == null) { throw new ArgumentNullException(nameof(response)); } string summaryPath = Path.Combine(response.Directory, FileNames.RunSummary); LogInfo(summaryPath, $"Test Request '{request.Id}' - {request.ClientName} ({request.ClientVersion})"); RunResult runResult = new RunResult { Id = request.Id, StartTime = DateTime.Now, State = TestState.Running, Cases = request.Cases.ToArray(), SummaryFile = summaryPath }; RevitTask runnerTask = new RevitTask(); ReflectionRunner runner = new ReflectionRunner(); runnerTask.Run(async uiApplication => { try { runResult.Cases = request.Cases; foreach (TestCase test in request.Cases) { var runTestResult = runResult.Cases.Single(t => t.Id == test.Id); WriteTestResultFile(response.Directory, runResult, false); var testResult = await runner.RunTest(test, application.Application); runTestResult.State = testResult.State; runTestResult.Message = testResult.Message; runTestResult.StackTrace = testResult.StackTrace; LogInfo(summaryPath, $"{test.Id,-8} Test {test.State,-7} - {test.TestClass}.{test.MethodName}"); if (!string.IsNullOrEmpty(test.Message)) { LogInfo(summaryPath, $"\t{test.Message}"); } if (!string.IsNullOrEmpty(test.StackTrace)) { LogInfo(summaryPath, $"\t{test.StackTrace}"); } } } catch (Exception e) { runResult.Output = e.ToString(); LogInfo(summaryPath, e); } WriteTestResultFile(response.Directory, runResult, true); LogInfo(summaryPath, $"Test run end - duration {runResult.Timestamp - runResult.StartTime}"); }); }
public async Task <string[]> HandleAsync(string request) { string[] result; Task <string[]> task; if (request == "FILEDIALOG") { task = _revitTask .Run((app) => { //// var document = app.Document; var dialog = new FileOpenDialog("Revit Files (*.rvt)|*.rvt"); var dialogResult = dialog.Show(); var modelPath = dialog.GetSelectedModelPath(); var path = ModelPathUtils .ConvertModelPathToUserVisiblePath(modelPath); return(new[] { path }); }); } else if (request == "VIEWLIST") { task = _revitTask .Run((uiapp) => { if (uiapp.ActiveUIDocument?.Document == null) { return(new[] { "No opened documents" }); } var document = uiapp.ActiveUIDocument.Document; var plans = new FilteredElementCollector(document) .WhereElementIsNotElementType() .OfClass(typeof(View)) .Select(x => x.Name) .ToArray(); return(plans); }); } else { task = _revitTask .Run(uiapp => { //// TaskDialog.Show("Deb", $"Requested: {request}"); var command = (PostableCommand)Enum.Parse( typeof(PostableCommand), request, true); var id = RevitCommandId .LookupPostableCommandId(command); uiapp.PostCommand(id); return(new[] { $"Successfully posted command {command}" }); }); } try { result = await task; } catch (Exception e) { result = new[] { $"{e.Message} in {e.StackTrace}" }; } return(result); }