示例#1
0
        public override void OnPaint()
        {
            BackColor = Color.White;

            switch (ActiveSnapKind)
            {
            case Snapkind.SurfaceSnapItem:     // Problem Ränder
                //if (SnappItems.Count >0)
                //{
                //    Emission = Color.Red;
                //    SnappItems[0].DrawTriangleInfo();
                //    Emission = Color.Black;
                //    return;
                //}
                CurveExtruder CurveEx = new CurveExtruder();
                CurveEx.Direction = new xyz(0, 1, 1);
                CurveEx.Height    = -1;
                CurveEx.Curve     = new Bezier(new xy(9, 0), new xy(6, 3), new xy(3, 3), new xy(0, 0));
                CurveEx.DownPlane = new Plane(new xyz(0, 0, 0), new xyz(0, 0, 1));
                CurveEx.UpPlane   = new Plane(new xyz(0, 0, 0) + CurveEx.Direction * 7, CurveEx.Direction);

                CurveEx.Paint(this);
                break;

            case Snapkind.LineSnapItem:

                drawCurve(new Line(new xy(0, 0), new xy(10, 0)));
                break;

            case Snapkind.PointSnapItem:
                drawPoint(new xyz(4, 3, 0), 0.2);

                break;

            case Snapkind.CurveSnapItem:
                Curve C = new Bezier(new xy(9, 0), new xy(6, 3), new xy(3, 3), new xy(0, 0));
                PolygonMode = PolygonMode.Line;
                Emission    = Color.Black;
                PenWidth    = 3;
                drawCurve(C);
                PolygonMode = PolygonMode.Fill;
                break;

            case Snapkind.PolyCurveSnapItem:

                Lights[0].Position = new xyzwf(-10, -10, 10, 1);
                CurveArray _Curves0 = new CurveArray();
                PolygonMode    = PolygonMode.Line;
                _Curves0.Count = 4;
                _Curves0[0]    = new Line(new xy(-3, -3), new xy(-3, 4));
                _Curves0[1]    = new Line(new xy(-3, 4), new xy(4, 4));
                _Curves0[2]    = new Line(new xy(4, 4), new xy(4, -3));
                _Curves0[3]    = new Bezier(new xy(4, -3), new xy(3, -3.5), new xy(1, -3.5), new xy(-3, -3));

                drawPolyCurve(_Curves0);

                PolygonMode = PolygonMode.Fill;
                break;

            case Snapkind.PolyPolyCurveSnapItem:
                Loca       _Loca   = new Loca();
                CurveArray Curves0 = new CurveArray();
                Curves0.Count = 4;
                Curves0[0]    = new Line(new xy(-3, -3), new xy(-3, 4));
                Curves0[1]    = new Line(new xy(-3, 4), new xy(4, 4));
                Curves0[2]    = new Line(new xy(4, 4), new xy(4, -3));
                Curves0[3]    = new Bezier(new xy(4, -3), new xy(3, -3.5), new xy(1, -3.5), new xy(-3, -3));
                _Loca.Add(Curves0);
                OpenGlDevice.CheckError();
                CurveArray Curves1 = new CurveArray();
                Curves1.Count = 4;
                Curves1[0]    = new Line(new xy(0, 0), new xy(1, 0));
                Curves1[1]    = new Line(new xy(1, 0), new xy(1, 1));
                Curves1[2]    = new Line(new xy(1, 1), new xy(0, 1));
                Curves1[3]    = new Line(new xy(0, 1), new xy(0, 0));
                _Loca.Add(Curves1);

                PolygonMode = PolygonMode.Fill;
                drawPolyPolyCurve(_Loca);

                break;

            case Snapkind.TextSnapItem:


                Font.FontSize = 4;
                xy Pos = getEnvText(Font, "Drawing 3D");
                drawText(Font, new xyz(-Pos.X / 2, 0, 0), "Drawing 3D", 2);

                break;

            case Snapkind.MeshSnapItem:

                int[]  Indices  = new int[] { 0, 1, 2 };
                xyzf[] Position = new xyzf[] { new xyzf(0, 0, 0), new xyzf(3, 5, 0), new xyzf(6, 0, 0) };
                xyzf[] Normal   = new xyzf[] { new xyzf(0, 0, 1), new xyzf(0, 0, 1), new xyzf(0, 0, 1) };
                xyf[]  Texture  = new xyf[] { new xyf(0, 0), new xyf(3, 5), new xyf(6, 0) };
                xyzf[] Colors   = new xyzf[] { new xyzf(1, 0, 0), new xyzf(0, 1, 0), new xyzf(0, 0, 1) };

                drawMesh(Indices, Position, Normal, null, Colors);
                break;

            case Snapkind.PolyLineSnapItem:

                xyArray Poly = new xyArray();

                Poly.data   = new xy[] { new xy(1, 1), new xy(3, 4), new xy(5, 4), new xy(6, 2), new xy(1, 1) };
                PolygonMode = PolygonMode.Fill;
                PenWidth    = 3;

                drawPolyLine(Poly);
                PolygonMode = PolygonMode.Fill;


                break;

            case Snapkind.CurveSnapItem3D:

                Bezier3D Bezier = new Bezier3D(new xyz(1, 2, 1), new xyz(3, -2, 3), new xyz(5, 3, 2), new xyz(7, 1, 1));

                drawCurve(Bezier);


                break;

            case Snapkind.PolyLineSnapItem3D:
                xyzArray Poly3d = new xyzArray();
                Poly3d.data = new xyz[] { new xyz(0, 0, 1), new xyz(0, 3, 1), new xyz(3, 3, 1), new xyz(4, 0, 1), new xyz(0, 0, 1) };
                drawPolyLine(Poly3d);
                break;

            case Snapkind.PolyPolyLineSnapItem3D:

                xyzArray AA = new xyzArray();
                AA.Add(new xyz(1, 1, 1));
                AA.Add(new xyz(0, 1, 1));
                AA.Add(new xyz(0, 0, 1));
                AA.Add(new xyz(1, 0, 1));
                AA.Add(new xyz(1, 1, 1));
                xyzArray BB = new xyzArray();

                BB.Add(new xyz(3, 3, 1));
                BB.Add(new xyz(3, -2, 1));
                BB.Add(new xyz(-1, -2, 1));
                BB.Add(new xyz(-1, 3, 1));
                BB.Add(new xyz(3, 3, 1));



                Loxyz L = new Loxyz();
                L.Add(AA);
                L.Add(BB);


                drawPolyPolyLine(L);

                break;

            case Snapkind.PolyPolyLineSnapItem:

                xyArray _AA = new xyArray();
                _AA.Add(new xy(2, 0.5));
                _AA.Add(new xy(0, 0.5));
                _AA.Add(new xy(0, 0));
                _AA.Add(new xy(2, 0));
                _AA.Add(new xy(2, 0.5));
                xyArray _BB = new xyArray();

                _BB.Add(new xy(4, 4));
                _BB.Add(new xy(4, -2));
                _BB.Add(new xy(-1, -2));
                _BB.Add(new xy(-1, 4));

                _BB.Add(new xy(4, 4));
                Loxy _L = new Loxy();
                _L.Add(_AA);
                _L.Add(_BB);


                drawPolyPolyLine(_L);

                break;

            case Snapkind.SphereSnapItem:
                drawSphere(new xyz(2, 1, 1), 3);


                break;

            case Snapkind.BoxSnapItem:

                drawBox(new xyz(0, 0, 0), new xyz(4, 3, 4));
                break;

            default:
                break;
            }
            ACursor.Paint(this);
        }
