You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
4.0 KiB
C#
109 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
using GeoSigma.SigmaDrawerStyle;
|
|
|
|
namespace SigmaDrawerElement
|
|
{
|
|
[XmlRoot("Layer")]
|
|
[XmlType("Layer")]
|
|
public class DrawerLayer
|
|
{
|
|
[XmlAttribute]
|
|
public string Name { get; set; } = "";
|
|
[XmlAttribute]
|
|
public int Visibility { get; set; } = 1;
|
|
|
|
[XmlElement("HowToViewCurve")]
|
|
public DrawerCurveStyle CurveStyle { set; get; }
|
|
[XmlElement("HowToViewPoint")]
|
|
public DrawerPointStyle PointStyle { set; get; }
|
|
|
|
[XmlIgnore]
|
|
[XmlElement("Visibility")]
|
|
public LayerElementVisibility ElementVisibility { get; set; } = new LayerElementVisibility();
|
|
|
|
[XmlIgnore]
|
|
[XmlElement("Color")]
|
|
public LayerElementColor ElementColor { get; set; } = new LayerElementColor();
|
|
|
|
//Type[] Types = { typeof(DrawerPoint), typeof(DrawerPointTwoName), typeof(DrawerPointCrossName) };
|
|
|
|
[XmlElement("Point", typeof(DrawerPoint))]
|
|
[XmlElement("TwoPoint", typeof(DrawerPointTwoName))]
|
|
[XmlElement("CrossPoint", typeof(DrawerPointCrossName))]
|
|
[XmlElement("Pline", typeof(DrawerPline))]
|
|
[XmlElement("Surface", typeof(DrawerSurface))]
|
|
[XmlElement("Text", typeof(DrawerText))]
|
|
[XmlElement("Ellipse", typeof(DrawerEllipse))]
|
|
[XmlElement("Arc", typeof(DrawerArc))]
|
|
[XmlElement("Proportion", typeof(DrawerProportion))]
|
|
[XmlElement("Frame", typeof(DrawerFrame))]
|
|
[XmlElement("FGrid", typeof(DrawerFrameGrid))]
|
|
[XmlElement("FNetting", typeof(DrawerFrameNet))]
|
|
[XmlElement("Xyz", typeof(DrawerXyz))]
|
|
public List<ElementBase> Elements { get; set; } = new List<ElementBase>();
|
|
|
|
public string ToXml()
|
|
{
|
|
XmlWriterSettings settings = new XmlWriterSettings();
|
|
settings.Indent = true;
|
|
settings.IndentChars = " ";
|
|
settings.NewLineChars = "\r\n";
|
|
settings.Encoding = Encoding.Default;
|
|
// 去除xml声明
|
|
settings.OmitXmlDeclaration = true;
|
|
|
|
System.IO.MemoryStream mem = new MemoryStream();
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
using (StringWriter stringWriter = new StringWriter(sb))
|
|
{
|
|
using (XmlWriter writer = XmlWriter.Create(stringWriter, settings))
|
|
{
|
|
// 去除默认命名空间xmlns:xsd和xmlns:xsi
|
|
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
|
|
ns.Add(string.Empty, string.Empty);
|
|
|
|
// Create the XmlAttributeOverrides and XmlAttributes objects.
|
|
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
|
|
XmlAttributes attrs = new XmlAttributes();
|
|
|
|
XmlSerializer formatter = new XmlSerializer(this.GetType());
|
|
formatter.Serialize(writer, this, ns);
|
|
}
|
|
}
|
|
// string strData = Encoding.Default.GetString(mem.ToArray());
|
|
string strData = sb.ToString();
|
|
|
|
if (this.CurveStyle != null)
|
|
{
|
|
int nInsert = strData.LastIndexOf("</Layer>");
|
|
strData.Insert(nInsert, "<HowToViewCurve />" + System.Environment.NewLine);
|
|
}
|
|
else if (this.PointStyle != null)
|
|
{
|
|
int nInsert = strData.LastIndexOf("</Layer>");
|
|
strData.Insert(nInsert, "<HowToViewPoint />" + System.Environment.NewLine);
|
|
}
|
|
// strData.Replace("")
|
|
return strData;
|
|
}
|
|
}
|
|
public class LayerElementVisibility
|
|
{
|
|
[XmlAttribute("Value")]
|
|
public int Visibility { get; set; } = 1;
|
|
}
|
|
public class LayerElementColor
|
|
{
|
|
[XmlAttribute("Value")]
|
|
public int ElementColor { get; set; } = 0;
|
|
}
|
|
}
|