QQ咨询 电话咨询
咨询电话:

15359439502

APP下载
下载App
扫码关注
关注微信公众号
返回顶部

Revit二次开发教程:BIM自学入门Revit二次开发

发布:中文网小编3号 浏览:1796人 分享
发布于:2020-05-22

    Revit二次开发说难也难,说容易也容易,关键看客官你的情况和兴趣。

    要想做Revit二次开发,首先需要有一些开发的基础知识,尤其是.NET的开发语言(首选C#,或者VB.NET也行)。其次要知道Revit相关的一些基本概念。

    有了上面的基础,入门就是手到擒来的事(当然入门后要转成高手,还是需要磨练的,不是一朝一夕就可以完成的)。

    (1)准备工作

    开发前需要先安装对应的软件,包括

    AutodeskRevit

    VisualStudioExpress(如果是企业或土豪,请使用收费版VS)

image.png

    (2)创建项目

    打开VisualStudio,单击菜单栏“File”→“New”→“Project…”,或者按快捷键(Ctrl+Shift+N),打开“NewProject”对话框。在该对话框中,选择“VisualC#”→“Windows”,在“Templates”中选择“ClassLibrary”,在“Name”栏中输入项目名称“HelloRevit”,单击“OK”。

    注:Revit不同版本要求的最低.NETFramework版本不一样。例如2017至少需要4.5.2版本。

image.png

    (3)添加引用

    选择“SolutionExplorer”的“References”节点,右击选择“AddReference…”,打开“AddReference”对话框。在该对话框中,选择“Browse”选项卡,进入Revit安装目录(根据本地情况选择对应安装目录,例如:C:ProgramFilesAutodeskRevit2017,具体根据客官安装的Revit版本不同而不同),选择“RevitAPI.dll”以及“RevitAPIUI.dll”两个动态链接库,单击“OK”添加到项目引用。

    (4)代码编写

    接下来,就可以开始编写具体代码了。项目创建后VisualStudio会默认创建一个Class1.cs文件,该文件包含一个public类Class1,代码如下:

namespace HelloRevit

{

   publicclass Class1

   {

   }

}

请将以上代码替换为下面的代码(后面会有代码的详细解释):

namespace HelloRevit

{

 [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.ReadOnly)]

   public class Class1 : 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("Hello", "Hello Revit!");

         return Autodesk.Revit.UI.Result.Succeeded;

      }

   }

}

    也可以通过使用using关键字简化下面的代码,简化更改后的代码如下:

using Autodesk.Revit.Attributes;

using Autodesk.Revit.UI;

using Autodesk.Revit.DB;

namespace HelloRevit

{

   [Transaction(TransactionMode.ReadOnly)]

   public class Class1 : IExternalCommand

   {

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

      {

         TaskDialog.Show("Hello", "Hello Revit!");

         return Result.Succeeded;

      }

   }

}

    注:所有的Revit插件功能都以外部命令的方式存在,每一个外部命令都必须继承于IExternalCommand。命令类还必须实现Execute接口,该接口包含三个参数:

    commandData:包含Revit应用程序的各种信息,包括文档、应用程序接口、当前视图等等。用户需要的所有信息都从该参数获取。

    message:主要用于当命令执行遇到问题时给用户报告的错误信息,所以仅当返回值为Result.Cancelled或Result.Failed时,传入该参数的值才会对用户可见。可以将一些异常信息放入该参数以提示用户问题原因。

    elements:也是当命令执行遇到问题时给用户报告错误时使用,因此它跟message参数一样仅当返回值为Result.Cancelled或Result.Failed时有用。该参数包含一个元素集,开发人员可以通过该元素集告知用户哪些元素有问题。

    (5)注册外部命令

    要让Revit能使用外部命令,除了对应的项目和代码,还需要对命令进行注册。Revit通过后缀名为.addin的文件(该文件实际为xml格式)来进行注册。具体步骤如下:

    1)新建一个文本文件,并将文件名改为“HelloRevit.addin”(请确认文件名不是“HelloRevit.addin.txt”)。然后在该文件中输入以下内容,并保存:

<?xmlversion="1.0" encoding="utf-16"?>

<RevitAddIns>

  <AddIn Type="Command">

    <Assembly>C:ProjectsHelloRevitinHelloRevit.dll</Assembly>

    <AddInId>2FA16D42-9AE3-491d-A919-1A3B04701B9F</AddInId>

    <FullClassName>HelloRevit.Class1</FullClassName>

                 <VendorId>YourCompany</VendorId>

  </AddIn>

</RevitAddIns>

    A.AddInType="Command"表明该库是一个外部命令

    B.Assembly是编译的“HelloRevit.dll”文件的具体路径,请改为本机路径

    C.AddInId是一个全局的GUID值,每个外部命令都应该包含一个自己的GUID值(不同命令不能AddInId重复)

    D.FullClassName指类的名称(这里是Class1,请注意一定要将命名空间名称加上,例如HelloRevit,否则命令执行时会找不到对应的接口)

    E.VendorId指明该命令的厂商,请自定义使用厂商的名称

    2)文件保存好之后需要将该文件放入特定目录,如果你希望该插件只有当前用户可用,需要将文件放入:%appdata%AutodeskRevitAddins2017;

    如果你希望所有用户都可以使用该插件,则将文件放入C:ProgramDataAutodeskRevitAddins2017

    (6)执行命令

    所有步骤完成后,启动Revit,功能区中将出现一个“附加模块”选项卡。

    单击“外部工具”下拉列表中的“HelloRevit.Class1”,执行后将弹出一个窗口显示“HelloRevit”。

image.png

专注BIM行业发展、咨询、教育等问题

查询