Revit C#运行代码“OnShutDown”和“OnStartup”

时间:2014-05-14 15:19:33

标签: c# startup revit-api

针对" AIPAppStartup"的Revit SDK示例已预先构建的代码部分用于执行" OnShutDown" (关闭Revit会话时)或" OnStartup" (当启动Revit会话时),但我希望能够为加载的每个文档运行代码。具体来说,我希望Revit清除与加载的特定模型相关联的临时文件。

我尝试创建一个新结果, 公共Autodesk.Revit.UI.Result OnLoad(UIControlledApplication应用程序),这没有用。我还尝试了另一对On ****的可能性(OnOpen等),这也失败了。

是否有特定的" On *****"结果用来实现我的愿望?

1 个答案:

答案 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;
}