/************************************************************************ * ClassName : JsonUtils * Description : * Author : Don * CreateTime : 2019/1/8 9:50:30 ************************************************************************ * █████▒█ ██ ▄████▄ ██ ▄█▀ ██████╗ ██╗ ██╗ ██████╗ * ▓██ ▒ ██ ▓██▒▒██▀ ▀█ ██▄█▒ ██╔══██╗██║ ██║██╔════╝ * ▒████ ░▓██ ▒██░▒▓█ ▄ ▓███▄░ ██████╔╝██║ ██║██║ ███╗ * ░▓█▒ ░▓▓█ ░██░▒▓▓▄ ▄██▒▓██ █▄ ██╔══██╗██║ ██║██║ ██║ * ░▒█░ ▒▒█████▓ ▒ ▓███▀ ░▒██▒ █▄ ██████╔╝╚██████╔╝╚██████╔╝ * ▒ ░ ░▒▓▒ ▒ ▒ ░ ░▒ ▒ ░▒ ▒▒ ▓▒ ╚═════╝ ╚═════╝ ╚═════╝ * ░ ░░▒░ ░ ░ ░ ▒ ░ ░▒ ▒░ * ░ ░ ░░░ ░ ░ ░ ░ ░░ ░ * ░ ░ ░ ░ ░ * ░ ************************************************************************ * Copyright @ u-BIM Dev. 2018 . All rights reserved. ************************************************************************/ using System; using Autodesk.Revit.DB; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace GraphicsStudy.Json { public class TransformConvert : Newtonsoft.Json.JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value == null) { writer.WriteNull(); } else { JObject jObject = new JObject(); jObject.Add("OriginX", (value as Transform).Origin.X); jObject.Add("OriginY", (value as Transform).Origin.Y); jObject.Add("OriginZ", (value as Transform).Origin.Z); jObject.Add("BasicXx", (value as Transform).BasisX.X); jObject.Add("BasicXy", (value as Transform).BasisX.Y); jObject.Add("BasicXz", (value as Transform).BasisX.Z); jObject.Add("BasicYx", (value as Transform).BasisY.X); jObject.Add("BasicYy", (value as Transform).BasisY.Y); jObject.Add("BasicYz", (value as Transform).BasisY.Z); jObject.Add("BasicZx", (value as Transform).BasisZ.X); jObject.Add("BasicZy", (value as Transform).BasisZ.Y); jObject.Add("BasicZz", (value as Transform).BasisZ.Z); writer.WriteValue(jObject.ToString()); } } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var jObject = JObject.Parse(reader.Value as string); double ox = jObject.Value("OriginX"); double oy = jObject.Value("OriginY"); double oz = jObject.Value("OriginZ"); double xx = jObject.Value("BasicXx"); double xy = jObject.Value("BasicXy"); double xz = jObject.Value("BasicXz"); double yx = jObject.Value("BasicYx"); double yy = jObject.Value("BasicYy"); double yz = jObject.Value("BasicYz"); double zx = jObject.Value("BasicZx"); double zy = jObject.Value("BasicZy"); double zz = jObject.Value("BasicZz"); Transform transform = Transform.Identity; transform.Origin = new XYZ(ox, oy, oz); transform.BasisX = new XYZ(xx, xy, xz); transform.BasisY = new XYZ(yx, yy, yz); transform.BasisZ = new XYZ(zx, zy, zz); return transform; } public override bool CanConvert(Type objectType) { if (objectType == typeof(Transform)) { return true; } return false; } } }