最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Revit二次开发实战

来源:博客园

Revit二次开发实战


(资料图)

第一个程序 RevitHello插件

安装Revit2019并注册

安装、注册教程百度一下;

安装VS2019 Community

安装教程百度一下;

安装两个Revit插件

RevitLookup和AddInManager;

AddInManager.dll、Autodesk.AddInManager.addin、RevitLookup.dll、RevitLookup.addin;

将上述4个文件拷贝到插件Addins目录中;

C:\Users\Administrator\AppData\Roaming\Autodesk\Revit\Addins\2019;

创建一个类库项目

创建.NET Framework类库项目;

到revit.exe所在文件夹添加两个dll引用;

RevitAPI.dll、RevitAPIUI.dll;

让类实现外部命令接口: IExternalCommand;

实现Execute函数;

通过ExternalCommandData参数可以获取UIApplication对象uiApp;

通过uiApp可以获取Application对象app和活动文档UIDocument对象uiDoc ;

通过uiDoc 对象可以获取Document doc和活动视图View 对象view;

通过TaskDialog.Show("view.Name", view.Name)弹出对话框,并显示指定信息;

生成dll

类库编辑完成后,Ctrl+B生成dll文件;

在bin/Debug文件夹下;

Revit调用外部命令

使用AddInManager工具将生成的dll添加到Revit中;

选中创建的外部命令类,并点击运行按钮,即可运行外部命令;

源码

using Autodesk.Revit.ApplicationServices;using Autodesk.Revit.Attributes;using Autodesk.Revit.DB;using Autodesk.Revit.UI;using System;namespace RevitHello{    [Transaction(TransactionMode.Manual)]    public class Class1 : IExternalCommand    {        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)        {            UIApplication uiApp = commandData.Application;//获取UI程序对象            Application app = uiApp.Application;//获取程序对象            TaskDialog.Show(" app.VersionName", app.VersionName);            UIDocument uiDoc = uiApp.ActiveUIDocument;//获取UI文档对象(当前文档)            Document doc = uiDoc.Document;//获取文档对象            TaskDialog.Show("doc.PathName", doc.PathName);            View view = uiDoc.ActiveView;//获取视图对象(当前视图)            TaskDialog.Show("view.Name", view.Name);            string guid = Guid.NewGuid().ToString();//创建一个guid字符串            TaskDialog.Show("guid", guid);//显示guid            return Result.Succeeded;        }    }}

关键词: