小庄
小庄
发布于 2026-01-19 / 12 阅读

Revit插件 001 环境搭建

软件安装

Revit2021二次开发为例

  1. 安装 VS2019、.NETFramework 4.8

    Revit 2017

    .NETFramework 4.5.2

    Revit 2018

    .NETFramework 4.6

    Revit 2019

    .NETFramework 4.7

    Revit 2020

    .NETFramework 4.7.2

    Revit 2021-2025

    .NETFramework 4.8

  2. 安装Revit2021

  3. 安装 Revit 2021.1 SDK (2020.7.29更新)

  4. 安装 RevitLookupRevitAddInManager

  5. 安装向导 VisualStudioRevitAddinWizard
    下载文件解压==》将文件夹复制到以下路径(C#进行二次开发) ==》重启VS
    C:\Users\*****\Documents\Visual Studio 2019\Templates\ProjectTemplates\Visual C#​

HelloWord

使用向导新建项目-》修改平台集为x64-》修改代-》生成程序

// Command.cs
#region Namespaces
using Autodesk.Revit.ApplicationServices;
//using Autodesk.Revit.Attributes;
//using Autodesk.Revit.DB;
//using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System;
using System.Collections.Generic;
using System.Diagnostics;
#endregion

namespace lang
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    public class Command : Autodesk.Revit.UI.IExternalCommand
    {
        public Autodesk.Revit.UI.Result Execute(Autodesk.Revit.UI.ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements)
        {
            Autodesk.Revit.UI.TaskDialog.Show("RevitDemo", "www.狼牙.com");
            return Autodesk.Revit.UI.Result.Succeeded;
        }
    }
}

向导已经自动添加了addin文件,并将编译的文件复制到目录下了C:\Users\*****\AppData\Roaming\Autodesk\Revit\Addins\2021
重启Revit会自动检测到文件并询问是否载入

添加菜单和按钮

在Revit API中,可以使用ExternalApplication类和ExternalCommand类来创建自定义菜单和按钮

RibbonTab

选项卡页

用户可以创建一个新的选项卡页,用来管理自己的面板RibbonPanel

RibbonPanel

面板

其他控件的容器

PushButton

命令按钮

对应一个ExternalCommand,单击这个按钮

PulldownButton

下拉按钮

带有下拉列表的按钮控件,表中的每个元素都是一个命令按钮,在下拉列表的元素间可以加水平分割线

SplitButton

下拉记忆按钮

是下拉按钮的派生类控件,分为上下两部分,上部分功能类似命令按钮,下部分功能类似下拉按钮

ComboBox

下拉组合框

是有下拉列表的选择控件,通过单击控件上的箭头可显示或隐藏下拉列表,此控件不支持多项选择

修改向导生成的App.cs文件

#region Namespaces
using System;
using System.Collections.Generic;
using System.Windows.Media.Imaging;
#endregion

namespace lang
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    class App : Autodesk.Revit.UI.IExternalApplication
    {
        //在Autodesk.Revit启动时执行一些任务
        public Autodesk.Revit.UI.Result OnStartup(Autodesk.Revit.UI.UIControlledApplication a)
        {
            a.CreateRibbonTab("货架");
            //添加一个新的Ribbon面板
            Autodesk.Revit.UI.RibbonPanel ribbonPanel = a.CreateRibbonPanel("货架", "常规构件");
            Autodesk.Revit.UI.PushButton pushButton = ribbonPanel.AddItem(new Autodesk.Revit.UI.PushButtonData("cs1", "测试1", System.Reflection.Assembly.GetExecutingAssembly().Location, "lang.Command")) as Autodesk.Revit.UI.PushButton;

            //Uri uriImage = new Uri(@"C:\Revit\DEV\lang\lang\bin\x64\Debug\Scree.png"); //绝对路径
            //Uri uriImage = new Uri(System.IO.Path.GetDirectoryName(thisAssemblyPath) + @"\images\wtr.png"); //相对路径
            Uri uriImage = new Uri("pack://application:,,,/lang;component/image/cs1.png"); //从资源文件加载
            BitmapImage largeImage = new BitmapImage(uriImage);
            pushButton.LargeImage = largeImage;

            //给按钮设置默认提示信息
            pushButton.ToolTip = "按钮提示信息";

            return Autodesk.Revit.UI.Result.Succeeded;
        }

        //在Autodesk.Revit关闭时执行一些任务
        public Autodesk.Revit.UI.Result OnShutdown(Autodesk.Revit.UI.UIControlledApplication a)
        {
            return Autodesk.Revit.UI.Result.Succeeded;
        }
    }
}

代码中"lang.Command" lang对应命名空间,Command对应前面Command.cs文件中的类名,就是按钮点击后执行的命令。
Url中的路径对应资源文件

编译Assembly.GetExecutingAssembly().Location 需要关闭Revit2021软件

资源文件

  1. 解决方案管理器=》项目右键选属性=》添加=》新建项=》=》资源文件

  2. 添加图片

  3. 设置图片属性

效果

添加了一个”货架“ 菜单,菜单里面添加了一个 “常规构件” 面板,面板上创建了一个 “测试1” 按钮。点击按钮正常运行命令弹出提示框