Надстройка Revit при запуске

Я пытаюсь реализовать Revit ADDIN, который завершает процесс при запуске. В настоящее время я пытаюсь загрузить файл Revit сразу после запуска Revit, я просто хочу понять, как создать надстройку, которая завершается при запуске.

Программа запускается нормально, без каких-либо проблем с соединением между файлами, но ничего не происходит... файл не загружается автоматически, но ошибок нет?

Я не уверен, где я ошибаюсь, насколько мне известно, это автоматически запускает мой файл Revit? *Игнорировать несвязанное имя, присвоенное программе

Class1.cs

using System;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Events;
using Autodesk.Revit.UI;
using System.Reflection;


namespace AreaChecker
{
        class Class1 : IExternalApplication
    {

        const string _test_project_filepath
                = "c:/Users/Test/Desktop/Forge/models/123.rvt";

        public Result OnStartup(UIControlledApplication a)
        {
            a.ControlledApplication.ApplicationInitialized
              += OnApplicationInitialized;

            return Result.Succeeded;
        }

        void OnApplicationInitialized(
          object sender,
          ApplicationInitializedEventArgs e)
        {
            // Sender is an Application instance:

            Application app = sender as Application;

            // However, UIApplication can be 
            // instantiated from Application.

            UIApplication uiapp = new UIApplication(app);

            uiapp.OpenAndActivateDocument(
              _test_project_filepath);
        }

        public Result OnShutdown(UIControlledApplication a)
        {
            return Result.Succeeded;
        }
    }
}

AreaChecker.ADDIN

?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
        <AddIn Type="Application">
        <Name>AreaChecker</Name>
                <Assembly>C:\Users\Test\source\repos\AreaChecker\AreaChecker\bin\Debug\AreaChecker.dll</Assembly>
                <AddInId>d48038f8-ba7c-4894-818d-3f8bef5f802d</AddInId>
                <FullClassName>AreaChecker.Class1</FullClassName>
                <Text>AreaChecker.Class1</Text> 
                <VendorId>NAME</VendorId>
                <VendorDescription>Your Company Information</VendorDescription> 
        </AddIn>
</RevitAddIns>

Примечание. Я довольно хорошо знаком с командными надстройками Revit, а не с приложениями, поэтому я понимаю связь между классом и файлами надстроек через dll


person D Jones    schedule 27.09.2018    source источник
comment
Не уверен, но не могли бы вы сделать свой класс общедоступным? например: открытый класс Class1: IExternalApplication {...   -  person alital    schedule 28.09.2018


Ответы (1)


Я не вижу никакой очевидной проблемы с кодом, который вы разместили.

Однако вместо того, чтобы пытаться найти ошибку, я предпочитаю указать вам на правильное и проверенное решение, которое я опубликовал только вчера, демонстрируя, как автоматический запуск надстройки для Forge Design Automation.

Он использует внешнее приложение БД вместо внешнего (UI) приложения, как у вас, но принципы остаются неизменными.

person Jeremy Tammik    schedule 27.09.2018
comment
Привет, Джереми, есть ли что-нибудь похожее на ADDIN, которое запускает диалоговое окно (например) при запуске? - person D Jones; 01.10.2018
comment
Кроме того, я использую визуальную студию, возможно ли, что тип решения неправильный? В настоящее время это C# Web›.NET Framework 4.7. - person D Jones; 01.10.2018