Revit API 开发 (2): 显示选中的图元(element)

2023-10-26

*如何创建一个Revit AddIn 项目参考:Revit API 开发 (1): Hello World

  1. 重载IExternalCommandExecute方法。
  2. 通过UIApplication.ActiveUIDocument.Selection.GetElementIds() 得到被选中的elementId
  3. 创建一个**.addin**文件,参考Revit API 开发 (1): Hello World

代码如下:
(注意在执行这个命令之前,需要先选中一些elements。)

using System;
using Autodesk.Revit;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using System.Collections.Generic;

namespace Revit_Snippets
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.ReadOnly)]
    public class Document_Selection : IExternalCommand
    {
        public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData,
            ref string message, ElementSet elements)
        {
            try
            {
                // 得到当前文档的句柄。注意commandData通常是我们和Revit交互的中介。
                UIDocument uidoc = commandData.Application.ActiveUIDocument;
                
                // 得到当前的选择集,然后从选择集中得到已经选中的element id。
                Selection selection = uidoc.Selection;
                ICollection<ElementId> selectedIds = uidoc.Selection.GetElementIds();

                if (0 == selectedIds.Count)
                {
                    // 没有被选中的element。
                    TaskDialog.Show("Revit","You haven't selected any elements.");
                }
                else
                {
                    // 打印所有选中element的id。
                    String info = "Ids of selected elements in the document are: ";
                    foreach (ElementId id in selectedIds)
                    {
                       info += "\n\t" + id.IntegerValue;
                    }

                    TaskDialog.Show("Revit",info);
                }
            }
            catch (Exception e)
            {
                message = e.Message;
                return Autodesk.Revit.UI.Result.Failed;
            }

            return Autodesk.Revit.UI.Result.Succeeded;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Revit API 开发 (2): 显示选中的图元(element) 的相关文章

  • 将运算符 << 添加到 std::vector

    我想添加operator lt lt to std vector
  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • Exit() 时是否调用基本对象析构函数?

    我意识到这个问题已经出现过几次 但我试图获得上述问题的明确答案 但我不断遇到相互矛盾的信息 我需要知道的是 当我使用 exit 时 基本类对象是否被破坏 我知道需要删除动态内存 但我的意思更像是 include
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • CompletableFuture使用详解

    https blog csdn net admin123404 article details 111168902
  • Centos7.9搭建kafka-3.2.0集群,三台机器组成,并安装安装eagle 监控

    目录 1 准备工作 2 搭建zookeeper集群 3 搭建kafka集群 4 测试kafka集群 4 1 命令测试 4 2 java代码测试 5 安装eagle 监控 1 准备工作 kafka 3 2 0的单机安装教程如下 CentOS7
  • MySQL的全连接

    从这篇博客开始 从高端大气的计算机视觉方向转行做JAVA开发了 接下来的博客就是JavaJavaJava了没有世界上最好用的pythonpythonpython 由于MySQL不支持FULL JOIN 所以 需要使用UNION来实现全连接
  • 一、多路复用

    1 什么是多路复用 数据通信系统或计算机网络系统中 传输媒体的带宽或容量往往会大于传输单一信号的需求 为了有效地利用通信线路 希望一个信道同时传输多路信号 这就是所谓的多路复用技术 Multiplexing 采用多路复用技术能把多个信号组合
  • 第三章 Jinja2模板

    第三章 Jinja2模板 在前面的实例中 视图函数的主要作用是生成请求的响应 这是最简单请求 实际上 视图函数有两个作用 处理业务逻辑 返回响应内容 在大型应用中 把业务逻辑和表现内容放在一起 会增加代码的复杂度和维护成本 模板其实是一个包
  • 因误删文件导致CentOS7开机卡死无法进入图形登录界面

    目录 1 背景 2 解决步骤 1 背景 这几天在清理电脑 需要删除虚拟机 为此写下了Linux系统下卸载VMware Workstation软件 nanke yh的博客 CSDN博客 但是同时怕有残留 自己全局搜索了vm 删除了部分带有vm
  • SpringBoot之整合Shiro(最详细)

    1 SpringBoot整合Shiro思路 2 环境搭建 2 1 创建项目 2 2 引入依赖 pom xml
  • 微信小程序html2canvas,微信小程序之Canvas填坑

    1用能境战求道 重件开又是正易里是了些之框 WXML CANVAS隐藏问求圈分件圈浏第用代是水刚道 的它还题 2需朋者说上事是础一发一开程和开数的目前间 JS CANVAS 新直能分支调二浏页器朋代说 事刚绘制图片 这里要注意的遇新是直朋能
  • [npm] npx 介绍与使用说明

    npm npx 介绍与使用说明 npm 的由来 npx 是什么 npx 特点 npx 的特点 项目安装包的使用 全局安装包的避免 指定工具包版本 no install 参数和 ignore existing 参数 使用不同版本的 node
  • linux开启vt虚拟化,VT虚拟化如何开启

    VT虚拟化如何开启 VT是什么意思 VT虚拟化怎么开启呢 下面小编为大家分享VT虚拟化开启技巧 欢迎大家参考 VT是什么意思 VT是英文virtualizationtechnology的缩写 其意思是CPU虚拟化技术 我们安装的手游助手就是
  • 【机器学习】如何根据数据集选择适合的模型

    Is it because we have many features in our data sheet 因为我们的数据表中有很多特征吗 Or is it because the feature list does not only co
  • SpringBoot(四)SpringBoot搭建简单服务端

    通过之前的几篇文章相信大家已经对SpringBoot项目开发有了一个基本的了解 本篇 介绍下如何使用SpringBoot搭建一个简单的服务端 实现一个新用户注册的场景 供前端和移动端去使用 本篇需要你对SpringBoot的starter
  • Windows常用命令整理

    之前写了一篇关于Windows快速打开服务 陌客依天涯的博客 CSDN博客 服务快捷键 的文章 有表示windows还有很多常用的 那就整理一下 分享跟多点 希望对大家有用 1 mstsc 快速开启远程连接客户端 2 regedit 快速打
  • 节流防抖详解及代码实现

    防抖 原理 在事件被触发n秒后再执行回调 如果在这n秒内又被触发 则重新计时 适用场景 按钮提交 防止多次提交按钮 只执行最后提交的一次 搜索框联想 防止联想发送请求 只发送最后一次输入 防抖小例子
  • C++打开特定编码格式的文件(utf-8)

    FileEncoding cpp 定义控制台应用程序的入口点 include stdafx h include
  • 具身智能综述和应用(Embodied AI)

    什么是具身智能 目前人工智能的进展 在诸多数据源和数据集 Youtube Flickr Facebook 机器计算能力 CPU GPU TPU 的加持下 已经在CV NLP上取得了许多任务 如目标检测 语义分割等 的重大进展 但目前大部分深
  • 一定要先看!Kubernetes+KubeSphere+DevOps的安装与踩坑

    1 安装 本人于2020 9安装的k8s 不同时间段的官方资料会有变动 从而使初学者很抓狂 比如链接404等 所以一定要先看我这篇 尽量一次全部安装成功 不然重装又会出现许多疑难杂症 官方安装文档 首先 我按照文档一步一步操作 前面都没有问
  • 一手好SQL是如何练成的

    一手好SQL是如何练成的 一 Mysql性能 1 1 最大数据量 1 2 最大并发数 1 3 查询耗时0 5秒 1 4 实施原则 二 数据表设计 2 1 数据类型 2 1 避免空值 2 2 text类型优化 三 索引优化 3 1 索引分类
  • 怎么解决java.lang.NoClassDefFoundError错误

    怎么解决java lang NoClassDefFoundError错误 ClassNotfoundException VS NoClassDefFoundError ClassNotfoundException时在编译时JVM加载不到类或
  • Revit API 开发 (2): 显示选中的图元(element)

    如何创建一个Revit AddIn 项目参考 Revit API 开发 1 Hello World 重载IExternalCommand的Execute方法 通过UIApplication ActiveUIDocument Selectio