软件安装
Revit2021二次开发为例
安装 VS2019、.NETFramework 4.8
安装Revit2021
安装 Revit 2021.1 SDK (2020.7.29更新)
安装 RevitLookup,RevitAddInManager

安装向导 VisualStudioRevitAddinWizard
下载文件解压==》将文件夹复制到以下路径(C#进行二次开发) ==》重启VSC:\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类来创建自定义菜单和按钮
修改向导生成的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” 按钮。点击按钮正常运行命令弹出提示框
