public void UnfoldAndLabelExtrudedLFromSurfacs() { throw new NotImplementedException(); // unfold cube Solid testcube = UnfoldTestUtils.SetupCube(); List <Face> faces = testcube.Faces.ToList(); var unfoldObject = PlanarUnfolder.Unfold(faces); var unfoldsurfaces = unfoldObject.UnfoldedSurfaceSet; Console.WriteLine("generating labels"); // generate labels var labels = unfoldObject.StartingUnfoldableFaces.Select(x => new PlanarUnfolder.UnfoldableFaceLabel <EdgeLikeEntity, FaceLikeEntity>(x)).ToList(); UnfoldTestUtils.AssertLabelsGoodStartingLocationAndOrientation(labels); // next check the positions of the translated labels var transformedGeo = labels.Select(x => PlanarUnfolder.MapGeometryToUnfoldingByID(unfoldObject, x.AlignedLabelGeometry, x.ID)).ToList(); UnfoldTestUtils.AssertLabelsGoodFinalLocationAndOrientation(labels, transformedGeo, unfoldObject); }
public void UnfoldAndLabelCurvedArcLoft() { Surface testsweep = UnfoldTestUtils.SetupArcLoft(); var surfaces = new List <Surface>() { testsweep }; //handle tesselation here var pointtuples = Tesselation.Tessellate(surfaces, -1, 512); //convert triangles to surfaces List <Surface> trisurfaces = pointtuples.Select(x => Surface.ByPerimeterPoints(new List <Point>() { x[0], x[1], x[2] })).ToList(); var unfoldObject = PlanarUnfolder.Unfold(trisurfaces); var unfoldsurfaces = unfoldObject.UnfoldedSurfaceSet; Console.WriteLine("generating labels"); // generate labels var labels = unfoldObject.StartingUnfoldableFaces.Select(x => new PlanarUnfolder.UnfoldableFaceLabel <EdgeLikeEntity, FaceLikeEntity>(x)).ToList(); UnfoldTestUtils.AssertLabelsGoodStartingLocationAndOrientation(labels); // next check the positions of the translated labels var transformedGeo = labels.Select(x => PlanarUnfolder.MapGeometryToUnfoldingByID(unfoldObject, x.AlignedLabelGeometry, x.ID)).ToList(); UnfoldTestUtils.AssertLabelsGoodFinalLocationAndOrientation(labels, transformedGeo, unfoldObject); }
public void UnfoldAndLabel2ArcLofts() { // unfold cube Surface testloft = UnfoldTestUtils.SetupArcLoft(); Surface testloft2 = UnfoldTestUtils.SetupArcLoft(); var surfaces = new List <Surface>() { testloft }; var surfaces2 = new List <Surface>() { testloft }; //handle tesselation here var pointtuples = Tesselation.Tessellate(surfaces, -1, 512); var pointtuples2 = Tesselation.Tessellate(surfaces, -1, 512); //convert triangles to surfaces List <Surface> trisurfaces = pointtuples.Select(x => Surface.ByPerimeterPoints(new List <Point>() { x[0], x[1], x[2] })).ToList(); List <Surface> trisurfaces2 = pointtuples2.Select(x => Surface.ByPerimeterPoints(new List <Point>() { x[0], x[1], x[2] })).ToList(); var unfoldObject1 = PlanarUnfolder.Unfold(trisurfaces); var unfoldObject2 = PlanarUnfolder.Unfold(trisurfaces2); var unfoldsurfaces = unfoldObject1.UnfoldedSurfaceSet.Concat(unfoldObject2.UnfoldedSurfaceSet).ToList(); Console.WriteLine("merging unfolds"); var unfoldObject = PlanarUnfolder.PlanarUnfolding <EdgeLikeEntity, FaceLikeEntity> . MergeUnfoldings(new List <PlanarUnfolder.PlanarUnfolding <EdgeLikeEntity, FaceLikeEntity> >() { unfoldObject1, unfoldObject2 }); AssertMergeHasCorrectNumberOfSurfaces(unfoldObject, trisurfaces.Count * 2); AssertMergeHasCorrectNumberOfMaps(unfoldObject, new List <PlanarUnfolder.PlanarUnfolding <EdgeLikeEntity, FaceLikeEntity> >() { unfoldObject1, unfoldObject2 }); Console.WriteLine("generating labels"); // generate labels var labels = unfoldObject.StartingUnfoldableFaces.Select(x => new PlanarUnfolder.UnfoldableFaceLabel <EdgeLikeEntity, FaceLikeEntity>(x)).ToList(); UnfoldTestUtils.AssertLabelsGoodStartingLocationAndOrientation(labels); // next check the positions of the translated labels, var transformedGeo = labels.Select(x => PlanarUnfolder.MapGeometryToUnfoldingByID (unfoldObject, x.AlignedLabelGeometry, x.ID)).ToList(); UnfoldTestUtils.AssertLabelsGoodFinalLocationAndOrientation(labels, transformedGeo, unfoldObject); }
/// <summary> /// method that generates labels on the unfolded faces /// </summary> /// <param name="unfoldingObject"> requires an unfolding object that represents an unfolding operation</param> /// <param name="labelScale"> scale for the text labels</param> /// <returns name = "labels"> labels composed of curve geometry </returns> public static List <List <Curve> > GenerateUnfoldedLabels (PlanarUnfolder.PlanarUnfolding <EdgeLikeEntity, FaceLikeEntity> unfoldingObject, double labelScale = 1.0) { var labels = unfoldingObject.StartingUnfoldableFaces.Select(x => new PlanarUnfolder.UnfoldableFaceLabel <EdgeLikeEntity, FaceLikeEntity>(x, labelScale)).ToList(); // need to make one piece of geometry from list of geo... var transformedGeo = labels.Select(x => PlanarUnfolder.MapGeometryToUnfoldingByID(unfoldingObject, x.AlignedLabelGeometry, x.ID)).ToList(); return(transformedGeo); }
public void UnfoldAndLabel2CubesFromFaces() { // unfold cube Solid testcube = UnfoldTestUtils.SetupCube(); List <Face> faces = testcube.Faces.ToList(); var unfoldObject1 = PlanarUnfolder.Unfold(faces); var unfoldObject2 = PlanarUnfolder.Unfold(faces); var unfoldsurfaces = unfoldObject1.UnfoldedSurfaceSet.Concat(unfoldObject2.UnfoldedSurfaceSet).ToList(); Console.WriteLine("merging unfolds"); var unfoldObject = PlanarUnfolder.PlanarUnfolding <EdgeLikeEntity, FaceLikeEntity> . MergeUnfoldings(new List <PlanarUnfolder.PlanarUnfolding <EdgeLikeEntity, FaceLikeEntity> >(){ unfoldObject1, unfoldObject2 }); AssertMergeHasCorrectNumberOfSurfaces(unfoldObject, faces.Count * 2); AssertMergeHasCorrectNumberOfMaps(unfoldObject, new List <PlanarUnfolder.PlanarUnfolding <EdgeLikeEntity, FaceLikeEntity> >() { unfoldObject1, unfoldObject2 }); Console.WriteLine("generating labels"); // generate labels var labels = unfoldObject.StartingUnfoldableFaces.Select(x => new PlanarUnfolder.UnfoldableFaceLabel <EdgeLikeEntity, FaceLikeEntity>(x)).ToList(); UnfoldTestUtils.AssertLabelsGoodStartingLocationAndOrientation(labels); // next check the positions of the translated labels, var transformedGeo = labels.Select(x => PlanarUnfolder.MapGeometryToUnfoldingByID (unfoldObject, x.AlignedLabelGeometry, x.ID)).ToList(); UnfoldTestUtils.AssertLabelsGoodFinalLocationAndOrientation(labels, transformedGeo, unfoldObject); }