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); }
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)); }