public override Tuple <string, string> getSnapshotAndViewpoint(int elemCheck) { if (!(uidoc.ActiveView is View3D || uidoc.ActiveView is ViewSheet || uidoc.ActiveView is ViewPlan || uidoc.ActiveView is ViewSection || uidoc.ActiveView is ViewDrafting)) { MessageBox.Show("I'm sorry,\nonly 3D and 2D views are supported.", "Error!", MessageBoxButton.OK, MessageBoxImage.Error); return(null); } string tempPath = Path.Combine(Path.GetTempPath(), "BCFtemp", Path.GetRandomFileName()); string issueFolder = Path.Combine(tempPath, Guid.NewGuid().ToString()); if (!Directory.Exists(issueFolder)) { Directory.CreateDirectory(issueFolder); } Guid viewpointGuid = Guid.NewGuid(); string snapshotFilePath = Path.Combine(issueFolder, string.Format("{0}.png", viewpointGuid.ToString())); string viewpointFilePath = Path.Combine(issueFolder, string.Format("{0}.bcfv", viewpointGuid.ToString())); // save snapshot ImageExportOptions options = new ImageExportOptions(); options.FilePath = snapshotFilePath; options.HLRandWFViewsFileType = ImageFileType.PNG; options.ShadowViewsFileType = ImageFileType.PNG; options.ExportRange = ExportRange.VisibleRegionOfCurrentView; options.ZoomType = ZoomFitType.FitToPage; options.ImageResolution = ImageResolution.DPI_72; options.PixelSize = 1000; doc.ExportImage(options); // save viewpoint VisualizationInfo vi = window.generateViewpoint(elemCheck); XmlSerializer serializerV = new XmlSerializer(typeof(VisualizationInfo)); Stream writerV = new FileStream(viewpointFilePath, FileMode.Create); serializerV.Serialize(writerV, vi); writerV.Close(); return(new Tuple <string, string>(snapshotFilePath, viewpointFilePath)); }