Revit 使用 Revit API 2014 激活 3D 视图

Revit Activate 3D View using Revit API 2014

我在 Idling 事件处理程序中使用 Revit API 2014 打开了一个 Revit 文档。之后,我尝试激活 3D 视图,但遇到一些异常(暂时禁用设置活动视图)。有什么办法可以解决这个异常吗?请参考下面的代码和日志输出。谢谢

注意:无模型对话框激活 3D 视图没有任何问题。

激活 3D 视图的代码片段:

Document doc = uiApp.ActiveUIDocument.Document;
FilteredElementCollector viewCollector = new FilteredElementCollector(doc);
ElementClassFilter viewFilter = new ElementClassFilter(typeof(Autodesk.Revit.DB.View3D));
viewCollector.WherePasses(viewFilter);

try
{
   foreach (Autodesk.Revit.DB.View3D vw in viewCollector)
   {
      if (vw.IsValidObject && !vw.IsTemplate)
      {
            uiApp.ActiveUIDocument.ActiveView = vw;
            break;
       }
    }
}  

catch (Exception e)
{
      throw e;
}
finally
{
      viewCollector.Dispose();
      viewFilter.Dispose();
}

日志文件的最后几行:

' 1:< ::10:: Delta VM: Avail -27 -> 8384734 MB, Used +4 -> 437 MB; RAM: Avail -13 -> 3329 MB, Used +5 -> 528 MB 
' C 07-Sep-2016 12:17:22.868;   1:< Exception in exportToObj() method :: Setting active view is temporarily disabled.
' at RevitCommandListener.RevitCommandListenerService.OpenAndActivate3DView(UIApplication uiApp)
' at RevitCommandListener.RevitCommandListenerService.exportToObj(UIApplication uiApp) 

我会在 Idling 事件处理程序之外调用更改视图。你还能把它放在哪里?进入稍后调用的某些方法,并且不是空闲事件处理程序。我想到的一种可能性是实现一个外部命令 X,它设置视图并在空闲事件处理程序中调用 PostCommand 以在稍后的时间点启动 X。请让我们知道这是否更好。谢谢。