2

我想在代码中加载*.api文件。C#我正在尝试从 Revit 文件中导出图像以获取 c# 应用程序中的特定视图。问题是从 revit ( *.rvt) 文件中获取 ExternalCommandData。

public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit, 
                                        ref string message, ElementSet elements)
{
    UIApplication uiapp = revit.Application;
}

我想浏览所有*.rvt文件并从 Windows 窗体调用上述方法。

4

3 回答 3

3

我刚刚在 Revit API 论坛中回答了您相应的帖子:

https://forums.autodesk.com/t5/revit-api-forum/how-to-load-revit-file-in-api-using-c/mp/7071015

从外部上下文直接调用 Revit API 是、过去和一直都是非法的。

除非在有效的 Revit API 上下文中,否则永远不能使用 Revit API。

此类上下文仅由 Revit 回调方法提供。

您需要订阅 Revit 事件,例如外部命令 Execute 方法。

在事件处理程序中,可以使用 Revit API。

您还可以使用 Revit API 设置可以从非 Revit-API 上下文引发的外部事件,例如独立的外部应用程序。

ModelessDialog/ModelessForm_ExternalEvent Revit SDK 示例演示了这一点。以下是您需要了解的有关 Revit SDK 和 Revit API 入门的所有信息。

过去,在 Revit API 讨论论坛和 The Building Coder 中,这个问题已被多次深入地回答和讨论过。

关于无模式访问和从外部驱动 Revit 的空闲和外部事件的建筑规范主题组中提供了许多示例和进一步的解释。

以下是解决类似问题的一些 Revit API 论坛讨论主题:

于 2017-05-09T10:25:52.213 回答
1

如果您只想从 RVT 或 RFA 文件中导出图像,那么Forge可能已经完全满足了您的需求。有关如何以及为什么的完整详细信息,请参阅我关于Revit API 的外部访问的博客文章。

于 2017-05-09T12:05:23.120 回答
0

Revit 只能在进程内运行插件,因此您不能从 WinForm 应用程序使用它的 API。您提到的Execute方法实际上是由 Revit 在 DLL 代码上调用的。

于 2017-05-08T15:20:58.570 回答