Ejemplo n.º 1
0
        /// <summary>バーチャルシェイプを更新する。</summary>
        public void UpdateVirtualShape()
        {
            if (Size.Amplitude == 0)
            {
                VirtualEllipse ellipse = VirtualShape as VirtualEllipse ?? new VirtualEllipse();
                ellipse.Center          = new PointD(Center.X, Center.Y);
                ellipse.Radius          = new SizeD(3, 3);
                ellipse.DoesGlobalScale = false;
                VirtualShape            = ellipse;
            }
            else if (Size.X == 0 || Size.Y == 0)
            {
                VirtualLine line = VirtualShape as VirtualLine ?? new VirtualLine();
                PointD      p1, p2;
                p1                   = new PointD(Center.X - Size.X / 2, Center.Y - Size.Y / 2);
                p2                   = new PointD(Center.X + Size.X / 2, Center.Y + Size.Y / 2);
                line.Vertices        = new PointD[] { p1, p2 };
                line.DoesGlobalScale = false;
                VirtualShape         = line;
            }
            else
            {
                VirtualRectangle rect = VirtualShape as VirtualRectangle ?? new VirtualRectangle();
                rect.Location        = new PointD(Center.X - Size.X / 2, Center.Y - Size.Y / 2);
                rect.Size            = new SizeD(Size.X, Size.Y);
                rect.DoesGlobalScale = false;
                VirtualShape         = rect;
            }
            VirtualShape.ShapeFill   = Brushes.Red;
            VirtualShape.ShapeBorder = new Pen(Brushes.Red, 3);

            if ((Parent as ProjectManifestData) != null)
            {
                if (!(Parent as ProjectManifestData).ManifestVisualizingLayer.Shapes.Contains(VirtualShape))
                {
                    (Parent as ProjectManifestData).ManifestVisualizingLayer.Shapes.Add(VirtualShape);
                }
            }
        }
Ejemplo n.º 2
0
        public void WriteProject(WaveguideDesignerProjectData project)
        {
            if (project == null)
            {
                return;
            }

            Type         type;
            EntityObject obj = null;
            DxfDocument  doc = new DxfDocument();

            doc.Name = project.Name;

            Layer     dxfLayer;
            LayerData layerData;

            foreach (VirtualLayer vLayer in project.VirtualGraphics.Layers)
            {
                layerData = null;
                foreach (LayerData tmp in project.Layers)
                {
                    if (tmp.VirtualLayer == vLayer)
                    {
                        layerData = tmp;
                        break;
                    }
                }
                if (layerData == null)
                {
                    continue;
                }
                dxfLayer             = new Layer(layerData.Name);
                dxfLayer.Color.Index = (short)layerData.LayerNumber;
                doc.Layers.Add(dxfLayer);

                foreach (VirtualShapeBase vShape in vLayer.Shapes)
                {
                    type = vShape.GetType();
                    if (type == typeof(VirtualRectangle))
                    {
                        VirtualRectangle rect    = (VirtualRectangle)vShape;
                        Polyline         dxfrect = new Polyline();
                        obj = new Polyline();
                        dxfrect.IsClosed = true;
                        dxfrect.Vertexes.Add(new PolylineVertex(rect.Location.X, rect.Location.Y, 0));
                        dxfrect.Vertexes.Add(new PolylineVertex(rect.Location.X + rect.Size.W, rect.Location.Y, 0));
                        dxfrect.Vertexes.Add(new PolylineVertex(rect.Location.X + rect.Size.W, rect.Location.Y + rect.Size.H, 0));
                        dxfrect.Vertexes.Add(new PolylineVertex(rect.Location.X, rect.Location.Y + rect.Size.H, 0));
                        dxfrect.Vertexes.Add(new PolylineVertex(rect.Location.X, rect.Location.Y, 0));
                        obj = dxfrect;
                    }
                    else if (type == typeof(VirtualPolygon))
                    {
                        VirtualPolygon poly    = (VirtualPolygon)vShape;
                        Polyline       dxfpoly = new Polyline();
                        dxfpoly.IsClosed = true;
                        foreach (PointD p in poly.Vertices)
                        {
                            dxfpoly.Vertexes.Add(conv(p));
                        }
                        dxfpoly.Vertexes.Add(conv(poly.Vertices[0]));
                        obj = dxfpoly;
                    }
                    else if (type == typeof(VirtualEllipse))
                    {
                        VirtualEllipse elli    = (VirtualEllipse)vShape;
                        Ellipse        dxfelli = new Ellipse();
                        dxfelli.Center     = new netDxf.Vector3(elli.Center.X, elli.Center.Y, 0);
                        dxfelli.StartAngle = 0;
                        dxfelli.EndAngle   = 360;
                        dxfelli.MajorAxis  = Math.Max(elli.Radius.W, elli.Radius.H);
                        dxfelli.MinorAxis  = Math.Min(elli.Radius.W, elli.Radius.H);
                        dxfelli.Rotation   = elli.Radius.W >= elli.Radius.H ? 0 : 90;
                        obj = dxfelli;
                    }
                    else if (type == typeof(VirtualPie))
                    {
                        VirtualPie pie     = (VirtualPie)vShape;
                        Ellipse    dxfelli = new Ellipse();
                        dxfelli.Center     = new netDxf.Vector3(pie.Center.X, pie.Center.Y, 0);
                        dxfelli.StartAngle = pie.StartAngle;
                        dxfelli.EndAngle   = pie.EndAngle;
                        dxfelli.MajorAxis  = Math.Max(pie.Radius.W, pie.Radius.H);
                        dxfelli.MinorAxis  = Math.Min(pie.Radius.W, pie.Radius.H);
                        dxfelli.Rotation   = pie.Radius.W >= pie.Radius.H ? 0 : 90;
                        obj = dxfelli;
                    }
                    else
                    {
                        obj = null;
                    }

                    if (obj == null)
                    {
                        continue;
                    }
                    obj.Layer = dxfLayer;
                    doc.AddEntity(obj);
                }
            }

            doc.Save(FileName);
        }