2

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

我尝试创建一个新结果,公共 Autodesk.Revit.UI.Result OnLoad(UIControlledApplication application),但这不起作用。我还尝试了另外几个 On**** 可能性(OnOpen 等),但也失败了。

是否有特定的“On*****”结果可以满足我的愿望?

4

1 回答 1

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;
}
于 2014-05-14T16:17:13.700 回答