REVIT二次开发学习笔记3:如何在Revit中创建带图标的命令

本文介绍了如何在Revit中通过创建外部命令和图标,实现点击后显示消息。步骤包括创建HelloRevitDemo类,实现IExternalCommand接口,添加选项卡和面板,以及在面板上添加带图标的按钮。最后,通过addin文件在Revit中加载和卸载自定义命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备注:学习自博主黑夜の骑士REVIT二次开发入门教程

本节学习如何在Rvit中添加一个带图标的命令,点击命令后在revit界面显示“HelloRevit”。

1、首先新建一个项目,添加一个类,这里命名为HelloRevitDemo,实现IExternalCommand接口,添加以下代码,这样我们在revit外部工具中加载dll文件就会在revit界面显示“Hello,Revit”.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

namespace UIDemo {
    [Transaction(TransactionMode.Manual)]
    public class HelloRevitDemo : IExternalCommand {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) {
            //获取当前文档
            Document doc = commandData.Application.ActiveUIDocument.Document;
            //显示信息
            TaskDialog.Show("Demo", "Hello,Revit");

            return Result.Succeeded;
        }
    }
}

2、以上是通过外部工具命令调用来实现,那么如何通过创建一个图标来调用这段代码来实现呢?

再次添加一个类,这里我们实现IExternalApplication接口,此接口需要实现两个方法,返回值类型为Result 的OnShutdown(UIControlledApplication application)方法及返回值类型为Result类型的OnStartup(UIControlledApplication application)方法,我们主要在第二个方法里面写,第一个方法直接返回Result.Succeeded即可。

using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using System.Windows.Media.Imaging;
using System.Reflection;
using System.Diagnostics;

namespace UIDemo {
    public class UIDemo : IExternalApplication {
        public Result OnShutdown(UIControlledApplication application) {
            return Result.Succeeded;
        }
        public Result OnStartup(UIControlledApplication application) {
            ......//接下来要具体实现的代码
            return Result.Succeeded;
        }
    }
}

3、首先我们需要在Revit中添加一个选项卡,这里将选项卡命名为“UITab”,并在选项卡下方的功能区中添加一个面板,以便我们后面在面板上添加图标。

            //创建一个选项卡
            application.CreateRibbonTab("UITab");

            //在选项卡中创建面板
            RibbonPanel rp = application.CreateRibbonPanel("UITab", "UIPanel");

4、将之前的HelloRevitDemo类赋值给一个字符串,方便我们接下来调用它。并且需要获取该程序集运行时的路径。

            string classNameHelloRevitDemo = "UIDemo.HelloRevitDemo";
            string assemblyPath = Assembly.GetExecutingAssembly().Location;   //获取当前程序路径

5、接下来我们在刚刚创建的面板中添加一个按钮,并且给该按钮添加一个图标。图标可以到iconfont-阿里巴巴矢量图标库该网站下载免费的素材,大小及格式建议选择32或16,png

            //创建命令按钮
            PushButtonData pbd = new PushButtonData("InnerNameRevit", "HelloRevit", assemblyPath, classNameHelloRevitDemo);
            //将按钮添加到面板
            PushButton pushButton = rp.AddItem(pbd) as PushButton;

我们在项目资源管理器中新建一个文件夹,用于存放及管理下载好的图标,然后将图标拖入该文件夹中。并且将图片的属性改为Resource

然后将图片添加给刚刚创建好的Button

            pushButton.LargeImage = new BitmapImage(new Uri("pack://application:,,,/UIDemo;component/pic/星.png", UriKind.Absolute));

6、还可以给按钮设置一些默认的提示信息

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

7、接下来我们右键生成dll文件,并利用外部工具加载该dll文件

8、这时候在我们C:\ProgramData\Autodesk\Revit\Addins\2014这个文件夹里会生成一个UIDemo.addin文件,注意最后的路径名对应你的Add-In Manager版本,由于我是2014版本,所以addin文件在对应的2014的文件夹里。

9、将生成的addin文件复制到对应版本的Revit文件夹里C:\ProgramData\Autodesk\Revit\Addins\2019,我安装的是2019的revit,所以最后的路径名为2019,不管你安装的revit在哪个盘,这里的文件路径应该都是这个:C:\ProgramData\Autodesk\Revit\Addins\你的revit版本。

10、这时候revit界面就会出现如下提示,选择载入一次。

11、这时候在revit选项卡中就会出现刚刚创建的命令了,点击图标,就可以看到显示的命令了

12、如果想继续往该面板中添加命令,就重复之前的代码就好

            //再创建一个按钮
            string classNameHelloWorldDemo = "UIDemo.HelloWorldDemo";
            PushButtonData pbd2 = new PushButtonData("InnerNameWorld", "HelloWorld", assemblyPath, classNameHelloWorldDemo);
            PushButton pushButton2 = rp.AddItem(pbd2) as PushButton;
            pushButton2.LargeImage = new BitmapImage(new Uri("pack://application:,,,/UIDemo;component/pic/架构.png", UriKind.Absolute));
            pushButton2.ToolTip = "HelloWorld";

 如果要卸载,删除刚刚添加的addin文件即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值