Beispiel #1
0
            /// <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;
                    }
                }
            }
Beispiel #2
0
        /// <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 });
        }