ComputerGraphics/20210129/zzx-20210129作业/json/TransformConvert.cs
2021-02-25 15:53:31 +08:00

99 lines
4.3 KiB
C#

/************************************************************************
* 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<double>("OriginX");
double oy = jObject.Value<double>("OriginY");
double oz = jObject.Value<double>("OriginZ");
double xx = jObject.Value<double>("BasicXx");
double xy = jObject.Value<double>("BasicXy");
double xz = jObject.Value<double>("BasicXz");
double yx = jObject.Value<double>("BasicYx");
double yy = jObject.Value<double>("BasicYy");
double yz = jObject.Value<double>("BasicYz");
double zx = jObject.Value<double>("BasicZx");
double zy = jObject.Value<double>("BasicZy");
double zz = jObject.Value<double>("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;
}
}
}