Before Navisworks 2013, we need to use COM API to access viewpoint and saved viewpoint. The state object provides SavedViews which is the collection of the saved viewpoints. Some more relevant objects:
InwOpSavedView: the parent object of the explicit saved view (InwOpView), or folder view (InwFolderview) or animation view (InwOpAnimView), or animation cut (InwOpCutView).
a folder view could contain any types saved views, even sub folder.
an animation view can also contain other type of saved views. But typically, it contains the series of InwOpView or InwOpAnimView.
The enum nwESavedViewType defines which type of subclass an InwOpSavedView is.
eSavedViewType_View
InwOpView.
eSavedViewType_Anim
InwOpAnimView.
eSavedViewType_Cut
InwOpCutView.
eSavedViewType_Folder
InwOpFolderView.
//dump the info of the InwOpView void Info_SaveView(ComApi.InwOpView savedview) { string viewname = savedview.name; ComApi.InwOpAnonView oAnoView = savedview.anonview; ComApi.InwNvViewPoint oViewPoint = oAnoView.ViewPoint; ComApi.InwNvCamera oCamera = oViewPoint.Camera; } // recurse the folder/animation view void recurseGroupView(ComApi.InwOpGroupView parentSavedView) { foreach (ComApi.InwOpSavedView savedview in parentSavedView.SavedViews()) { if (savedview.Type == ComApi.nwESavedViewType.eSavedViewType_View) { Info_SaveView((ComApi.InwOpView)savedview); } else if (savedview.Type == ComApi.nwESavedViewType.eSavedViewType_Folder) { // recurse the folder ComApi.InwOpFolderView oFolderView = (ComApi.InwOpFolderView)parentSavedView; recurseGroupView(oFolderView); } else if (savedview.Type == ComApi.nwESavedViewType.eSavedViewT
ype_Anim) { // recurse the animation ComApi.InwOpAnimView oAnimationView = (ComApi.InwOpAnimView)parentSavedView; recurseGroupView(oAnimationView); } else if (savedview.Type == ComApi.nwESavedViewType.eSavedViewType_Cut) { // ComApi.InwOpCutView oCutView = (ComApi.InwOpCutView)savedview; } else { MessageBox.Show("error!"); } } } // iterate the saved views of the document void DumpSavedView_COMAPI() { ComApi.InwOpState10 oState; oState = ComBridge.State; foreach (ComApi.InwOpSavedView savedview in oState.SavedViews()) { if (savedview.Type == ComApi.nwESavedViewType.eSavedViewType_View) { Info_SaveView((ComApi.InwOpView)savedview); } else if (savedview.Type == ComApi.nwESavedViewType.eSavedViewType_Folder) { // recurse the folder ComApi.InwOpFolderView oFolderView = (ComApi.InwOpFolderView)savedview; recurseGroupView(oFolderView); } else if (savedview.Type == ComApi.nwESavedViewType.eSavedViewType_Anim) { // recurse the animation ComApi.InwOpAnimView oAnimationView = (ComApi.InwOpAnimView)savedview; recurseGroupView(oAnimationView); } else if (savedview.Type == ComApi.nwESavedViewType.eSavedViewType_Cut) { ComApi.InwOpCutView oCutView = ComApi.InwOpCutView)savedview; } else { MessageBox.Show("error!"); } } }
To set an saved view to the current view, the code could be:
// assume we got an InwOpView from the saved view //ComApi.InwOpView savedview; // apply it to the current view oState.ApplyView(savedview);


Leave a Reply