针对" AIPAppStartup"的Revit SDK示例已预先构建的代码部分用于执行" OnShutDown" (关闭Revit会话时)或" OnStartup" (当启动Revit会话时),但我希望能够为加载的每个文档运行代码。具体来说,我希望Revit清除与加载的特定模型相关联的临时文件。
我尝试创建一个新结果, 公共Autodesk.Revit.UI.Result OnLoad(UIControlledApplication应用程序),这没有用。我还尝试了另一对On ****的可能性(OnOpen等),这也失败了。
是否有特定的" On *****"结果用来实现我的愿望?
答案 0 :(得分:7)
您正在寻找的事件是OnDocumentOpened,如果您希望它在模型打开后运行,或者OnDocumentOpening,如果您希望它在模型打开之前运行。
您需要将事件处理程序添加到应用程序的OnStartup方法中:
public Result OnStartup(UIControlledApplication application) {
application.ControlledApplication.DocumentOpened += OnDocOpened;
//Rest of your code here...
return Result.Succeeded;
}
private void OnDocOpened(object sender, DocumentOpenedEventArgs args) {
Autodesk.Revit.ApplicationServices.Application app = (Autodesk.Revit.ApplicationServices.Application)sender;
Document doc = args.Document;
//Your code here...
}
您还应该删除应用程序的OnShutdown方法中的事件处理程序:
public Result OnShutdown(UIControlledApplication application) {
application.ControlledApplication.DocumentOpened -= OnDocOpened;
//Rest of your code here...
return Result.Succeeded;
}