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

时间:2016-09-07 07:14:12

标签: autodesk revit-api revit

我在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) 

1 个答案:

答案 0 :(得分:1)

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