Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#在API中加载Revit文件?_C#_Revit Api_Revit_Revit 2015 - Fatal编程技术网

如何使用C#在API中加载Revit文件?

如何使用C#在API中加载Revit文件?,c#,revit-api,revit,revit-2015,C#,Revit Api,Revit,Revit 2015,我想在C#code中加载*.api文件。我正在尝试从Revit文件中导出图像,以用于c#应用程序中的特定视图。问题是如何从revit(*.rvt)文件中获取ExternalCommandData 我想浏览所有*.rvt文件,并从Windows窗体调用上述方法 Revit只能在进程中运行插件,因此不能从WinForm应用程序使用其API。实际上,Revit在DLL代码中调用了您提到的执行方法 我刚刚在Revit API讨论论坛上回答了您相应的问题: 从外部上下文直接调用Revit API是非法的

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


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

Revit只能在进程中运行插件,因此不能从WinForm应用程序使用其API。实际上,Revit在DLL代码中调用了您提到的执行方法

我刚刚在Revit API讨论论坛上回答了您相应的问题:

从外部上下文直接调用Revit API是非法的,过去是,而且一直都是非法的

只有在有效的Revit API上下文中才能使用Revit API

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

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

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

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

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

在过去的Revit API讨论论坛和建筑编码人员中,已多次深入回答和讨论了此问题

上的建筑规范主题组中提供了许多示例和进一步解释

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


如果您只想从RVT或RFA文件中导出图像,您的需求可能已经完全满足。有关如何以及为什么这样做的详细信息,请参阅我的博客文章。

我在一篇关于这个主题的博客文章中总结并增强了我的答案。
public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit, 
                                        ref string message, ElementSet elements)
{
    UIApplication uiapp = revit.Application;
}