using System; using System.Collections.Generic; using System.ComponentModel; #if WEB_SERVICE #else using System.Drawing.Design; #endif using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Serialization; namespace GeoSigma.SigmaDrawerStyle { /// /// 等值线相关属性 /// public class ContourProperty { private IContourPropertyChange iChange; private int contourInterval; private int contourOnStep; //private double zValueRange; private string contourTypeName; private string contourNoTypeName; private FaultMethod faultExistMethod; private string faultFile; //private string faultType; private double minValue; private double maxValue; /// /// 属性类别排序 /// private List categorys = new List() { "曲面", "断层", "其他", "杂项" }; /// /// Initializes a new instance of the class. /// /// 事件 public ContourProperty(IContourPropertyChange iChange) { this.iChange = iChange; this.contourInterval = 10; this.contourOnStep = 5; //this.zValueRange this.contourTypeName = @"Layer:\Contour\Mark"; this.contourNoTypeName = @"Layer:\Contour\Other"; this.faultExistMethod = FaultMethod.没有断层; this.faultFile = string.Empty; //this.faultType = string.Empty; minValue = iChange.GetMeshItemsMinValue(); maxValue = iChange.GetMeshItemsMaxValue(); } #region 曲面 [XmlIgnore] [Category("曲面"), DisplayName("\t\t\t等值线间隔")] public int ContourInterval { get { return this.contourInterval; } set { this.contourInterval = value; } } /// Gets or sets the contour on step. /// The contour on step. [XmlIgnore] [Category("曲面"), DisplayName("\t\t\t等值线上步长")] public int ContourOnStep { get { return this.contourOnStep; } set { this.contourOnStep = value; } } private ZValue zValue; [XmlIgnore] [Category("曲面"), DisplayName("\t\t\tZ值范围")] [TypeConverter(typeof(SigmaDrawerStyle.Converter.BaseExpandableConverter))] public ZValue ZValueRange { get { if (zValue == null) { zValue = new ZValue(); } zValue.Zmin = minValue; zValue.Zmax = maxValue; return zValue; } set { this.zValue = value; } } #endregion #region 层位 [XmlIgnore] [Category("层位"), DisplayName("\t\t\t等值线上数类别名")] public string ContourTypeName { get { return this.contourTypeName; } set { this.contourTypeName = value; } } [XmlIgnore] [Category("层位"), DisplayName("\t\t\t等值线上数类别名")] public string ContourNoTypeName { get { return this.contourNoTypeName; } set { this.contourNoTypeName = value; } } #endregion #region 断层 [XmlIgnore] [Category("断层"), DisplayName("\t\t\t断层存在方式")] public FaultMethod FaultExistMethod { get { return this.faultExistMethod; } set { this.faultExistMethod = value; } } [XmlIgnore] [Category("断层"), DisplayName("\t\t\t断层文件")] #if WEB_SERVICE #else [Editor("UCDraw.PropertyGrids.PropertyGridOpenFile, UCDraw", typeof(UITypeEditor))] #endif public string FaultFile { get { return faultFile; } set { faultFile = value; } } [Category("断层"), DisplayName("\t\t\t断层类别")] #if WEB_SERVICE #else [Editor("UCDraw.Editor.LayerEditor, UCDraw", typeof(UITypeEditor))] #endif public string FaultType { get; set; } #endregion public enum FaultMethod { 没有断层, 断层在文件中, 断层在指定类别中 } } public interface IContourPropertyChange { double GetMeshItemsMinValue(); double GetMeshItemsMaxValue(); } public class ZValue { private double maxValue; private double minValue; /// /// Initializes a new instance of the class. /// public ZValue() { } [DisplayName("\t\t\t最小")] [XmlIgnore] [NotifyParentProperty(true)] public double Zmin { get { return minValue; } set { minValue = value; } } [DisplayName("\t\t最大")] [XmlIgnore] [NotifyParentProperty(true)] public double Zmax { get { return maxValue; } set { maxValue = value; } } public override string ToString() { return $"{minValue},{maxValue}"; } } }