ComputerGraphics/20210129/zzx-20210129作业/json/TransformConvert.cs

99 lines
4.3 KiB
C#
Raw Normal View History

2021-02-25 15:53:31 +08:00
/************************************************************************
* 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;
}
}
}