Revit二次开发入门笔记-2 创建Hello Revit程序

1 篇文章 0 订阅

1、新建类库

        打开VS,【新建项目】→【Visual C#】→【类库(.NET框架)】

        输入程序名称,如:Hello Revit

#注意:框架与Revit版本对应 

2、引用dll

        点击【项目】→【添加引用】

         

        引用【RevitAPI.dll】和【RevitAPIUI.dll】。 若之前未引用过,点击【浏览】,在Revit安装目录下找到并添加。

 

        在【解决方案资源管理器】中,右键【RevitAPI】和【RevitAPIUI】,点击【属性】,将属性【复制本地】改False,否则你编译会生成一大堆没什么用的东西。

4、修改类名,默认为Class1,右键重命名。

5、编写类的代码

using System;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

namespace HelloWorld
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    public class Class1: IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            TaskDialog.Show("Demo", "Hello World!");
            return Result.Succeeded;
        }
    }
}

using System:

        using-命名空间的入口,

        System-.NET Framework 中提供的一个核心命名空间,其中包含了许多常用的系统级类型和常量。

using Autodesk.Revit.DB;

using Autodesk.Revit.UI;

        Autodesk.Revit.DB 命名空间-包含了与 Revit 数据库(包括元素、参数、视图等)进行交互的类和接口。通过引入这个命名空间,您可以访问并操作 Revit 中的构件、图形、参数等。

        Autodesk.Revit.UI 命名空间则包含了与 Revit 用户界面进行交互的类和接口。通过引入这个命名空间,您可以创建 Revit 的自定义工具栏、菜单、按钮,并处理用户的交互事件。

#这也是为什么要安装 Revit API

[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]:
    用于设置该命令的事务模式为手动模式,这意味着在调用此命令时,需要手动启动和提交事务。

public class Class1: IExternalCommand

        定义了一个名为 Class1 的类,它实现了 IExternalCommand 接口。IExternalCommand 是 Revit API 中定义的接口,用于创建外部命令,以便与 Revit 软件进行交互。

public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements):

  Execute 方法是 IExternalCommand 接口中要求实现的方法,用于执行外部命令的逻辑。该方法有以下参数:

  • ExternalCommandData commandData:包含与 Revit 交互所需的数据,例如当前 Revit 文档、命令的调用者等。
  • ref string message:用于存储可能发生的错误或警告消息,可以在方法中对其进行修改。
  • ElementSet elements:可用于存储命令执行期间可能影响的元素集合。

     在编写具体的逻辑时,可以使用这些参数来访问和操作 Revit 中的元素,执行构件创建、修改参数等操作。

TaskDialog.Show("Demo", "Hello World!");

    TaskDialog 类显示一个简单对话框的示例。TaskDialog 类提供了一种在 Revit 中显示对话框和用户交互的方法。在这个示例中,TaskDialog.Show 方法接受两个参数:对话框的标题和内容。对话框的标题是 “Demo”,内容是 “Hello World!”。

6、生成dll文件

        完成代码后保存,项目属性里把“生成”→“目标平台”由Any CPU改成x64(或者试运行,提醒用哪个平台就用哪个平台,省略这步的话编译时会出现警告)。

         检查无误后生成类库,并记下输出窗口中的文件位置。​​​​​​​

 7、建立addin文件

添加一个文本文件,输入以下内容:

<?xml version ="1.0" encoding ="utf-8" standalone ="no"?>
<RevitAddIns>
  <AddIn Type="Command">
    <Assembly>{类库的路径(含文件名)}</Assembly>
    <AddInId>{Guid}</AddInId>
    <FullClassName>HelloWorld.Class1</FullClassName>
    <Text>HelloWorld</Text>
    <VendorId>NAME</VendorId>
  </AddIn>
</RevitAddIns>

        这段 XML 代码是一个用于在 Revit 中注册外部命令的 Add-in 文件。Add-in 文件用于将自定义功能集成到 Revit 中,并在 Revit 启动时加载和注册这些功能。

  • <?xml version="1.0" encoding="utf-8" standalone="no"?>:指定 XML 文件的版本和编码格式。
  • <RevitAddIns>:根元素,包含了所有的 Add-in 定义。
  • <AddIn Type="Command">:type参数Command表明插件是IExternalCommand(外部命令)类型。相应的还有IExternalApplication(外部应用)和IExternalDBApplication(外部数据应用)类型。
  • <Assembly>{类库的路径(含文件名)}</Assembly>:指定外部命令所在的程序集路径(包括文件名)。
  • <AddInId>{Guid}</AddInId>:指定唯一的 Add-in ID,通常使用 GUID(全局唯一标识符)生成。
  • <FullClassName>HelloWorld.Class1</FullClassName>:指定外部命令类的完整类名,包括命名空间。
  • <Text>HelloWorld</Text>:指定用于显示的外部命令的文本,通常是命令的名称。
  • <VendorId>NAME</VendorId>:指定供应商 ID,可以随意指定一个名字。

将上述 XML 代码保存为 .addin 文件,然后将该文件复制到适当的 Revit 插件目录(例如 C:\ProgramData\Autodesk\Revit\Addins\2022),就可以在 Revit 中注册和加载您的外部命令。

7、使用插件

启动Revit,在“附加模块”→“外部工具”的下拉箭头处找到“HelloWorld”,执行后,可以看到弹出对话框,成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值