public void TrimLineShouldWork (double[] p0 , double[] p1) { CreatePartDoc(modelDoc => { var v0 = new Vector3(p0[0], p0[1], p0[2]); var v1 = new Vector3(p1[0], p1[1], p1[2]); var edge = new Edge3(v0, v1); var limitedLine = Modeler.CreateTrimmedLine(edge); var tol = 1e-9; var startPoint = limitedLine.StartPoint(0)[0]; var endPoint = limitedLine.EndPoint(0)[0]; v0.X.Should().BeApproximately(startPoint.X, tol); v0.Y.Should().BeApproximately(startPoint.Y, tol); v0.Z.Should().BeApproximately(startPoint.Z, tol); v1.X.Should().BeApproximately(endPoint.X, tol); v1.Y.Should().BeApproximately(endPoint.Y, tol); v1.Z.Should().BeApproximately(endPoint.Z, tol); //###################################################### var wbv = limitedLine.CreateWireBody(); var d = wbv.DisplayUndoable(modelDoc, Color.Blue); return(d); }); }
public void ForwardAndBackSplineConversionShouldWork() { CreatePartDoc(modelDoc => { var trimCurve = Modeler.CreateTrimmedLine(new Vector3(-0.1, -0.45, -7.8), new Vector3(1.3, 2.7, 3.9)); var parameters = trimCurve.ToBSpline3D(false); var swCurve = parameters.ToCurve(); var parameters2 = swCurve.ToBSpline3D(false); parameters2.Should().Be(parameters); //##################################### var d0 = swCurve.CreateWireBody().DisplayUndoable(modelDoc, Color.Blue); var d1 = trimCurve.CreateWireBody().DisplayUndoable(modelDoc, Color.Red); return(new CompositeDisposable(d0, d1)); }); }
public void LinspaceForVector3ShouldWork() { CreatePartDoc(modelDoc => { var v0 = new Vector3(0, 0, 0); var v1 = new Vector3(1, 0, 0); var intV = Sequences.LinSpace(v0, v1, 5).ToList(); var interpolated = intV .Buffer(2, 1) .Where(p => p.Count == 2) .Select(ps => { var edge = new Edge3(ps[0], ps[1]); var limitedLine = Modeler.CreateTrimmedLine(edge); var wB = limitedLine.CreateWireBody(); return(wB.DisplayUndoable(modelDoc, Color.Blue)); }) .ToCompositeDisposable(); return(new CompositeDisposable(interpolated)); }); }