Revit插件OnStartUp

时间:2018-09-27 13:27:56

标签: autodesk revit-api revit autodesk-data-management

我正在尝试实现一个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 Command Addin相当熟悉,只是对应用程序不熟悉,所以我了解通过dll在类和插件文件之间的联系

1 个答案:

答案 0 :(得分:1)

我看不到您发布的代码有任何明显的问题。

但是,我没有试图找到错误,而是向您指出了我昨天发布的正确且经过测试的解决方案,演示了如何auto-run an add-in for Forge Design Automation

它使用外部DB应用程序而不是像您一样使用外部(UI)应用程序,但是原理保持不变。