【Revit二次开发学习笔记】选取元素之先选择元素后执行命令

2023-11-08

第一步:

写代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;

namespace ClassLibrary3
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]
    public class Class1:IExternalCommand
    {
        public Result Execute(ExternalCommandData revit, ref string message, ElementSet elements)
        {
            try
            {
                //执行前先选择一些元素

                //取到当前文档
                UIDocument uidoc = revit.Application.ActiveUIDocument;
                //取到当前文档的选择集
                Selection selection = uidoc.Selection;
                //因为API版本的变化,所以这里不能直接获取到元素了
                //查到了一篇很好的文章附网址:https://www.jianshu.com/p/a774cd7ebc07
                //ElementSet collection = selection.Elements;
                ElementSet collection = new ElementSet();
                foreach(ElementId elementId in uidoc.Selection.GetElementIds())
                {
                    collection.Insert(uidoc.Document.GetElement(elementId));
                }

                if ( 0 == collection.Size)
                {
                    //如果执行前,没有选择元素
                    TaskDialog.Show("Revit", "你没选元素");
                }
                else
                {
                    string info = "所选的元素类型为:";
                    foreach(Element elem in collection)
                    {
                        info += "\n\t" + elem.GetType().ToString();
                    }

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

            return Result.Succeeded;
        }
    }
}

这次因为调用的是  IExternalCommand  所以需要注意一下的就是在 写 addin 文件的时候 需要在类型上写 Command

 

其中有一个问题是,因为API版本更新的原因,有一个函数是不能直接使用了

贴出一个解决方案的网址链接:https://www.jianshu.com/p/a774cd7ebc07

 

现在不能直接选取元素,只能选取到元素的ID,然后再通过

uidoc.Document.GetElement(elementId)

找到对应的元素

 

第二步:

检验效果

 

 

 

完成!

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

【Revit二次开发学习笔记】选取元素之先选择元素后执行命令 的相关文章

  • 学习记录3:一个按键控制两盏灯,亮灯循环

    单片机SC95F8617 一个按键控制两盏灯 要求是按一下按键 1亮2灭 再按一下1灭2亮 再按一下1亮2亮 再按一下1灭2灭 然后又1亮2灭循环 其实列出来会发现这个亮灯的规律是一次转换一个灯 一次转换两个灯 循环 如下表所示 第一次的转
  • linux下重新安装python

    linux下重新安装python 1 移除旧版本 之前版本过低 yum erase y python3 2 下载新版本安装包 在自己的电脑上下载好再传输到云服务器上 直接在服务器上下载 wget https www python org f
  • 照片怎么换背景?这几个方法或许能帮到你

    大学上就业指导课的时候 老师让我们制作一个自己的简历 并要求了头像需要是蓝底的一寸照 课后 在制作简历的过程中 我并没有被简历的内容给难住 而是被如何获得一个蓝底的证件照给拖了后腿 这时候 我的舍友就给我介绍了几个方法来实现抠图换纯色背景
  • parse:uParse修复​​版,优化表格,css等,html富文本加载

    https ext dcloud net cn plugin id 364 自己搞微信小程序遇到的 uniapp 搞得 后台textarea富文本便捷器 录入的客户端显示 试了好几种都不行 尤其是表格图片排版的 https ext dclo
  • 【C语言】如何自动控制输出空格的个数

    include
  • ant design Table实现可编辑的单元格

    欢迎点击领取 前端面试题进阶指南 前端登顶之巅 最全面的前端知识点梳理总结 分享一个使用比较久的 需求 最近接到的一个需求 在table栏中实现属性的可编辑单元格 并且table内部可动态删减的单元格 外部操作新增或删除一行新旧数据的操作
  • idea怎么转换为中文

    搜索chinses 然后安装后 重启idea即可
  • 微信小程序发布审核基本步骤(带图)

    本文作为烂笔头记录或小白感性认识或为客户做基础说明 复杂性时间等 大佬请勿费神 微信小程序源码编辑与调试略 微信小程序注册略 一 安装微信开发者工具 微信开发者工具下载地址与更新日志 微信开放文档 二 绑定微信小程序开发者 1 登录微信公众
  • springBoot+mybatisPlus表名字段自动映射,时间字段值自动注入,序列化java对象到json显示时间

    mybatisPlus依赖引入
  • CTF.show:misc入门1-23

    八神爷爷出的题 很适合新手入门 我只是记录一下自己做题过程 没啥技术含量 目录 图片篇 基础操作 misc1 misc2 misc3 misc4 图片篇 信息附加 misc5 misc6 misc7 misc8 misc9 misc10 m
  • web开发中cab文件 使用

    百度百科中有cab文件的介绍 连接为http baike baidu com view 534677 htm 简单来说是压缩包文件 存储多个压缩文件的单个压缩包文件 这些文件通常用于软件安装 还用来减小文件大小和缩短 Web 内容的相关下载
  • java添加字符串数组_java – 如何将字符串数组的元素添加到字符串数组列表?...

    你已经有了内置的方法 List species Arrays asList speciesArr 注意 您应该使用List lt String gt 不是ArrayList lt String gt 种类 Arrays asList返回一个
  • 支付宝固定备注固定金额收款码

    目录 文章目录 目录 源码说明 独立项目结构 页面效果 部分源码 云盘下载 源码说明 提供支付宝收款码生成源码 包括生成的链接原理和生成二维码的代码都有 收款码特点是 固定金额 固定备注 独立项目结构 页面效果 部分源码
  • MyBatisPlus学习(1)—— 初始化环境配置 + BaseMapper

    一 添加依赖 首先创建springboot工程 然后在pom xml中添加mybatis plus相关依赖
  • BottomNavigationView取消水波纹动画

    BottomNavigationView取消水波纹动画 不得不说 BottomNavigationView 以下简称BNV fragment ViewPager用来实现一些基础的项目效果实在是不错 但BNV自带的缩放动画 水波纹动画使得用户
  • 解决用C#操作mysql数据库出错无法回滚的问题

    mysql同时执行多条命令 部分成功部分失败 返回的结果是操作失败 但是成功的部分不会自动回滚 网上搜到解决方法 可以判断返回值 只要有一条语句操作失败返回值就会是0 此时调用回滚 相关代码有很多 可以百度到 我一开始按照上述流程始终无法回
  • 什么是死锁?如何避免和解决死锁问题?

    1 什么是死锁 如何避免和解决死锁问题 死锁是指在多线程或多进程环境中 两个或多个进程 或线程 互相持有对方所需资源 导致它们都无法继续执行的一种状态 死锁问题通常涉及以下四个必要条件 互斥条件 资源只能被一个进程 或线程 占用 请求与保持
  • ContextCapture导入点云进行重建

    ContextCapture导入点云进行重建 ContextCapture导入点云进行重建 点云 PointCloud 导入点云 静态站点云 移动测量点云 输入文件 数据属性 字段 Fields ContextCapture的坐标系 管理点
  • 理解Java中的抽象

    在计算机科学中 抽象是一种过程 在这个过程中 数据和程序定义的形式与代表的内涵语言相似 同时隐藏了实现细节 抽象 一个概念或者想法不和任何特定的具体实例绑死 目录 什么是抽象 抽象的形式 如何在Java中使用抽象 什么是抽象 简单地说 抽象

随机推荐

  • SpringBoot事务注解@transactional无法生效的七个场景

    1 数据库引擎不支持事务 这里以 MySQL 为例 其 MyISAM 引擎是不支持事务操作的 InnoDB 才是支持事务的引擎 一般要支持事务都会使用 InnoDB 2 没有被 Spring 管理 Service public class
  • ugui非常不友好!自定义控件创建流程

    layout post title Unity ugui非常不友好 自定义控件创建流程 key 201905232043 tags unity ugui 刚接触unity ugui 以下几点非常不友好 好的工具软件都有顺手的快捷键 为有如此
  • 强烈推荐:网工利器PNETLab模拟器

    前言 我们在学习和实践网络技术的时候 很少有采用真的交换机 路由器 所以这时候就需要虚拟的网络设备来搭建虚拟的网络环境 以给我们的学习和实践带来便利 此模拟器与eve相识 涵盖了很多组件 不仅可以模拟各种网络设备比如cisco junipe
  • Linux性能优化实战 47-48 服务器丢包的检测思路

    一 消息收发流程图及丢包可能原因 1 在网卡收包后 环形缓冲区可能会因为溢出而丢包 2 在链路层 可能会因为网络帧校验失败 QoS 等而丢包 3 在 IP 层 可能会因为路由失败 组包大小超过 MTU 等而丢包 4 在传输层 可能会因为端口
  • js数值进制转换

    int toString 16 converts int to hex eg 12 gt C int toString 8 converts int to octal eg 12 gt 14 parseInt string 16 conve
  • LeetCode 495. 提莫攻击

    题目链接 点击这里 AC代码 class Solution public int findPoisonedDuration vector
  • 用频谱仪测量晶体频率的方法

    摘要 用频谱仪测量晶体的时钟频率 查看时钟的频偏 关键字 频谱仪晶体频率频偏 一 背景与现象 怎样精确的测量晶体的时钟频率 是每一个硬件工程师所面临测量问题 用频率计测试晶体频率 又担心探头本身的寄生电容会影响晶体本身的负载电容 造成测试的
  • PGSQL 导出数据库表结构

    之前要将数据库的表结构给做成markdow来写开发设计文档或是接口文档 去找各种开源工具 组件 整理了一个SQL语句可以查询出表结构 样式如下 SQL语句 里面的jiahui表示数据库的schema 默认是public SELECT CAS
  • R语言学习笔记6

    13 初级统计学 描述原始数据 数值型变量 数字型变量 是将观测值以数值形式存储的变量 连续型变量 可以在某个区间取任何值 任何位数 离散型变量 只能取离散型数据 在取值范围里 取得是有限个数 分类变量 两类 名义变量 不能按照逻辑顺序排列
  • js数据结构之栈

    1 栈数据结构 栈是一种遵从后进先出 LIFO 原则的有序集合 新添加或待删除的元素都保存在栈的同一端 称作栈顶 另一端就叫栈底 在栈里 新元素都靠近栈顶 旧元素都接近栈底 在现实生活中也能发现许多栈的例子 例如 下图中的一摞书 栈也被用在
  • springcloud-gateway网关聚合swagger实现多个服务接口切换

    正经学徒 佛系记录 不搞事情 springcloud是由多个不同的springboot服务组成的 微服务使用swagger有两种方法 如下 方法一 不推荐 但是是方法二的前置条件 对每个需要生成接口的项目集成swagger 具体方法点击查看
  • VM下ubuntu14.04安装编译linux-2.6.34内核

    Linux2 6所有内核下载地址 http www kernel org pub linux kernel v2 6 选择 1 解压 gf ubuntu ls Desktop Downloads linux 2 6 34 tar bz2 P
  • was配置mysql数据源另一种方式

    1 添加JDBC驱动程序 打开was控制台 资源 JDBC提供程序 新建 2 配置JDBC参数 选择数据库类型为 用户自定义 数据库类型 com mysql jdbc jdbc2 optional MysqlXADataSource 名称
  • nRF52832 — 1.44寸 TFT屏

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说的
  • 关于:(.text+0x21): undefined reference to `shm_open'问题

    C programming in the UNIX environment的编程手册 一般都会为进程间用共享内存的方法通信提供两组方法 1 POSIX定义的 int shm open const char name int oflag mo
  • 开源数据集分类汇总(医学,卫星,分割,分类,人脸,农业,姿势等)

    本文汇总了医学图像 卫星图像 语义分割 自动驾驶 图像分类 人脸 农业 打架识别等多个方向的数据集资源 均附有下载链接 该文章仅用于学习记录 禁止商业使用 1 医学图像 疟疾细胞图像数据集 下载链接 http suo nz 2VQTUt 皮
  • Sqoop 使用详解

    Sqoop 概述 Sqoop 是Apache 旗下的一款开源工具 用于Hadoop与关系型数据库之间传送数据 其核心功能有两个 导入数据和导出数据 导入数据是指将MySQL Oracle等关系型数据库导入Hadoop的HDFS Hive H
  • C#(Unity3D)数值分析-牛顿(迭代)法

    最近需要用此方法解决一元五次方程求解问题 所以学习了下 在此记录一下 此方法的产生 是由于很多方程没有通解公式 所以求解只能通过数值方法 方法有很多 参见 数值分析 类似书有很多 牛顿法 这里引用书籍上所述 设方程 f x 0 其中有近似根
  • 多线程:线程安全与同步

    线程安全问题 线程安全问题产生的三个必要条件 多线程环境中 有共享数据 成员变量 而非局部变量 栈中是线程独立的 多个线程操作 增删改 了共享数据 单线程 以及 多线程在没有访问共享数据的情况下 是不会产生线程安全问题的 一旦多线程访问了共
  • 【Revit二次开发学习笔记】选取元素之先选择元素后执行命令

    第一步 写代码 using System using System Collections Generic using System Linq using System Text using System Threading Tasks u