public void MultiLayer() { var layer1 = new Layer() { Color = new Color(0, 1, 0), Transparency = 0.5f, Name = "Layer Number One" }; Context.Current.Layers.Add(layer1); var layer2 = new Layer() { Color = new Color(0, 0, 1), Name = "Layer Number Two" }; Context.Current.Layers.Add(layer2); var bodies = TestGeomGenerator.CreateBoxCylinderSphere(); bodies[0].Layer = layer1; bodies[1].Layer = layer2; bodies[2].Layer = layer2; Context.Current.ViewportController.ZoomFitAll(); var u3d = U3dBodyExporter.Export(bodies); Assert.IsNotNull(u3d); Assert.That(u3d.Length > 0); AssertHelper.IsSameTextFile(Path.Combine(_BasePath, "MultiLayer.u3d"), u3d, AssertHelper.TextCompareFlags.IgnoreFloatPrecision); }
//-------------------------------------------------------------------------------------------------- #endregion #region IBodyExporter bool IBodyExporter.DoExport(string fileName, IEnumerable <Body> bodies) { bool result; using (new ProcessingScope(null, "Exporting bodies to Universal 3D File")) { result = _WriteToFile(fileName, U3dBodyExporter.Export(bodies)); } return(result); }
public void OrientedNormals() { var body = TestData.GetBodyFromBRep(Path.Combine(_BasePath, "OrientedNormals_Source.brep")); Context.Current.ViewportController.ZoomFitAll(); var u3d = U3dBodyExporter.Export(new [] { body }); Assert.IsNotNull(u3d); Assert.That(u3d.Length > 0); AssertHelper.IsSameTextFile(Path.Combine(_BasePath, "OrientedNormals.u3d"), u3d, AssertHelper.TextCompareFlags.IgnoreFloatPrecision); }
public void MeshWrite() { var bodies = TestGeomGenerator.CreateBoxCylinderSphere(); Context.Current.ViewportController.ZoomFitAll(); var u3d = U3dBodyExporter.Export(bodies); Assert.IsNotNull(u3d); Assert.That(u3d.Length > 0); AssertHelper.IsSameTextFile(Path.Combine(_BasePath, "MeshWrite.u3d"), u3d, AssertHelper.TextCompareFlags.IgnoreFloatPrecision); }
//-------------------------------------------------------------------------------------------------- MemoryStream _Export(IEnumerable <Body> bodies) { try { var u3dSource = U3dBodyExporter.Export(bodies); if (u3dSource == null) { Messages.Error("Mesh exporting failed, cannot generate 3D PDF."); return(null); } _Document = new PdfDomDocument { Version = PdfVersion.PDF_1_6 }; _Page = _Document.AddPage(); var pageRect = new[] { 0, 0, PaperSizeX, PaperSizeY }; _Page.MediaBox = pageRect; // Create U3D stream var streamObj = new PdfDom3DStream(_Document); streamObj.Add(u3dSource); // Create view var view = streamObj.AddView("Default"); view.U3DPath = "View"; var projection = view.Projection; projection.IsPerspective = false; projection.AutomaticClipping = true; var background = view.Background; background.Color = new Color(0.75f, 0.75f, 0.75f); if (CoreContext.Current?.Viewport != null) { var vp = CoreContext.Current.Viewport; var size = vp.Size; var scale = Math.Min(PaperSizeX / size.Width, PaperSizeY / size.Height); projection.OrthographicScale = scale * PdfDomDocument.UserSpaceScale; view.OrbitCenterDistance = vp.EyePoint.Distance(vp.TargetPoint) * vp.Scale; } // Create annotation var normalAppearenceStream = new PdfDomXObject(_Document, pageRect); normalAppearenceStream.Add(PdfSnippets.NormalAppearenceFor3DAnnot); var annot = new PdfDom3DAnnotation(_Document, new[] { 0, 0, PaperSizeX, PaperSizeY }, streamObj) { IsInteractive = true, IsAutostart = true, NormalAppearence = normalAppearenceStream }; _Page.Annotations.Add(annot); // Finish var stream = _Document.WriteToStream(); _Document = null; return(stream); } catch (Exception e) { Messages.Exception($"Exception occured while exporting to U3D.", e); return(null); } }