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