using Autodesk.Revit.DB; namespace GeologyToolkit { internal class SoilLayer { public double TopElev => GetTopElev(); public double BottomElev => GetBottomElev(); public Borehole Ower { get; set; } /// /// 土层厚度 /// public double Thickness { get; set; } public FamilyInstance RvInstance { get; set; } /// /// 土层序号 /// public int SerialNum { get; set; } public string Color { get; set; } /// /// 风化程度 /// public string DegreeofWeathering { get; set; } /// /// 其他描述 /// public string OtherDescription { get; set; } /// /// 颜色代码 /// public string MaterialCode { get; set; } /// /// 钻孔编号 /// public string BoreholeNum { get; set; } /// /// 土层名称 /// public string Name { get; set; } private double GetBottomElev() { double bottom = Ower.Elev; for (int i = 0; i < Ower.SoilLayers.Count; i++) { if (i > SerialNum) { break; } bottom -= Ower.SoilLayers[i].Thickness; } return bottom; } private double GetTopElev() { double top = Ower.Elev; for (int i = 0; i < Ower.SoilLayers.Count; i++) { if (i == SerialNum) { break; } top -= Ower.SoilLayers[i].Thickness; } return top; } ///// ///// 相等操作为于土层编号相等,与土层位置无关 ///// ///// ///// //public override bool Equals(object obj) //{ // if (obj == null)//步骤1 // return false; // if (this.GetType() != obj.GetType())//步骤3 // return false; // if (ReferenceEquals(this, obj)) // return true; // if (this.MaterialCode == ((SoilLayer)obj).MaterialCode) // { // return true; // } // return Equals((SoilLayer)obj);//步骤4 // //return base.Equals(obj); //} //public override int GetHashCode() //{ // return MaterialCode != null ? StringComparer.InvariantCulture.GetHashCode(MaterialCode) : 0; //} } }