当前位置: 首页 > news >正文

【Revit二次开发】创建Ribbon选项卡与带图标的按钮

效果图

创建一个叫做“开发的插件”的选项卡,
选项卡内有一个叫做“Hello”的图标按钮,
点击按钮后运行一个命令,
该命令弹出提示框“Hello Revit!”。

在这里插入图片描述
在此示例基础上,可以根据需要替换图标、文字、命令功能。

步骤

  1. 安装Revit2019
  2. 创建.NET Framework4.7.2的类库项目
  3. 添加Revit2019安装目录下的dll引用:
  • C:\Program Files\Autodesk\Revit 2019\RevitAPI.dll
  • C:\Program Files\Autodesk\Revit 2019\RevitAPIUI.dll

并将其【复制本地】的属性设置为False

  1. 创建一个命令类(用于弹出提示框“Hello Revit!”)
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.IO;
using System;
using System.Reflection;
using System.Windows.Media.Imaging;namespace TestRevit
{[Transaction(TransactionMode.Manual)]public class Command_Hello : IExternalCommand{/// <summary>/// 内部的名称/// </summary>public static string Name = "hi";/// <summary>/// 在界面上显示的名称/// </summary>public static string Name_Display = "Hello";/// <summary>/// 当前程序路径/// </summary>public static string Name_Assembly = Assembly.GetExecutingAssembly().Location;/// <summary>/// 类的限定名/// </summary>public static string Name_Class = "TestRevit.Command_Hello";/// <summary>/// 按钮默认提示信息/// </summary>public static string Name_ToolTip = "Hello World";public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){TaskDialog.Show("Hello", "Hello Revit!");return Result.Succeeded;}public static BitmapImage GetImg(){var dir = Path.GetDirectoryName(Name_Assembly);var picPath = Path.Combine(dir, "pics", "Tool.png");Uri uriImage = new Uri(picPath);BitmapImage img = new BitmapImage(uriImage);return img;}}
}

由于使用了BitmapImage类,VS2022会提示需要引入PresentationCore.dll,可按IDE提示快速引入。
也可以自行提前引入该dll,其路径一般为:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\PresentationCore.dll

  1. 添加图片
    创建一个pics文件夹,里面添加一个准备好的png图片,可以网上下载免费的矢量库。

注意下载png格式,且分辨率为32×32像素。
在这里插入图片描述

  1. 创建一个应用类(用于创建Ribbon选项卡等UI内容)
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;namespace TestRevit
{[Transaction(TransactionMode.Manual)]public class AppEntry : IExternalApplication{public Result OnShutdown(UIControlledApplication application){return Result.Succeeded;}public Result OnStartup(UIControlledApplication application){//创建选项卡application.CreateRibbonTab("开发的插件");//创建区域RibbonPanel ri = application.CreateRibbonPanel("开发的插件", "工具");//创建按钮PushButtonData p1 = new PushButtonData(Command_Hello.Name,Command_Hello.Name_Display,Command_Hello.Name_Assembly,Command_Hello.Name_Class);PushButton pushBtn = ri.AddItem(p1) as PushButton;//设置按钮图片和提示pushBtn.LargeImage = Command_Hello.GetImg();pushBtn.ToolTip = Command_Hello.Name_ToolTip;return Result.Succeeded;}} 
}
  1. 配置插件位置
    C:\ProgramData\Autodesk\Revit\Addins\2019路径下,创建一个名为TestRevit.addin的文件,里面内容:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns><AddIn Type="Application"><Assembly>替换成实际路径Debug\TestRevit.dll</Assembly><ClientId>B231353A-690B-143A-74BD-FCDFFB12775C</ClientId><FullClassName>TestRevit.AppEntry</FullClassName><Name>TestRevit</Name><VendorId>...</VendorId> <VendorDescription>...</VendorDescription>	  </AddIn>
</RevitAddIns>
  • Assembly需要替换实际的TestRevit.dll路径。
  • ClientId为GUID,可以自行编写,或利用网上生成工具生成一个。
  • FullClassName必须要上面继承了IExternalApplication的那个类的限定名称(带有命名空间)。
  • VendorIdVendorDescription标签内容可自行填写。

更多参考

https://blog.csdn.net/jortfoiwer/article/details/134934836
https://blog.csdn.net/qq_45586307/article/details/118885694
https://zhuanlan.zhihu.com/p/26220273?utm_id=0
https://github.com/revitdevelopers/revitapitutorialbook
https://blog.csdn.net/weixin_47015373/article/details/122681021

相关文章:

【Revit二次开发】创建Ribbon选项卡与带图标的按钮

效果图 创建一个叫做“开发的插件”的选项卡&#xff0c; 选项卡内有一个叫做“Hello”的图标按钮&#xff0c; 点击按钮后运行一个命令&#xff0c; 该命令弹出提示框“Hello Revit!”。 在此示例基础上&#xff0c;可以根据需要替换图标、文字、命令功能。 步骤 安装Revit…...

Win11 终端执行 python xxx.py 没反应

在 Win11 上写了一段 Python 代码来分析日志文件&#xff0c; 发现执行没反应。是在 VSCode 里的终端中执行的 python log_stats.py, 是 PowerShell&#xff1b; 也尝试了 cmd&#xff0c; 情况一样。 一开始怀疑代码写错&#xff0c;直到故意在代码里加打印&#xff0c;发现没…...

使用视频提升应用在 App Store 中的推广效果

App Store 上有485 万个应用和游戏。每个应用开发者都知道&#xff0c;要在如此庞大的市场中脱颖而出&#xff0c;吸引宝贵的用户眼球&#xff0c;是多么困难。 您需要在应用推广游戏中尝试一些不同的东西&#xff0c;那就是视频预览。这些短小的电影奇迹已经成为应用营销人员…...

对话 OpenCV 之父 Gary Bradski:灾难性遗忘和持续学习是尚未解决的两大挑战 | Open AGI Forum

作者 | Annie Xu 采访、责编 | Eric Wang 出品丨GOSIM 开源创新汇 Gary Bradski&#xff0c;旺盛的好奇心、敢于冒险的勇气、独到的商业视角让他成为计算视觉、自动驾驶领域举重若轻的奠基者。 Gary 曾加入 Stanley 的团队&#xff0c;帮助其赢得 2005 年美国穿越沙漠 DA…...

通过地址获取LONG和LAT并且存入csv

通过地址获取LONG和LAT并且存入csv 1. Address存在Address这个column里&#xff0c;从网上复制&#xff08;如果可以爬虫自动更好&#xff09; 2. 用代码获取GPS&#xff0c;再存入表格 import pandas as pd from geopy.geocoders import Nominatim from time import sleep#…...

Nginx SSL+tomcat,使用request.getScheme() 取到https协议

架构上使用了 Nginx tomcat 集群, 且nginx下配置了SSL,tomcat no SSL,项目使用https和http协议。 发现 request.getScheme() //总是 http&#xff0c;而不是实际的http或https request.isSecure() //总是false&#xff08;因为总是http&#xff09; request.getRemoteAddr(…...

Node.Js+Knex+MySQL增删改查的简单示例(Typescript)

数据库: CREATE DATABASE MyDB; CREATE TABLE t_users (user_id int(11) NOT NULL,user_name varchar(10) NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8; 项目结构: package.json如下&#xff0c;拷贝并替换你们本地的package.json后运行 npm install 命令安装所需要的依赖。…...

机器学习的概览

笔记内容侵权联系删除 机器学习算法 机器学习(包括深度学习分支)是研究“学习算法”的一门学问。所谓“学习”是指:对于某类任务T和性能度量P&#xff0c;一个计算机程序在T上以P衡量的性能随着经验E而自我完善&#xff0c;那么我们称这个计算机程序在从经验E学习。 机器学习…...

方法论-WPS模型(高效沟通和决策分析的框架)

WPS模型&#xff08;What, Problem, Solution&#xff09;是一种高效沟通和决策分析的框架&#xff0c;旨在帮助沟通者清晰、简洁地表达问题和解决方案&#xff0c;特别适用于在复杂或多变的环境中进行清晰的交流。WPS模型的核心是通过以下三个步骤来组织沟通内容&#xff1a; …...

OpenTelemetry 赋能DevOps流程的可观测性革命

作者&#xff1a;天颇 引言 在当今快节奏的软件开发和运维环境中&#xff0c;DevOps 已经成为主流&#xff0c;它通过整合开发和运维流程&#xff0c;推动着软件的快速迭代和持续交付。然而&#xff0c;随着微服务、容器化和云计算等技术的普及&#xff0c;系统复杂性急剧增加…...

子集选择——基于R语言实现(最优子集选择法、逐步回归法、Lasso回归法、交叉验证法)

( a )使用 rnorm() 函数生成预测变量X(n=100)与噪声向量 ϵ \epsilon ϵ(n=100) set.seed(1) x<-rnorm(100)#预测变量X eps<-rnorm(100)#噪声向量$\epsilon$( b ) 生成响应变量Y(n=100),...

Ubuntu24.04挂载磁盘

一、引言 由于几块磁盘每次开机时的编号都不一样&#xff0c;造成了很多麻烦&#xff0c;所有重新挂载磁盘试一试。 参考链接&#xff1a; ubuntu挂载磁盘或U盘Ubuntu添加新硬盘&#xff0c;挂载到根目录下的某个文件中 二、挂载磁盘 1. 查看盘名 sudo fdisk -l sda 代表第…...

使用机器学习优化数据库查询性能

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用机器学习优化数据库查询性能 文章目录 使用机器学习优化数据库查询性能引言数据库查询性能概述查询优化的重要性 机器学习在…...

英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2

我们介绍的 NV-Embed-v2 是一种通用嵌入模型&#xff0c;它在大规模文本嵌入基准&#xff08;MTEB 基准&#xff09;&#xff08;截至 2024 年 8 月 30 日&#xff09;的 56 项文本嵌入任务中以 72.31 的高分排名第一。此外&#xff0c;它还在检索子类别中排名第一&#xff08;…...

HTML面试题(2)

HTML5相比HTML有哪些更新&#xff1f; 语义化更强的HTML元素&#xff1a;引入artitcle、section、nav、header、footer等元素&#xff0c;帮助创建结构更清晰、语义更明确的网页&#xff0c;有利于SEO和内容的可访问性表单控件增强&#xff1a;新增多种表单输入类型&#xff0…...

微服务day07

MQ高级 发送者可靠性&#xff0c;MQ的可靠性&#xff0c;消费者可靠性。 发送者可靠性 发送者重连 连接重试的配置文件&#xff1a; spring:rabbitmq:connection-timeout: 1s # 设置MQ的连接超时时间template:retry:enabled: true # 开启超时重试机制initial-interval: 10…...

芯原科技嵌入式面试题及参考答案

Linux 相关驱动怎么写? 在 Linux 中编写驱动主要有以下步骤。 首先,需要了解设备的硬件特性。这包括设备的工作原理、寄存器地址和功能、中断号等信息。例如,对于一个简单的 GPIO 设备,要知道其数据寄存器、方向寄存器的位置以及读写操作的规则。 然后是模块的初始化部分。…...

二叉树Golang

二叉树 前言 完全二叉树 最底层节点按顺序从左到右排列。 满二叉树 一颗二叉树只有0度和2度的节点。 二叉搜索树 左子树上的所有节点的值均小于根节点的值。右子树上的所有节点的值均大于根节点的值。 平衡二叉搜索树 左右两个子树的高度差的绝对值不超过1 。 二叉树的存储…...

通过css的哪些方式可以实现隐藏页面上的元素?

1&#xff1a;opacity:0 通过将元素的透明度设置为o&#xff0c;实现隐藏效果&#xff0c;但是依然会占用空间并可以进行交互。 2&#xff1a;visibility:hidden 与透明度度为0的方案类似&#xff0c;会占据空间&#xff0c;但不可以进行交互。 3&#xff1a;Overflow:hi…...

微信小程序 === 使用腾讯地图选点

目录 插件介绍 接入指引 相关参数说明 插件错误处理 效果图 permission 插件的作用 添加插件 引入插件代码包 使用插件 页面 js 接口 插件介绍 腾讯位置服务地图选点插件 可以让用户快速、准确地选择并确认自己的当前位置&#xff0c;并将相关位置信息回传给开发者。…...

给AI模型‘打补丁’:用‘上下文提示’和‘查询分解’两招,轻松提升多模态大模型的抗攻击能力

多模态大模型防御实战&#xff1a;用上下文提示与查询分解抵御图像对抗攻击 当你在社交媒体上传一张"猫"的照片&#xff0c;AI系统却识别为"狗"——这种看似无害的错误在医疗影像分析或自动驾驶场景中可能引发灾难。2024年CVPR会议揭示了一个关键发现&…...

Flink源码阅读:双流操作

Window Join我们先回顾一下 window join 的使用方法。DataStream<Tuple2<String, Double>> result source1.join(source2).where(record -> record.f0).equalTo(record -> record.f0).window(TumblingEventTimeWindows.of(Time.seconds(2L))).apply(new Joi…...

游戏服务器检测扣除消耗防算数溢出的安全判断及解决方法

游戏服务器检测扣除消耗防算数溢出的安全判断及解决方法 数量 > (类型最大值 / 价格) 负数存在风险 价格 > (类型最大值 / 数量) || 价格 < (最小值 / 数量&#xff09; 游戏服务器在处理道具消耗时需防止数值溢出问题。当检测扣除消耗时&#xff0c;应进行双重安全判…...

AI 视频生成美女跳舞测评 | 顶级 Prompt实测版(Grok Imagine、Kling AI 3.0、Veo 3.1)

兄弟们&#xff0c;AI 视频生成已经卷到飞起了&#xff01;之前写小黄文靠grok&#xff0c;现在生成“美女舞蹈”视频也得靠它。 今天上手实测截至今天热门的3款视频生成工具&#xff0c;专攻“美女跳舞”这个高难度场景&#xff1a;动作流畅度、人物一致性、性感画面感、提示…...

2026年硕士论文降AIGC率必备工具:4款实测效果对比

试了四五款工具&#xff0c;最后留下来的就这几个。先说结论&#xff1a;降AIGC率这个需求&#xff0c;嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;是目前性价比最高的选择&#xff0c;4.8元/千字&#xff0c;达标率99.26%。 如果对价格不敏感、对知网特别严格&#…...

STM32F407ZGT6最小系统:从原理图到PCB的实战设计解析

1. STM32F407ZGT6最小系统设计入门 第一次接触STM32F407ZGT6最小系统设计时&#xff0c;我也被各种专业术语和复杂的电路图搞得晕头转向。但经过几个项目的实战后&#xff0c;我发现只要掌握几个关键模块&#xff0c;设计一个稳定可靠的最小系统其实并不难。STM32F407ZGT6是STM…...

Excel也能搞定GRR!不用买昂贵软件,这份保姆级模板和计算指南请收好

Excel也能搞定GRR&#xff01;不用买昂贵软件&#xff0c;这份保姆级模板和计算指南请收好 在制造业质量管理中&#xff0c;测量系统分析&#xff08;MSA&#xff09;是确保数据可靠性的基石。但现实情况是&#xff0c;许多中小企业和初创团队面对动辄上万元的专业统计软件只能…...

CRT库链接冲突详解:为什么你的Visual Studio项目会警告LNK4098(含/NODEFAULTLIB使用指南)

CRT库链接冲突深度解析&#xff1a;从原理到实战解决LNK4098警告 当你用Visual Studio编译C项目时&#xff0c;突然蹦出"warning LNK4098: 默认库msvcrtd.lib与其他库的使用冲突"的提示&#xff0c;这就像开车时仪表盘突然亮起的警告灯——它不会立即让引擎熄火&…...

学术场景实战:DeepSeek-OCR-2驱动深求·墨鉴实现论文公式精准提取

学术场景实战&#xff1a;DeepSeek-OCR-2驱动深求墨鉴实现论文公式精准提取 1. 引言&#xff1a;学术研究中的公式提取痛点 如果你是一名理工科的研究生、科研工作者&#xff0c;或者经常需要阅读学术论文&#xff0c;你一定遇到过这样的场景&#xff1a;在PDF论文里看到一个…...

Python数据库操作终极指南:5分钟快速上手dataset轻松管理数据

Python数据库操作终极指南&#xff1a;5分钟快速上手dataset轻松管理数据 【免费下载链接】dataset Easy-to-use data handling for SQL data stores with support for implicit table creation, bulk loading, and transactions. 项目地址: https://gitcode.com/gh_mirrors/…...