示例#2
0
        public override void OnPaint()
        {
            switch (ActiveSurface)
            {
            case SurfaceKind.ArrayExtruder:
                xyArray A = new xyArray();
                A.data = new xy[] { new xy(0, 0), new xy(0, 4), new xy(4, 4), new xy(4, 0), new xy(0, 0) };
                ArrayExtruder AE = new ArrayExtruder();
                AE.Array  = A;
                AE.Height = 5;
                AE.Paint(this);
                break;

            case SurfaceKind.BezierSurface:
                Lights[0].Position = DefaultLightPos;
                BezierSurface Bezs = new BezierSurface();
                Bezs.ControlPoints = new xyz[, ] {
                    { new xyz(0, 0, 0), new xyz(2, 0, 0), new xyz(4, 0, 0), new xyz(6, 0, 0) },
                    { new xyz(0, 3, 1), new xyz(2, 3, 3), new xyz(4, 3, 0), new xyz(6, 3, 0) },
                    { new xyz(0, 6, 1), new xyz(2, 6, 3), new xyz(4, 6, 0), new xyz(6, 6, 0) },
                    { new xyz(0, 9, 0), new xyz(2, 9, 0), new xyz(4, 9, 0), new xyz(6, 9, 0) },
                };


                Bezs.Paint(this);
                break;

            case SurfaceKind.BsplineSurface:
                BSplineSurface BS = new BSplineSurface();

                Lights[0].Position = DefaultLightPos;
                BS.ControlPoints   = new xyz[, ] {
                    { new xyz(0, 0, 0), new xyz(0, 3, 0), new xyz(0, 6, 0), new xyz(0, 9, 0), },
                    { new xyz(2, 0, 1), new xyz(2, 3, 3), new xyz(2, 6, 3), new xyz(2, 9, 0), },
                    { new xyz(4, 0, 1), new xyz(4, 3, 3), new xyz(4, 6, 3), new xyz(4, 9, 0), },
                    { new xyz(6, 0, 0), new xyz(6, 3, 0), new xyz(6, 6, 0), new xyz(6, 9, 0) },
                };

                BS.UDegree = 3;
                BS.VDegree = 2;
                BS.SetDefaultKnots();



                BS.Paint(this);
                break;

            case SurfaceKind.Cone:
                Lights[0].Position = new xyzwf(5, 0, (float)2.5, 1);
                Cone Cone = new Cone(new xyz(0, 0, 0), 5, 2, System.Math.PI / 4);
                Cone.Paint(this);
                break;

            case SurfaceKind.Curve2DRotator:
                Lights[0].Position = DefaultLightPos;
                Curve2dRotator C2d = new Curve2dRotator();
                C2d.Curve     = new Bezier(new xy(1, 0), new xy(2, 3), new xy(4, 3), new xy(6, 0));;
                C2d.FromAngle = 0;
                C2d.ToAngle   = Math.PI / 2;

                C2d.Paint(this);
                break;

            case SurfaceKind.Curve3dRotator:
                Curve3dRotator C3d = new Curve3dRotator();
                C3d.Curve = new Bezier3D(new xyz(1, 2, 0), new xyz(2, 1, 3), new xyz(4, 2, 3), new xyz(5, 2, 0));
                C3d.Paint(this);
                break;

            case SurfaceKind.CurveExtruder:
                Lights[0].Position = new xyzwf(3, 6, 3, 1);
                CurveExtruder CE = new CurveExtruder();
                CE.Curve     = new Bezier(new xy(1, 0), new xy(2, 3), new xy(4, 3), new xy(6, 0));
                CE.UpPlane   = new Plane(new xyz(0, 0, 4), new xyz(0, 0.3, 1));
                CE.DownPlane = new Plane(new xyz(0, 0, 0), new xyz(0, -0.3, 1));
                CE.Height    = -5;
                CE.Paint(this);
                break;

            case SurfaceKind.CustomSurface:
                Lights[0].Position = new xyzwf(8, 1, 2, 1);
                CustomSurface.Paint(this);
                break;

            case SurfaceKind.Cylinder:
                Lights[0].Position = new xyzwf(8, 1, 2, 1);
                Cylinder Cylinder = new Cylinder(3, 5);
                drawSurface(Cylinder);
                break;

            case SurfaceKind.NurbsSurface:
                NurbsSurface NS = new NurbsSurface();
                Lights[0].Position = DefaultLightPos;
                NS.ControlPoints   = new xyz[, ] {
                    { new xyz(0, 0, 0), new xyz(0, 3, 0), new xyz(0, 6, 0), new xyz(0, 9, 0), },
                    { new xyz(2, 0, 1), new xyz(2, 3, 3), new xyz(2, 6, 3), new xyz(2, 9, 0), },
                    { new xyz(4, 0, 1), new xyz(4, 3, 3), new xyz(4, 6, 3), new xyz(4, 9, 0), },
                    { new xyz(6, 0, 0), new xyz(6, 3, 0), new xyz(6, 6, 0), new xyz(6, 9, 0) },
                };

                NS.UDegree = 3;
                NS.VDegree = 2;
                NS.Weights = new double[, ] {
                    { 1, 1, 1, 1 },
                    { 1, 3, 3, 1 },
                    { 1, 3, 3, 1 },
                    { 1, 1, 1, 1 }
                };
                NS.SetDefaultKnots();
                NS.Paint(this);
                break;

            case SurfaceKind.OffsetSurface:
                Lights[0].Position = DefaultLightPos;
                BSplineSurface _BS = new BSplineSurface();
                _BS.ControlPoints = new xyz[, ] {
                    { new xyz(0, 0, 0), new xyz(0, 3, 0), new xyz(0, 6, 0), new xyz(0, 9, 0), },
                    { new xyz(2, 0, 1), new xyz(2, 3, 3), new xyz(2, 6, 3), new xyz(2, 9, 0), },
                    { new xyz(4, 0, 1), new xyz(4, 3, 3), new xyz(4, 6, 3), new xyz(4, 9, 0), },
                    { new xyz(6, 0, 0), new xyz(6, 3, 0), new xyz(6, 6, 0), new xyz(6, 9, 0) },
                };

                _BS.UDegree = 3;
                _BS.VDegree = 2;
                _BS.SetDefaultKnots();

                OffsetSurface OS = new OffsetSurface();
                OS.BasisSurface = _BS;
                OS.Distance     = 0.5;
                OS.Paint(this);


                break;

            case SurfaceKind.PlaneSurface:
                Lights[0].Position = new xyzwf(2, 2, 4, 1);
                PlaneSurface PS = new PlaneSurface(new xyz(0, 0, 0), new xyz(4, 2, 2), new xyz(1, 5, 7));
                PS.Width  = 4;
                PS.Length = 5;
                PS.Paint(this);
                break;

            case SurfaceKind.SmoothPlane:
                Lights[0].Position = new xyzwf(2, 2, 4, 1);
                SmoothPlane SP = new SmoothPlane(new xyz(0, 0, 0), new xyz(0, 5, 0), new xyz(5, 5, 0), new xyz(5, 0, 0), new xyz(-1, -1, 1), new xyz(-1, 1, 1), new xyz(1, 1, 1), new xyz(1, 1, 1));
                SP.Width  = 5;
                SP.Length = 6;
                SP.Paint(this);
                break;

            case SurfaceKind.Sphere:
                Lights[0].Position = DefaultLightPos;
                Sphere Sphere = new Sphere(new xyz(2, 1, 1), 4);
                drawSurface(Sphere);

                break;

            case SurfaceKind.Torus:
                Lights[0].Position = DefaultLightPos;
                Torus Torus = new Torus(1, 4);
                drawSurface(Torus);
                break;

            default:
                break;
            }
            base.OnPaint();
        }