我想用C#代码加载*.api文件。我正在尝试为c#应用程序中的特定视图导出Revit文件中的图像。问题是从revit (*.rvt)文件中获取ExternalCommandData。
public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit,
ref string message, ElementSet elements)
{
UIApplication uiapp = revit.Application;
}我想浏览所有的*.rvt文件,并从窗体中调用上述方法。
发布于 2017-05-09 18:25:52
我刚刚在Revit API讨论论坛中回答了您的相应主题:
https://forums.autodesk.com/t5/revit-api-forum/how-to-load-revit-file-in-api-using-c/m-p/7071015
从外部上下文直接调用Revit API是非法的,过去如此,而且一直都是非法的。
除非在有效的Revit API上下文中,否则无法使用Revit API。
这样的上下文仅由Revit回调方法提供。
您需要订阅Revit事件,如外部命令执行方法。
在事件处理程序中,可以使用Revit API。
还可以使用Revit API设置可从非Revit-API上下文引发的外部事件,例如独立的外部应用程序。
ModelessDialog/ModelessForm_ExternalEvent Revit SDK示例演示了这一点。以下是您需要了解的所有关于the Revit SDK and getting started with the Revit API的信息。
过去,Revit API讨论论坛和建筑编码器多次回答并深入讨论了此问题。
在Idling and External Events for Modeless Access and Driving Revit from Outside上的构建规范主题组中提供了许多示例和进一步的解释。
以下是一些针对类似问题的Revit API论坛讨论主题:
发布于 2017-05-09 20:05:23
如果您只想从RVT或RFA文件中导出图像,Forge可能已经完全满足了您的需求。有关如何以及为什么这样做的详细信息,请参阅我在External Access to the Revit API上的博客文章。
发布于 2017-05-08 23:20:59
Revit只能运行进程中的插件,因此您不能从WinForm应用程序使用其应用程序接口。您提到的Execute方法实际上是由Revit在DLL代码上调用的。
https://stackoverflow.com/questions/43849917
复制相似问题