/// <summary> /// 构造函数 /// </summary> /// <param name="ExcavName">基坑区域所在的基坑的名称,如A1、B、C1等</param> /// <param name="ExcavPosition">基坑区域的分块名称,如普遍区域、东南侧、西侧等</param> /// <param name="ExcavationID">基坑区域对应的基坑ID的信息</param> /// <param name="strBottomDate">在数据库文件中,指定的开挖区域开挖到基坑底的日期,在构造函数中进行数据类型的转换</param> /// <param name="Range_Process">基坑区域的施工进度中,每一个子区域的开挖标高对应的Range对象, /// 每一个Range对象代表工作表的UsedRange中这个区域的一整列的数据(包括前面几行的表头数据)</param> /// <param name="Range_Date">基坑区域的施工进度中,每一个子区域的开挖日期对应的Range对象, /// 每一个Range对象代表工作表的UsedRange中这个区域的一整列的数据(包括前面几行的表头数据)</param> /// <param name="Date_Elevation">在基坑区域的施工进度中,每一天的日期所对应的开挖标高。</param> /// <remarks></remarks> public clsData_ProcessRegionData(string ExcavName, string ExcavPosition, clsData_ExcavationID ExcavationID, string strBottomDate, Microsoft.Office.Interop.Excel.Range Range_Process, Microsoft.Office.Interop.Excel.Range Range_Date, SortedList <DateTime, Single> Date_Elevation) { // ---------------------------------------- clsData_ProcessRegionData with_1 = this; with_1._ExcavationID = ExcavationID; with_1._ExcavName = ExcavName; with_1._ExcavPosition = ExcavPosition; with_1._description = ExcavName + ":" + ExcavPosition; with_1._Range_Date = Range_Date; with_1._Range_Process = Range_Process; with_1._Date_Elevation = Date_Elevation; //将数据库文件中,指定的开挖区域开挖到基坑底的日期的单元格的数据,转换为日期类型 //如果转换错误,即此单元格为空,或者单元格数据格式不能转换为日期格式,那说明此基坑区域还没有开挖到基坑底部标高 try //对“2014/11/26”形式的日期进行转换 { this._BottomDate = DateTime.Parse(strBottomDate); this._blnHasBottomDate = true; } catch (Exception) { try //对“”形式的日期进行转换,比如“41969”对应于日期的“2014/11/26” { this._BottomDate = DateTime.FromOADate(double.Parse(strBottomDate)); } catch (Exception) { //如果上面两种转换方法都不能将单元格中的数据转换为日期类型,则认为此基坑区域还没有开挖到基坑底部标高 this._blnHasBottomDate = false; } } }
/// <summary> /// 根据数据库中的数据信息,绘制两条数据系列图,并在表示基坑深度的那一条数据系列上绘制此区域所在的基坑ID的构件图 /// </summary> /// <param name="DrawingChart"></param> /// <param name="SelectedRegion"></param> /// <returns></returns> /// <remarks></remarks> public Series[] SetDataSeries(Chart DrawingChart, Series series_DeepestExca, Series Series_Depth, List <clsData_ProcessRegionData> SelectedRegion) { int RegionsCount = System.Convert.ToInt32(SelectedRegion.Count); string[] arrDescrip = new string[RegionsCount - 1 + 1]; //每一个区域的描述,作为坐标轴中的X轴数据 float[] arrDeepest = new float[RegionsCount - 1 + 1]; //每一个区域的坑底标高 float[] arrDepth = new float[RegionsCount - 1 + 1]; //每一个区域在当天的开挖标高,对于初始绘图,先设定这个值为地面标高 clsData_ExcavationID[] arrExcavID = new clsData_ExcavationID[RegionsCount - 1 + 1]; //每一个区域所对应的基坑ID对象 float Elevation_Ground = Project_Expo.Elevation_GroundSurface; //项目的自然地面的标高 //所有选择的区域中的最深的标高位置,以米为单位 float DeepestElevation = Elevation_Ground; for (UInt16 i = 0; i <= RegionsCount - 1; i++) { clsData_ProcessRegionData Region = SelectedRegion.Item(i); arrDescrip[i] = Region.description; float BottomElevation = Region.ExcavationID.ExcavationBottom; arrDeepest[i] = BottomElevation; arrDepth[i] = Elevation_Ground; // ClsData_DataBase.GetElevation(Region.Range, ) DeepestElevation = Math.Min((short)DeepestElevation, (short)BottomElevation); arrExcavID[i] = Region.ExcavationID; } // ------------------------ 设置Chart数据 --------------------------- try { Series with_2 = series_DeepestExca; with_2.Name = ""; with_2.XValues = arrDescrip; with_2.Values = arrDeepest; Series with_3 = Series_Depth; with_3.Name = ""; with_3.XValues = arrDescrip; with_3.Values = arrDepth; } catch (Exception ex) { MessageBox.Show("设置基坑区域开挖图中的开挖标高数据出错!" + "\r\n" + ex.Message + "\r\n" + "报错位置:" + ex.TargetSite.Name, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } // ------------------------ 设置坐标轴格式 --------------------------- try { double max = Elevation_Ground; double min = 0; min = System.Convert.ToDouble(Min_Array <Single>(arrDeepest)); if (min > 0) { min = Math.Ceiling(min); } else //注意Math.Ceiling(-3.2)=-3 { min = Math.Floor(min); } Microsoft.Office.Interop.Excel.Axis axY = DrawingChart.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlValue); axY.MaximumScale = max; axY.MinimumScale = min; axY.AxisTitle.Text = "标高(m)"; Microsoft.Office.Interop.Excel.Axis axX = DrawingChart.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlValue); } catch (Exception ex) { MessageBox.Show("设置基坑区域开挖图中的坐标轴格式出错!" + "\r\n" + ex.Message + "\r\n" + "报错位置:" + ex.TargetSite.Name, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } // -------------- 绘制每一个选定区域所属的基坑ID的支撑位置 ----------- DrawComponents(arrExcavID, DrawingChart, series_DeepestExca); // return(new[] { series_DeepestExca, Series_Depth }); }