最近被分配了一个任务

开发一个小插件

点击后要实现打开网页这个功能

研究了很多很多

其实一直没搞懂

到底应该怎么去开发这个东西

甚至去 反编译了别人的代码去看

看了半天发现看不懂hhhhh

最后终于整明白了

首先   默认安装路径下的  addin 文件 也就是

C:\ProgramData\Autodesk\Revit\Addins\2016

这个目录下面(当然要看你的revit的版本号)

创建一个 和 里面已经有的文件差不多格式的  addin  后缀文件就好了

<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns><AddIn Type="Application"><Name>ZY</Name><!-- <下面一条语句中的路径是项目编译(生成)时产生的dll的路径> --><Assembly>********************</Assembly><!-- <AddInId>下面一条语句是你的项目的GUID码</AddInId> --><AddInId>*****************</AddInId><!-- <下面一条语句中的类名是创建项目时的类名> --><FullClassName>eduweblink.Class1</FullClassName><!-- <下面一条语句中的在revit中显示的插件名称> --><Text>eduweblink1</Text> <VendorId>NAME</VendorId><VendorDescription>Your Company Information</VendorDescription> </AddIn>
</RevitAddIns>

接下来,我们就创建一个新的工程 用来在 Revit  上面的菜单栏上面添加一个自己的选项卡

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.Attributes;
using System.Windows.Media.Imaging;namespace eduweblink
{[Transaction(TransactionMode.Manual)][Regeneration(RegenerationOption.Manual)]public class Class1 : IExternalApplication{public Result OnStartup(UIControlledApplication application){string TabName = "官网网址";application.CreateRibbonTab(TabName);RibbonPanel P_TabName1 = application.CreateRibbonPanel(TabName, "官网链接");PushButtonData button110 = new PushButtonData("网站", "官方网站 ", @"C:\Users\Administrator\Desktop\RevitProject\eduweblink\eduweblink\linktoweb\bin\Debug\linktoweb.dll", "linktoweb.Class1");Uri uriImage110 = new Uri(@"C:\Users\Administrator\Desktop\美术资源\装备图标\图标250X250\1111.png");BitmapImage largeimage110 = new BitmapImage(uriImage110);button110.LargeImage = largeimage110;P_TabName1.AddItem(button110);//P_TabName1.AddSeparator();//P_TabName1.AddSeparator();//P_TabName1.AddSeparator();return Result.Succeeded;}public Result OnShutdown(UIControlledApplication application){return Result.Succeeded;}}
}

这上面的每一个 头文件都用到了噢

忘记说了,要记得先添加  revitapi  和 revitui  的两个引用文件,

不然会报错。

那两个引用文件就不在这里说了

然后通过上面的 这个路径连接到 我们真正要实现功能的代码文件

using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;namespace linktoweb
{[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]public class Class1: IExternalCommand{public Result Execute(ExternalCommandData revit, ref string message, ElementSet elements){// TaskDialog.Show("hello", "this is my first project");//调用系统默认的浏览器 System.Diagnostics.Process.Start("http://www.baidu.com/");return Result.Succeeded;}}
}

可以看到 这上面的 这些代码是 缺一不可,

少一点都会报错

因为

想要实现接口功能,必须要继承 一个   IExternalCommand   类

还有其他两个接口目前我还没用到

然后这个类 必须要实现   Execute   函数 才行 且必须要有返回值

调用 浏览器的代码 就不多说了,这是我百度来的。hhh

我也没看懂

最后再贴一个 IExternalCommand  的实现

他是这样写的

using Autodesk.Revit.DB;namespace Autodesk.Revit.UI
{//// 摘要://     An interface that should be implemented to provide the implementation for a Revit//     add-in External Command.//// 备注://     To add an external command to Autodesk Revit the developer should implement an//     object that supports the IExternalCommand interface.public interface IExternalCommand{//// 摘要://     Overload this method to implement and external command within Revit.//// 参数://   commandData://     An ExternalCommandData object which contains reference to Application and View//     needed by external command.////   message://     Error message can be returned by external command. This will be displayed only//     if the command status was "Failed". There is a limit of 1023 characters for this//     message; strings longer than this will be truncated.////   elements://     Element set indicating problem elements to display in the failure dialog. This//     will be used only if the command status was "Failed".//// 返回结果://     The result indicates if the execution fails, succeeds, or was canceled by user.//     If it does not succeed, Revit will undo any changes made by the external command.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements);}
}

用 有道翻译  翻译一下 大概就是这个意思

摘要:应该实现的接口,以提供Revit的实现外接程序外部命令。备注:要向Autodesk Revit添加一个外部命令,开发人员应该实现一个对象,该对象支持IExternalCommand接口。摘要:重载此方法以在Revit中实现和外部命令。参数:commandData:一个ExternalCommandData对象,它包含对应用程序和视图的引用外部命令需要。信息:错误信息可以通过外部命令返回。这将只显示如果命令状态为“Failed”。这里有1023个字符的限制消息;长度大于此值的字符串将被截断。元素:元素集,指示要在故障对话框中显示的问题元素。这将仅在命令状态为“Failed”时使用。返回结果:结果表示执行失败、成功或被用户取消。如果失败,Revit将撤销外部命令所做的任何更改。

机翻的,不过大概也是可以看懂的。

慢慢体会。

Revit初试水之点击按钮打开网页相关推荐

  1. 通过点击按钮打开新的窗口

    通过点击按钮打开新的窗口 通过点击某个按键打开新的窗口,原来的窗口关闭或者不关闭: 主要语句 //创建新的界面 A a=new A(); //将新的界面展示出来,此参数设置为true A.setVis ...

  2. js 点击按钮打开浏览器新页签,兼容版

    话不多说直接上代码,这是千辛万苦寻来的,帮助需要帮助的人. <html><head>点击按钮打开浏览器新页签</head><body><div o ...

  3. 点击按钮打开新页面(携带参数)

    点击按钮打开新页面(携带参数) <el-button size="small" class="button-right" @click="cre ...

  4. 微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载

    微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载 注:在pc上开始时采用这两种方式是没有效果的,或者打开的是空页面,但上线到公众号是没有问题的!!!!!!!!! ...

  5. access窗体转换html,access点击按钮打开窗体

    如何在 Access 2007 的窗体中实现点击按钮打开另一首先有4个名称分别为A.B.C.D的窗体,已经建立好了. 我新建了一个空打开一个Access数据库软件,可以打开已创建好的数据库,在[数据库 ...

  6. android点击按钮打开一个网页,Android实现H5点击打开app或跳转指定界面

    Android实现H5点击打开app或跳转指定界面 本文原创,转载请注明出处.欢迎关注我的 简书. 安利一波我写的开发框架:MyScFrame喜欢的话就给个Star 场景 H5界面中的入口 有时候为了 ...

  7. H5微信公众号,如何在页面点击按钮打开分享面板【求助】

    1.使用了weixin-js-sdk,只实现了自定义右上角的分享功能 安装命令: npm install weixin-js-sdk --save import wx from 'weixin-js- ...

  8. Flutter之点击按钮打开百度链接

    1 需求 点击按钮,打开百度链接 2 代码实现 import 'package:flutter/material.dart'; import 'package:url_launcher/url_lau ...

  9. 点击按钮给网页换皮肤简单js实现

    其实这个功能实现起来很简单,使用js点击按钮时更换标签中href属性值, 参考代码如下, //导入外部样式表 你再点一下试试!//按钮 var hello = document.getElementB ...

最新文章

  1. umi脚手架搭建的项目_15天零成本搭建静态博客,托管于Github Page
  2. HTML4如何让一个DIV居中对齐?float输入日志标题
  3. 图片竖轮播html,JS实现纵向轮播图(初级版)
  4. [转]html5 Canvas画图教程(1)—画图的基本常识
  5. 通过QUIC 0-RTT建立更快的连接
  6. 【渝粤题库】陕西师范大学202881 电子商务概论
  7. 最后2天,错过等1年,这7本计算机经典图书竟然打折了!
  8. linux boot命令用法,Linux基础命令介绍 - 2
  9. python为mysql设置id自增长_python mysql自增字段AUTO_INCREMENT值的修改方式
  10. 为什么说苏宁必买万达百货
  11. lopatkin俄大神精简Windows 10 Pro 19041.450 20H1 Release x86-x64 ZH_CN DREY[2020-08-19]
  12. 尺缩钟慢之动钟变慢——思想实验推导狭义相对论(七)
  13. 家用无线网络优化方案
  14. ssh登录极路由后台_从浏览器如何进入路由器后台【详细介绍】
  15. win10打开游戏提示你的图形硬件不支持怎么办
  16. CYQ.Data、ASP.NET Aries 百家企业使用名单
  17. asp计算机房预约系统源码,(机房)实验室预约管理系统
  18. Linux使用uinput实现虚拟鼠标
  19. 英语前缀 2011年8月16日15:55:43
  20. java中输出日历_Java打印日历表

热门文章

  1. php视频怎么看,教你“如何巧看PHP中文网课程视频,悄悄成为高手?”
  2. JXTA技术与应用发展
  3. 计算机提升反思的相关文档,反思教学论文,关于教学反思在提升高校计算机专业青年教师教学水平中的应用相关参考文献资料-免费论文范文...
  4. 微信小程序毕业设计 基于微信图书馆借阅小程序系统开题报告功能参考
  5. 反编译小程序得到源代码
  6. 如何从前端入门到放弃
  7. PowerBI-日期和时间函数-WEEKDAY\WEEKNUM
  8. 虽败犹荣的McCain
  9. 模仿Airbnb的悬浮搜索框动画
  10. 访问空指针一定会使程序死掉吗