예제 #1
0
 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);
     }
 }
예제 #2
0
 async void Remove()
 {
     await _revitTask.Run((uiApp) =>
                          RemoveElement(
                              uiApp.ActiveUIDocument));
 }
예제 #3
0
        /// <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}");
            });
        }
예제 #4
0
        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);
        }