99 lines
4.3 KiB
C#
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;
|
|
}
|
|
}
|
|
} |