🌓
搜索
 找回密码
 立即注册

BKM Revit二次开发07—创建面板

admin 2020-4-10 18:59:46 90303

点击上方蓝字关注我们!


本教程适合零基础入门学习。

今天的内容是创建面板,就是类似于Revit软件中原有的面板。

1. 新建一个文件,复制以下创建面板的代码模板

using System.Data;using System.Windows;using System.Windows.Media.Imaging;using Autodesk.Revit;using Autodesk.Revit.UI;using Autodesk.Revit.UI.Selection;using Autodesk.Revit.DB;using Autodesk.Revit.DB.Architecture;using Autodesk.Revit.DB.Mechanical;using Autodesk.Revit.DB.Plumbing;using Autodesk.Revit.DB.Electrical;using Autodesk.Revit.ApplicationServices;using System.Data.SqlClient;using Autodesk.Revit.Creation;using Autodesk.Revit.DB.Structure;using Autodesk.Revit.Attributes;using System;using System.IO;
namespace Ribbon_demo{ [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] [Journaling(JournalingMode.NoCommandData)]//这里使用的IExternalApplication接口,使用接口后会自动出现//public Result OnShutdown(UIControlledApplication application)//和public Result OnStartup(UIControlledApplication application)//两个函数public class Ribbon_de : IExternalApplication {//获取当前文件所在的路径static string AddInPath = typeof(Ribbon_de).Assembly.Location;static string ButtonIconsFolder = Path.GetDirectoryName(AddInPath);
public Result OnShutdown(UIControlledApplication application) {return Result.Succeeded; }
public Result OnStartup(UIControlledApplication application) {// 这里写代码return Result.Succeeded; } }}

2. 引用程序

除了RevitAPI.dll和RevitAPIUI.dll,还要引用以下程序集。

3. 编写功能代码

这里我是创建了一个函数来进行调用,使得文本结构更加清晰,复制以下代码就行了,代码有部分解释,涉及到类的使用方法,应该寻求C#基本知识和Revit的API文档。

using System.Data;using System.Windows;using System.Windows.Media.Imaging;using Autodesk.Revit;using Autodesk.Revit.UI;using Autodesk.Revit.UI.Selection;using Autodesk.Revit.DB;using Autodesk.Revit.DB.Architecture;using Autodesk.Revit.DB.Mechanical;using Autodesk.Revit.DB.Plumbing;using Autodesk.Revit.DB.Electrical;using Autodesk.Revit.ApplicationServices;using System.Data.SqlClient;using Autodesk.Revit.Creation;using Autodesk.Revit.DB.Structure;using Autodesk.Revit.Attributes;using System;using System.IO;
namespace Ribbon_demo{ [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] [Journaling(JournalingMode.NoCommandData)]public class Ribbon_de : IExternalApplication {//获取当前文件所在的路径,注意typeof中的参数名和类名一致static string AddInPath = typeof(Ribbon_de).Assembly.Location;static string ButtonIconsFolder = Path.GetDirectoryName(AddInPath);
public Result OnShutdown(UIControlledApplication application) {return Result.Succeeded; }
public Result OnStartup(UIControlledApplication application) {//调用CreateRibbon函数,在下面创建 CreateRibbon(application);return Result.Succeeded; }

//创建CreateRibbon函数public void CreateRibbon(UIControlledApplication application) { application.CreateRibbonTab("设计协同平台");//创建一个名称为“设计协同平台”Tab#region 创建“登录”和“访问云平台”两个按钮//创建一个名称为"用户界面"panel,并将"用户界面"panel附着在“设计协同平台”Tab下面string PanelName = "设计用户界面"; RibbonPanel ribbonPanelTest = application.CreateRibbonPanel("设计协同平台", PanelName);
//创建一个按钮群组 RadioButtonGroupData radioButtonGroupData = new RadioButtonGroupData("group信息");//新建“设计用户登录”按钮,并指定按钮图标,指定按钮点击后实现的功能(这里是运行同级目录下Form_demo.dll中的Form_demo命名空间下的Form_de类,也就是上一期中的成果)//指定鼠标挪上按钮的提示文字, RadioButtonGroup radioButtonGroup = (RadioButtonGroup)(ribbonPanelTest.AddItem(radioButtonGroupData)); ToggleButton toggleButton_login = radioButtonGroup.AddItem(new ToggleButtonData("设计用户登录", "设计用户登录", ButtonIconsFolder + "\\Form_demo.dll", "Form_demo.Form_de")); toggleButton_login.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "登录.png"), UriKind.Absolute)); //这行代码决定图标 toggleButton_login.ToolTip = "使用管理员发放的账号密码,登录以体验更多功能"; toggleButton_login.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "2.png"), UriKind.Absolute));
//以下创建第二名为“访问设计云平台”的按钮,同上。 ToggleButton toggleButton_Cloud = radioButtonGroup.AddItem(new ToggleButtonData("访问设计云平台", "设计设计访问云平台", ButtonIconsFolder + "\\Form_demo.dll", "Form_demo.Form_de")); toggleButton_Cloud.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "云平台.png"), UriKind.Absolute)); //这行代码决定图标 toggleButton_Cloud.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "4.png"), UriKind.Absolute)); toggleButton_Cloud.ToolTip = "将直接跳转到网页平台界面";#endregion 创建“设计用户登录”和“访问设计云平台”两个按钮结束 } }

4. 生成解决方案

生成dll动态文件成功。

注意:这里我们需要把图标和绑定的dll文件放在生成的dll文件目录下,一般用Windows自带的画图工具把下载到的图标像素改成32×32或者16×16,根据实际需求调整图片像素大小。

5. 生成admin文件

打开Revit,找到dll文件路径,并加载进来,注意加载进来实在Loaded Application。

点击右下角的Save,自动生成addin文件到dll文件所在路径。

6. 操作addin文件

打开addin文件,修改<Assembly>标签下的dll路径为当前文件路径,如下图。

保存后,将addin文件拷贝到C:\ProgramData\Autodesk\Revit\Addins\2017路径下。

7. 载入到Revit软件

打开Revit2017,提示载入,点击载入,载入方式看个人需求。

随意打开一个项目,找到“设计协同管理”tab,这就是我们创建的面板啦。

随意点击一个按钮,弹出绑定的程序。

微信公众号【BIM技术应用交流】回复“二开7”获取本期材料。
知乎专栏【BKM — Revit二次开发】获取更多更新。
欢迎加入QQ群:427981585


长按二维码关注我们




扫一扫

101707.jpg
随机推荐

最新主题

0 回复

高级模式
游客
返回顶部