Revit 插件 OnStartUp

Posted

技术标签:

【中文标题】Revit 插件 OnStartUp【英文标题】:Revit Addin OnStartUp 【发布时间】:2019-03-03 10:31:05 【问题描述】:

我正在尝试实现一个 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 的连接

【问题讨论】:

不确定,但您可以公开您的课程吗?例如:公共类 Class1:IExternalApplication ... 【参考方案1】:

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

但是,与其试图找出错误,我更愿意为您指出我昨天刚刚发布的正确且经过测试的解决方案,演示如何auto-run an add-in for Forge Design Automation。

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

【讨论】:

嗨 Jeremy,有什么类似于 ADDIN 的东西可以在启动时启动一个对话框(例如)吗? 另外,我正在使用 Visual Studio,可能解决方案类型错误吗?目前是 C# Web>.NET Framework 4.7

以上是关于Revit 插件 OnStartUp的主要内容,如果未能解决你的问题,请参考以下文章

Revit插件模板2020

如何从 revit 插件或使用 Forge api 为 Revit 文件创建 URN

revit2016附属怎么加载不出来

Revit:C# 插件在角落创建螺柱

Revit 2021插件开发入门教程

Revit插件打包——Advanced Installer使用说明