gpt4 book ai didi

c# - 从 IExternalApplication 获取当前应用程序和文档 - Revit

转载 作者:行者123 更新时间:2023-11-30 23:15:40 24 4
gpt4 key购买 nike

在执行 IExternalCommand 时,我可以通过 ExternalCommandData 轻松获取应用程序和文档

        UIApplication uiApp = commandData.Application;
Document doc = uiApp.ActiveUIDocument.Document;
Transaction trans = new Transaction(doc);

在执行 IExternalApplication 时,没有 ExternalCommandData 对象。我需要找到当前打开的 Revit 文件的路径。如何通过 IExternalApplication 访问 Document

最佳答案

您也可以这样做(在 IExternalApplication.OnStartup 中),但它依赖于 UIControlledApplication 对象的未记录的功能。我从 Revit 2012 到 2017 一直使用这种技术,所以我想这是一个稳定的假设:

var versionNumber = uiControlledApplication.ControlledApplication.VersionNumber;
var fieldName = versionNumber == "2017" ? "m_uiapplication" : "m_application";
var fi = uiControlledApplication.GetType().GetField(
fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
var uiApplication = (UIApplication)fi.GetValue(uiControlledApplication);

```

想法是使用内省(introspection)来访问UIControlledApplication 对象的非公共(public)字段(m_uiapplication)。这是 UIApplication 类型。

关于c# - 从 IExternalApplication 获取当前应用程序和文档 - Revit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42382320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com