Ejemplo n.º 1
0
        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));
            });
        }
Ejemplo n.º 3
0
        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));
            });
        }