Skip Navigation Links  

Dieses Beispiel

die Verwendung der Klasse Entity. Sie ist die zentrale Klasse für Zeichnungsoperationen. Es können alle vordefinierten Klassen mit der ComboBox angewählt werden.
Folgende Entities sind vordefiniert:
Boxentity,
PolyCurveExtruder,
CoordinateAxis,
TextEntity,
Interpolator,
Zoom,
CtrlRectangle,
Profiler,
ActiveCursor,
SphereEntity,
Cone,
Arrow,
VisualBase.
Der ActiveCursor erscheint als roter Cursor auf der Oberfläche des Entity.
using System;
using System.Drawing;
using System.Windows.Forms;
using Drawing3d;

namespace Entitiesdocu
{

    [Serializable]
    public partial class Form1 : Form
    {

        MyDevice Device = new MyDevice();
        public Form1()
        {

            InitializeComponent();

            Device.WinControl = this;
            comboBox1.SelectedIndex = 4;
        }


       

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Device.SetEntityKind((MyDevice.Entitykind)comboBox1.SelectedIndex);
        }
    }


    public class MyDevice : OpenGlDevice
    {


        BoxEntity Box = null;
        CurveExtruder CurveEx = null;
        PolyCurveExtruder PolyCurveEx = null;
        CoordinateAxis Axis = null;
        TextEntity Text = null;
        RectCtrlZoom Zoom = null;
        CtrlRectangle CRect = null;
        SphereEntity Sphere = null;
        Interpolator3D Interpolator = null;
        Profiler Profil = null;
     
        Cone Cone = null;
        ActiveCursor ActiveC = null;
        Arrow Arrow = null;
     
       public enum Entitykind {
            Boxentity,
           
            PolyCurveExtruder,
            CoordinateAxis,
            TextEntity,
            Interpolator,
            Zoom,
            CtrlRectangle,
            Profiler,
            ActiveCursor,
            SphereEntity,
            Cone,
            Arrow,
            VisualBase
        };

        Entitykind Entities = Entitykind.Zoom;
        xyArray Triangle = null;
        Entity S = null;
       public void SetEntityKind(Entitykind Kind)
        {

            Entities = Kind;
            if (Entities != Entitykind.CtrlRectangle)
                if (CRect != null)
                    CRect.Device = null;
            switch (Entities)

            {
                case Entitykind.Boxentity:
                    {
                        Box = new BoxEntity(new xyz(0, 0, 0), new xyz(4, 5, 6));
                       
                        break;
                    }
                
                case Entitykind.PolyCurveExtruder:
                    {
                        PolyCurveEx = new PolyCurveExtruder();
                        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 Line(new xy(4, -3), 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);

                        PolyCurveEx.DownPlane = new Plane(new xyz(0, 0, 0), new xyz(0, 0, 1));
                        PolyCurveEx.UpPlane = new Plane(new xyz(0, 0, 4), new xyz(0, 0.5, 1));
                        PolyCurveEx.Loca = _Loca;
                        PolyCurveEx.ShowUpPlane = true;
                        PolyCurveEx.ShowDownPlane = true;
                        PolyCurveEx.Height = -1;
                        PolyCurveEx.Direction = new xyz(0, 1, 1);
                        break;
                    }
                case Entitykind.CoordinateAxis:
                    {
                        Axis = new CoordinateAxis();
                        Axis.FullSize = true;
                        Axis.ShowText = true;
                        Axis.TextHeight = 1;
                        Axis.Color = Color.Black;
                        Axis.Size = new xyz(10, 20, 30);
                        Axis.Devider = new xyz(4, 4, 4);
                        Axis.DeviderLineLength = 0.3;
                        Axis.LeftAndRight = true;
                        Axis.Dim3d = true;
                        Axis.ShowDevider = true;
                        break;
                    }
                case Entitykind.TextEntity:
                    {
                        Text = new TextEntity();
                        Text.Text = "Drawing3d";
                    
                        Text.Size = 4;
                        Text.Italic = true;
                        Text.Position = new xyz(-5, 0, 0);
                        break;
                    }
                case Entitykind.Interpolator:

                    { 
                        Interpolator = new Interpolator3D();
                        Interpolator.Points = new xyz[,]
                             { {new xyz(-3,-3,0),new xyz(0,-3,2),new xyz(3,-3,3),new xyz(6,-3,2)},
                               {new xyz(-3,0,2),new xyz(0,0,3),new xyz(3,0,2),new xyz(6,0,0)},
                               {new xyz(-3,3,0),new xyz(0,3,2),new xyz(3,3,1),new xyz(6,3,0)},
                               {new xyz(-3,6,-2),new xyz(0,6,-2),new xyz(3,6,-2),new xyz(6,6,-2)}
                             };
                       

                         
                        break;
                    }
                case Entitykind.Zoom:

                    {
                        Zoom = new RectCtrlZoom(this);
                        Zoom.Device = this;
                        Zoom.Color = Color.White;
                        break;
                    }
                case Entitykind.CtrlRectangle:

                    {

                        CRect = new CtrlRectangle(this);
                        CRect.Color = Color.Black;
                        CRect.MarkerColor = Color.Red;
                        CRect.Creating = false;
                        CRect.Rectangle = new RectangleF(-1, -1, 6, 5);
                        CRect.CompileEnable = false;
                        Triangle = new xyArray();
                        Triangle.data = new xy[] { new xy(0, 0), new xy(2, 2), new xy(4, 0), new xy(0, 0) };
                        CRect.TransformItems.Add(Triangle);
                       
                        // S = new SphereEntity(new xyz(0, 0, 0), 2);
                        //S = new BoxEntity(new xyz(0, 0, 0), new xyz(4, 4, 4));
                        //S.CompileEnable = false;
                        // CRect.TransformItems.Add(S);
                       // CRect.LiveTransform = true;
                        break;
                    }
                case Entitykind.Profiler:

                    {
                        xyzArray A = new xyzArray();
                        A.data = new xyz[] { new xyz(-3, 0, 0), new xyz(-3, -4, 0), new xyz(3, -4, 0), new xyz(3, 0, 0) };
                        Loca _Loca = new Loca();
                        CurveArray Curves0 = new CurveArray();
                        Curves0.Count = 4;
                        Curves0[0] = new Line(new xy(-1, -1), new xy(-1, 2));
                        Curves0[1] = new Line(new xy(-1, 2), new xy(2, 2));
                        Curves0[2] = new Line(new xy(2, 2), new xy(2, -1));
                        Curves0[3] = new Line(new xy(2, -1), new xy(-1, -1));
                        _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);
                        Profil = new Profiler();
                        Profil.CompileEnable = false;
                        Profil.Trace = A;
                        Profil.Transverse = _Loca;
                        Profil.CloseFirst = true;
                        Profil.CloseLast = true;
                        break;
                    }
                case Entitykind.ActiveCursor:
                    {

                        //  ActiveC.CrossColor = Color.Red;
                        break;
                    }

                case Entitykind.SphereEntity:
                    {

                        Sphere = new SphereEntity(new xyz(3, 2, 1), 4);
                        //  Sphere.CompileEnable = false;
                        //  Sphere = new SphereEntity(new xyz(0, 0, 0), 4);
                        break;
                    }
                case Entitykind.Cone:
                    {
                        Cone = new Cone(3, 5);
                        break;
                    }
               
                case Entitykind.Arrow:
                    {
                        Arrow = new Arrow();
                       Arrow.Transformation = Matrix.Translation(new xyz(5, 0, 0));
                        Arrow.SetShaftAndTop(new xyz(-10, 0, 0), new xyz(0, 0, 0));
                        Arrow.Size = 8;
                        drawSphere(new xyz(0, 0, 0), 0.5);
                        break;
                    }


                    break;
            }


            Selector.RefreshSnapBuffer();

        }





        OpenGlDevice Device = null;
        Drawing3d.Font FO = null;
        protected override void OnCreated()
        {

            Device = this;
            FO = new Drawing3d.Font("Arial");
            ActiveC = new ActiveCursor();
            ActiveC.xAxisColor = Color.Red;
            ActiveC.yAxisColor = Color.Red;
            ActiveC.zAxisColor = Color.Red;
            ActiveC.PenWidth = 3;
            SetEntityKind(Entitykind.Boxentity);

           

        }




        Matrix Mod = Matrix.identity;
        xyz Pt1 = new xyz(0, 0, 0);
        xyz Pt2 = new xyz(0, 0, 0);
        public override void OnPaint()


        {
            BackColor = Color.White;
            switch (Entities)

            {
                case Entitykind.Boxentity:
                    {

                        
                        Box.Paint(this);


                        break;
                    }
              
                case Entitykind.PolyCurveExtruder:
                    {

                        PolyCurveEx.Paint(this);

                        break;
                    }
                case Entitykind.CoordinateAxis:
                    {

                        Axis.Paint(this);
                        break;
                    }
                case Entitykind.TextEntity:
                    {
                        Text.Paint(this);

                        break;
                    }
                case Entitykind.Interpolator:

                    {

                        Interpolator.Paint(this);
                        break;
                    }
                case Entitykind.Zoom:

                    {

                        drawSphere(new xyz(0, 0, 0), 7, 80, 80);
                        drawBox(new xyz(-10, -10, -1), new xyz(20, 20, 1));
                        drawBox(new xyz(0, 0, 0), new xyz(2, 2, 2));

                        break;
                    }
                case Entitykind.CtrlRectangle:

                    {
                        PenWidth = 2;
                        PolygonMode = PolygonMode.Line;
                        drawPolyLine(Triangle);
                        PolygonMode = PolygonMode.Fill;
                        PenWidth = 1;
                     //   S.Paint(this);

                        // drawBox(new xyz(-10, -10, -1), new xyz(20, 20, 1));
                        //drawBox(new xyz(0, 0, 0), new xyz(2, 2, 2));
                        //E.CompileEnable = false;
                        //E.Paint(this);
                        break;
                    }
                case Entitykind.Profiler:

                    {


                        Profil.Paint(this);


                        break;
                    }
                case Entitykind.ActiveCursor:
                    {
                        PolyCurveEx = new PolyCurveExtruder();
                        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 Line(new xy(4, -3), 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);

                        PolyCurveEx.DownPlane = new Plane(new xyz(0, 0, 0), new xyz(0, 0, 1));
                        PolyCurveEx.UpPlane = new Plane(new xyz(0, 0, 4), new xyz(0, 0.5, 1));
                        PolyCurveEx.Loca = _Loca;
                        PolyCurveEx.ShowUpPlane = true;
                        PolyCurveEx.ShowDownPlane = true;
                        PolyCurveEx.Height = -1;
                        PolyCurveEx.Direction = new xyz(0, 1, 1);
                        PolyCurveEx.Paint(this);

                        ActiveC.Paint(this);
                        break;
                    }


                case Entitykind.SphereEntity:
                    {


                        Sphere.Paint(this);
                        break;
                    }
                case Entitykind.Cone:
                    {

                        Cone.Paint(this);



                        break;
                    }
                case Entitykind.Arrow:
                    {
                   
                        Arrow.Paint(this);
                     
                        break;
                    }
                case Entitykind.VisualBase:
                    {
                        VisualBase VB = new VisualBase();
                        VB.SnappEnable = false;
                        VB.xAxis.ShaftColor = Color.Blue;
                        VB.yAxis.ShaftColor = Color.Green;
                        VB.zAxis.ShaftColor = Color.Yellow;
                        VB.xAxis.TopColor = Color.Red;
                        VB.yAxis.TopColor = Color.Red;
                        VB.zAxis.TopColor = Color.Red;
                        VB.Paint(this);
                        break;
                    }


            }
            ActiveC.Paint(this);

            base.OnPaint();

        }
    }


    }
Copyright © Drawing3D inc