RevitAPI:监听文档改变ControlledApplication/Application.DocumentChanged事件

本文主要是介绍RevitAPI:监听文档改变ControlledApplication/Application.DocumentChanged事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

很多时候,我想通过API获取上一次操作有哪些对象被创建、修改或者删除了。或者想监听文档的改变事件,一旦改变发生,程序就做一些特定的事情,例如,把这些改变记录在数据库中,再和其他应用进行交流。

这个时候,就要用到ControlledApplication.DocumentChanged或者Application.DocumentChanged事件了。

这里,我先推荐大家学习一个SDK里面的例子,名字就叫:DocumentChanged,它用来把所有的对文档的修改记录下来,显示在一个表格里面:


接下来我们看怎么使用。


首先,我们需要注册这个事件,通常情况下,会在IExternalApplication里面注册,因为它是ControlledApplication或Application类的事件,如果在IExternalCommand里面注册的话,当Execute函数退出的时候,需要注销这个事件,否则可能造成事件无法管控。

但是在测试环境的时候,我们可以使用IExternalCommand来注册事件,这样比较方便使用AddInManager来加载和调试。

这里我们就以IExternalApplication作为例子:

public class DocChangedRegistryApp : IExternalApplication
{public Result OnStartup(UIControlledApplication application){//注册事件application.ControlledApplication.DocumentChanged+= ControlledApplication_DocumentChanged;return Result.Succeeded;}public Result OnShutdown(UIControlledApplication application){//注销事件application.ControlledApplication.DocumentChanged-= ControlledApplication_DocumentChanged;return Result.Succeeded;}void ControlledApplication_DocumentChanged(object sender, DocumentChangedEventArgs e){var doc = e.GetDocument(); //获取对应的文档对象var added = e.GetAddedElementIds(); //获取增加的对象var deleted = e.GetDeletedElementIds(); //获取删除的对象var modified = e.GetModifiedElementIds(); //获取修改的对象//自己的后续程序}
}

可以看到,在事件的handler函数里面,我们可以获取对应的Document对象,以及增删改的元素的Id,获得这些对象之后,几乎可以做任何事情了。


这篇关于RevitAPI:监听文档改变ControlledApplication/Application.DocumentChanged事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/333793

相关文章

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.