123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Autodesk.Revit.DB;
- using Com.FirmLib.Common;
- using Com.FirmLib.Entity;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using SAGA.DotNetUtils;
- using SAGA.DotNetUtils.Extend;
- namespace SAGA.MBI.JsonConvert
- {
- /// <summary>
- /// revit点进行过转换
- /// </summary>
- public class XYZConvert : JsonConverter
- {
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
- {
- if (value == null)
- {
- writer.WriteNull();
- return;
- }
- XYZ real=value as XYZ;
- if (real == null)
- return;
- JObject j = new JObject();
- j.Add("X",Math.Round(real.X,8));
- j.Add("Y", Math.Round(real.Y, 8));
- j.Add("Z", Math.Round(real.Z, 8));
- j.WriteTo(writer);
- }
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
- {
- JObject jObject = (JObject)serializer.Deserialize(reader, typeof(JObject));
-
- //有时间再细写
- var x=jObject.GetValueEx("X").ToDouble();
- var y = jObject.GetValueEx("Y").ToDouble();
- var z = jObject.GetValueEx("Z").ToDouble();
- XYZ xyz = new XYZ(x,y,z);
- return xyz;
- }
- public override bool CanConvert(Type objectType)
- {
- return objectType == typeof(XYZ);
- }
- }
- public class XYZListConverter : JsonConverter
- {
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
- {
- if (value == null)
- {
- writer.WriteNull();
- return;
- }
- List<XYZ> xyzes = value as List<XYZ>;
- if (xyzes != null)
- {
- JsonSerializer serialzier=new JsonSerializer();
- serialzier.Converters.Add(new XYZConvert());
- JToken t = JToken.FromObject(value, serialzier);
- t.WriteTo(writer);
- }
- else
- {
- JToken t = JToken.FromObject(value);
- t.WriteTo(writer);
- }
- }
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
- JsonSerializer serializer)
- {
- try
- {
- JsonSerializer serialzier = new JsonSerializer();
- serialzier.Converters.Add(new XYZConvert());
- List<XYZ> xyzes =serializer.Deserialize(reader, typeof(List<XYZ>)) as List<XYZ>;
- return xyzes;
- }
- catch (Exception)
- {
- return new List<XYZ>();
- }
- }
- public override bool CanConvert(Type objectType)
- {
- return objectType == typeof(List<XYZ>);
- }
- }
- }
|