示例#1
0
        public bool WriteDrawing(string fileName, Stream fileStream, Drawing drawing, ViewPort viewPort, INotifyPropertyChanged fileSettings)
        {
            var jsonDrawing = new JsonDrawing();
            var modelSpace  = new JsonBlock()
            {
                Name = "*Model_Space"
            };

            jsonDrawing.Floorplan.Blocks.Add(modelSpace);
            foreach (var layer in drawing.GetLayers())
            {
                var jsonLayer = new JsonLayer()
                {
                    Name = layer.Name,
                    R    = layer.Color?.R ?? 0,
                    G    = layer.Color?.G ?? 0,
                    B    = layer.Color?.B ?? 0,
                };
                jsonDrawing.Floorplan.Layers.Add(jsonLayer);
                foreach (var entity in layer.GetEntities())
                {
                    switch (entity.Kind)
                    {
                    case EntityKind.Arc:
                        var arc     = (Arc)entity;
                        var jsonArc = new JsonArc()
                        {
                            Layer      = layer.Name,
                            Center     = arc.Center,
                            Radius     = arc.Radius,
                            StartAngle = arc.StartAngle * MathHelper.DegreesToRadians,
                            EndAngle   = arc.EndAngle * MathHelper.DegreesToRadians
                        };
                        modelSpace.Entities.Add(jsonArc);
                        break;

                    case EntityKind.Line:
                        var line     = (Line)entity;
                        var jsonLine = new JsonLine()
                        {
                            Layer = layer.Name
                        };
                        jsonLine.Points.Add(line.P1);
                        jsonLine.Points.Add(line.P2);
                        modelSpace.Entities.Add(jsonLine);
                        break;
                    }
                }

                foreach (var jsonEntity in modelSpace.Entities)
                {
                    jsonEntity.BeforeWrite();
                }
            }

            var json = JsonConvert.SerializeObject(jsonDrawing, Settings);

            using (var writer = new StreamWriter(fileStream, encoding: Encoding.UTF8, bufferSize: 1024, leaveOpen: true))
            {
                writer.Write(json);
            }

            return(true);
        }
示例#2
0
        public Task <bool> WriteDrawing(string fileName, Stream fileStream, Drawing drawing, ViewPort viewPort, object fileSettings)
        {
            var jsonDrawing = new JsonDrawing();
            var modelSpace  = new JsonBlock()
            {
                Name = "*Model_Space"
            };

            jsonDrawing.Floorplan.Blocks.Add(modelSpace);
            foreach (var layer in drawing.GetLayers())
            {
                var jsonLayer = new JsonLayer()
                {
                    Name = layer.Name,
                    R    = layer.Color?.R ?? 0,
                    G    = layer.Color?.G ?? 0,
                    B    = layer.Color?.B ?? 0,
                };
                jsonDrawing.Floorplan.Layers.Add(jsonLayer);
                foreach (var entity in layer.GetEntities())
                {
                    entity.DoEntity(
                        aggregate => { },
                        arc => modelSpace.Entities.Add(new JsonArc()
                    {
                        Layer      = layer.Name,
                        Center     = arc.Center,
                        Radius     = arc.Radius,
                        StartAngle = arc.StartAngle * MathHelper.DegreesToRadians,
                        EndAngle   = arc.EndAngle * MathHelper.DegreesToRadians
                    }),
                        circle => { },
                        ellipse => { },
                        image => { },
                        line =>
                    {
                        var jsonLine = new JsonLine()
                        {
                            Layer = layer.Name
                        };
                        jsonLine.Points.Add(line.P1);
                        jsonLine.Points.Add(line.P2);
                        modelSpace.Entities.Add(jsonLine);
                    },
                        location => { },
                        polyline => { },
                        spline => { },
                        text => { }
                        );
                }

                foreach (var jsonEntity in modelSpace.Entities)
                {
                    jsonEntity.BeforeWrite();
                }
            }

            var json = JsonConvert.SerializeObject(jsonDrawing, Settings);

            using (var writer = new StreamWriter(fileStream, encoding: Encoding.UTF8, bufferSize: 1024, leaveOpen: true))
            {
                writer.Write(json);
            }

            return(Task.FromResult(true));
        }