public async Task CanRebuildABox() { await CreatePartDoc(async (modelDoc, yielder) => { var box = Modeler.CreateBox(Vector3.Zero, Vector3.UnitZ, 0.5, 0.5, 0.5); var faces = box.GetFaces().CastArray <IFace2>(); var sheets = faces .Select (face => { var faceParams = BSplineFace.Create(face) .TransformSurfaceControlPoints (ctrlPts => ctrlPts.Select(v => new Vector4(v.X + 2, v.Y, v.Z, v.W))); return(faceParams.ToSheetBody().__Value__()); }) .ToArray(); using (box.DisplayUndoable(modelDoc)) { await PauseTestExecution(); }; //foreach (var sheet in sheets) //{ // yielder(sheet.DisplayUndoable(modelDoc)); //} var error = (int)swSheetSewingError_e.swSewingOk; var body = Modeler .CreateBodiesFromSheets2(sheets, (int)swSheetSewingOption_e.swSewToSolid, 1e-5, ref error) .CastArray <IBody2>(); body.Should().NotBeEmpty(); yielder(body.DisplayUndoable(modelDoc)); await PauseTestExecution(); }); }
public void CanRoundTripAFace() { CreatePartDoc((modelDoc, yielder) => { var box = Modeler.CreateBox(Vector3.Zero, Vector3.UnitZ, 0.5, 0.6, 0.7); var faces = box.GetFaces().CastArray <IFace2>(); var face = faces[0]; var surface1 = ((Surface)face.GetSurface()); var surfaceParams = surface1 .GetBSplineSurfaceParams(1e-5) .WithCtrlPts(ctrlPts => ctrlPts.Select(v => new Vector4(v.X, v.Y, v.Z, v.W))); var surface2 = surfaceParams.ToSurface(); var curves = GetCurvesForTrimming(face, c => c); var trimmedSheet = (IBody2)surface2.CreateTrimmedSheet4(curves, true); trimmedSheet.Should().NotBe(null); yielder(box.DisplayUndoable(modelDoc)); yielder(trimmedSheet.DisplayUndoable(modelDoc, Color.Blue)); }); }