Пример #1
0
        public static string GetCoreEstimatedDataToString(CoreAssessResult result)
        {
            StringBuilder strBulider = new StringBuilder();

            if (result.assessCoreDataList != null && result.assessCoreDataList.Count > 0)
            {
                string str = "、";
                foreach (CorePointExt core in result.assessCoreDataList)
                {
                    if (core != result.assessCoreDataList.First())
                    {
                        strBulider.Append("|");
                    }
                    strBulider.Append(core.pointName + ":");
                    strBulider.Append("横坐标(毫米)" + str);
                    strBulider.Append("纵坐标(千克)" + str);
                    strBulider.Append(core.pointXValue.ToString() + str);
                    strBulider.Append(core.pointYValue.ToString() + str);
                    strBulider.Append(core.isAssess.ToString() + str);
                    strBulider.Append(core.weightedValue.ToString() + str);
                    strBulider.Append(core.assessValue.ToString());
                }
            }

            return(strBulider.ToString());
        }
        private void btnConfirm_Click(object sender, EventArgs e)
        {
            ownerForm.saveCoreGridView(this.assessCoreDatas, "1");
            CoreAssessResult car = this.ownerForm.coreAssessResult;

            car.topMarginMin  = Convert.ToDouble(this.txtTopMarginMin.Text);
            car.topMarginMax  = Convert.ToDouble(this.txtTopMarginMax.Text);
            car.downMarginMin = Convert.ToDouble(this.txtDownMarginMin.Text);
            car.downMarginMax = Convert.ToDouble(this.txtDownMarginMax.Text);
            this.Close();
        }
Пример #3
0
        public void ExportCoreEstimatedToExcle(string strFileName, CoreAssessResult result)
        {
            Excel.Application app = new Excel.ApplicationClass();
            try
            {
                Object missing = System.Reflection.Missing.Value;
                app.Visible = false;

                Excel.Workbook wBook = app.Workbooks.Add(missing);

                Excel.Worksheet wSheet = wBook.Worksheets[1] as Excel.Worksheet;

                Excel.Range DataCell = wSheet.get_Range("A1", "A1");
                DataCell.Value2                                    = "重心坐标点名称";
                DataCell.Next.Value2                               = "横轴单位";
                DataCell.Next.Next.Value2                          = "纵轴单位";
                DataCell.Next.Next.Next.Value2                     = "横轴数值";
                DataCell.Next.Next.Next.Next.Value2                = "纵轴数值";
                DataCell.Next.Next.Next.Next.Next.Value2           = "是否评估";
                DataCell.Next.Next.Next.Next.Next.Next.Value2      = "权重";
                DataCell.Next.Next.Next.Next.Next.Next.Next.Value2 = "评估结果";

                List <CorePointExt> lstCorePoint = result.assessCoreDataList;
                for (int i = 0; i < lstCorePoint.Count; ++i)
                {
                    CorePointExt core = lstCorePoint[i];

                    string cellid = "A" + (i + 2).ToString();
                    DataCell                                           = wSheet.get_Range(cellid, cellid);
                    DataCell.Value2                                    = core.pointName;
                    DataCell.Next.Value2                               = "毫米";
                    DataCell.Next.Next.Value2                          = "千克";
                    DataCell.Next.Next.Next.Value2                     = core.pointXValue;
                    DataCell.Next.Next.Next.Next.Value2                = core.pointYValue;
                    DataCell.Next.Next.Next.Next.Next.Value2           = core.isAssess;
                    DataCell.Next.Next.Next.Next.Next.Next.Value2      = core.weightedValue;
                    DataCell.Next.Next.Next.Next.Next.Next.Next.Value2 = core.assessValue;
                }

                //设置禁止弹出保存和覆盖的询问提示框
                app.DisplayAlerts          = false;
                app.AlertBeforeOverwriting = false;
                //保存工作簿
                wBook.SaveAs(strFileName, Excel.XlFileFormat.xlWorkbookNormal, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
                wBook.Close(false, missing, missing);
                app.Quit();
                app = null;
            }
            catch (Exception err)
            {
                MessageBox.Show("导出Excel出错!错误原因:" + err.Message, "提示信息",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Пример #4
0
        private void btnConfirm_Click(object sender, EventArgs e)
        {
            if (txtResultName.Text == "")
            {
                MessageBox.Show("请输入重心包线评估结果名称");
                return;
            }
            else
            {
                this.coreAssessResult.resultName = txtResultName.Text;
            }
            if (this.coreAssessResult.assessCoreDataList.Count == 0 ||
                this.coreAssessResult.datumCoreDataList.Count == 0)
            {
                MessageBox.Show("请加载基准/评估重心包线数据");
                return;
            }
            //if (this.coreAssessResult == null)
            //{
            //    this.coreAssessResult = new CoreAssessResult();
            //}
            CoreAssessResult car = this.coreAssessResult;

            //重心包线评估
            if (!evaluationCoreMethod01(car))
            {
                this.saveCoreGridView(this.coreAssessResult.assessCoreDataList, "1");
                return;
            }
            ;

            //add
            if (IsEdit == false)
            {
                if (mainForm.designProjectData.CoreAssessResultList == null)
                {
                    mainForm.designProjectData.CoreAssessResultList = new List <CoreAssessResult>();
                }
                mainForm.designProjectData.CoreAssessResultList.Add(car);
                mainForm.BindProjectTreeData(mainForm.designProjectData);//用于绑定主窗口的工程树结点
                mainForm.SetCoreEstimatedTab(car, mainForm.designProjectData.CoreAssessResultList.Count - 1);
            }
            else
            {
                mainForm.SetCoreEstimatedTab(car);
            }
            this.Close();
        }
        private void btnConfirm_Click(object sender, EventArgs e)
        {
            int[] i = { Convert.ToInt32(this.txtTopMarginMin.Text),  Convert.ToInt32(this.txtTopMarginMax.Text),
                        Convert.ToInt32(this.txtDownMarginMin.Text), Convert.ToInt32(this.txtDownMarginMax.Text) };
            if (!(i[0] < i[1] && i[1] < i[2] && i[2] < i[3]))
            {
                MessageBox.Show("请按前限前裕度<前限后裕度<后限前裕度<后限后裕度");
                return;
            }

            ownerForm.saveCoreGridView(this.assessCoreDatas, "1");
            CoreAssessResult car = this.ownerForm.coreAssessResult;

            car.topMarginMin  = Convert.ToDouble(this.txtTopMarginMin.Text) / 100;
            car.topMarginMax  = Convert.ToDouble(this.txtTopMarginMax.Text) / 100;
            car.downMarginMin = Convert.ToDouble(this.txtDownMarginMin.Text) / 100;
            car.downMarginMax = Convert.ToDouble(this.txtDownMarginMax.Text) / 100;
            this.Close();
        }
        /// <summary>
        /// 重心包线评估
        /// </summary>
        /// <param name="resut"></param>
        public bool evaluationCoreMethod01(CoreAssessResult result)
        {
            // 查看基准重心包线是否完备
            if (result.datumCoreDataList == null)
            {
                return false;
            }
            else if (result.datumCoreDataList.Count == 0)
            {
                return false;
            }

            // 查看待评估重心包线是否完备
            if (result.assessCoreDataList == null)
            {
                return false;
            }
            else if (result.assessCoreDataList.Count == 0)
            {
                return false;
            }

            foreach (CorePointExt cp in result.assessCoreDataList)
            {
                if (cp.isAssess == true)
                {
                    // 交点X Y坐标列表
                    List<double> lstPointX = new List<double>();
                    List<double> lstPointY = new List<double>();

                    // 找出该点水平线与包线所有交点
                    for (int i = 0; i < result.datumCoreDataList.Count; i = i + 1)
                    {
                        double fStartX;
                        double fStartY;
                        double fEndX;
                        double fEndY;

                        if (i != result.datumCoreDataList.Count - 1)
                        {
                            fStartX = result.datumCoreDataList[i].pointXValue;
                            fStartY = result.datumCoreDataList[i].pointYValue;
                            fEndX = result.datumCoreDataList[i + 1].pointXValue;
                            fEndY = result.datumCoreDataList[i + 1].pointYValue;
                        }
                        else
                        {
                            fStartX = result.datumCoreDataList[i].pointXValue;
                            fStartY = result.datumCoreDataList[i].pointYValue;
                            fEndX = result.datumCoreDataList[0].pointXValue;
                            fEndY = result.datumCoreDataList[0].pointYValue;
                        }
                        // 超出Y范围
                        if (cp.pointYValue > fStartY && cp.pointYValue > fEndY)
                        {
                            continue;
                        }
                        else if (cp.pointYValue < fStartY && cp.pointYValue < fEndY)
                        {
                            continue;
                        }
                        else// 处理
                        {
                            // 若直线水平,则有两点相交
                            if (fStartY == fEndY)
                            {
                                lstPointX.Add(fStartX);
                                lstPointY.Add(fStartY);

                                lstPointX.Add(fEndX);
                                lstPointY.Add(fEndY);
                            }

                            // 若直线非水平,则只有一点相交
                            if (fStartY != fEndY)
                            {
                                // 若直线垂直,获得交点
                                if (fStartX == fEndX)
                                {
                                    lstPointX.Add(fStartX);
                                    lstPointY.Add(cp.pointYValue);
                                }
                                else // 若直线不垂直,使用直线方程获得交点
                                {
                                    lstPointX.Add((fEndX - fStartX) / (fEndY - fStartY) * (cp.pointYValue - fStartY) + fStartX);
                                    lstPointY.Add(cp.pointYValue);
                                }
                            }
                        }

                    }
                    // 找完交点后,根据交点求评估结果
                    // 排除Y值超限的点
                    if (lstPointX.Count == 0)
                    {
                        MessageBox.Show("待评估重心点" + cp.pointName + "的重量坐标位于基准评估重心范围外,自动剔除并平衡权重");
                        cp.isAssess = false;
                        cp.weightedValue = 0.0;
                        cp.assessValue = 0;
                        continue;
                    }
                    else
                    {
                        double fMaxX = lstPointX[0];
                        double fMinX = lstPointX[0];
                        //查找最大、最小横坐标
                        for (int i = 0; i < lstPointX.Count; i++)
                        {
                            if (fMaxX < lstPointX[i])
                            {
                                fMaxX = lstPointX[i];
                            }
                            if (fMinX > lstPointX[i])
                            {
                                fMinX = lstPointX[i];
                            }
                        }
                        // 排除范围外的点
                        if (cp.pointXValue < fMaxX && cp.pointXValue < fMinX)
                        {
                            MessageBox.Show("待评估重心点" + cp.pointName + "的横坐标位于基准评估重心范围外,自动剔除并平衡权重");
                            cp.isAssess = false;
                            cp.weightedValue = 0.0;
                            cp.assessValue = 0;
                            continue;
                        }
                        else if (cp.pointXValue > fMaxX && cp.pointXValue > fMinX)
                        {
                            MessageBox.Show("待评估重心点" + cp.pointName + "的横坐标位于基准评估重心范围外,自动剔除并平衡权重");
                            cp.isAssess = false;
                            cp.weightedValue = 0.0;
                            cp.assessValue = 0;
                            continue;
                        }
                        // 判断是否为定顶点
                        if (fMaxX == fMinX)
                        {
                            // 评估点位于顶点 评估结果为0
                            cp.assessValue = 0.0;
                        }
                        else// 非顶点
                        {
                            double fLength = (fMaxX - fMinX) * ((result.downMarginMax + result.downMarginMin) * 0.5 - (result.topMarginMax + result.topMarginMin) * 0.5);
                            //double fMidX = fMinX + (fMaxX - fMinX) * ((result.topMarginMax - result.topMarginMin) * 0.5) + fLength / 2.0;
                            double fMidX = fMinX + (fMaxX - fMinX) * (result.downMarginMax + result.downMarginMin + result.topMarginMax + result.topMarginMin) / 4;
                            if (fLength <= 0)
                                cp.assessValue = 0.0;
                            else
                                cp.assessValue = 1 - Math.Abs(cp.pointXValue - fMidX) / fLength * 2.0;
                        }
                    }

                }
            }
            // 根据修改后的待评估重心,重新设定权重,计算最终结果
            // 求和权重
            double fSum = 0.0;
            foreach (CorePointExt cp in result.assessCoreDataList)
            {
                if (cp.isAssess == true)
                {
                    fSum = cp.weightedValue + fSum;
                }
            }
            if (fSum <= 0.0)
            {
                MessageBox.Show("权重设置有误");
                return false;
            }
            // 重新分配权重
            foreach (CorePointExt cp in result.assessCoreDataList)
            {
                if (cp.isAssess == true)
                {
                    cp.weightedValue = cp.weightedValue / fSum;
                }
            }
            // 计算评估结果
            result.evaluationResult = 0.0;
            foreach (CorePointExt cp in result.assessCoreDataList)
            {
                if (cp.isAssess == true)
                {
                    result.evaluationResult = result.evaluationResult + cp.weightedValue * cp.assessValue;
                }
            }
            return true;
        }
 public CoreEnvelopeAssessForm(CoreAssessResult coreAssessResult)
 {
     IsEdit = true;
     InitializeComponent();
     this.coreAssessResult = coreAssessResult;
 }
Пример #8
0
        public void ExportCoreEstimatedToExcle(string strFileName, CoreAssessResult result)
        {
            Excel.Application app = new Excel.ApplicationClass();
            try
            {
                Object missing = System.Reflection.Missing.Value;
                app.Visible = false;

                Excel.Workbook wBook = app.Workbooks.Add(missing);

                Excel.Worksheet wSheet = wBook.Worksheets[1] as Excel.Worksheet;

                Excel.Range DataCell = wSheet.get_Range("A1", "A1");
                DataCell.Value2 = "重心坐标点名称";
                DataCell.Next.Value2 = "横轴单位";
                DataCell.Next.Next.Value2 = "纵轴单位";
                DataCell.Next.Next.Next.Value2 = "横轴数值";
                DataCell.Next.Next.Next.Next.Value2 = "纵轴数值";
                DataCell.Next.Next.Next.Next.Next.Value2 = "是否评估";
                DataCell.Next.Next.Next.Next.Next.Next.Value2 = "权重";
                DataCell.Next.Next.Next.Next.Next.Next.Next.Value2 = "评估结果";

                List<CorePointExt> lstCorePoint = result.assessCoreDataList;
                for (int i = 0; i < lstCorePoint.Count; ++i)
                {
                    CorePointExt core = lstCorePoint[i];

                    string cellid = "A" + (i + 2).ToString();
                    DataCell = wSheet.get_Range(cellid, cellid);
                    DataCell.Value2 = core.pointName;
                    DataCell.Next.Value2 = "毫米";
                    DataCell.Next.Next.Value2 = "千克";
                    DataCell.Next.Next.Next.Value2 = core.pointXValue;
                    DataCell.Next.Next.Next.Next.Value2 = core.pointYValue;
                    DataCell.Next.Next.Next.Next.Next.Value2 = core.isAssess;
                    DataCell.Next.Next.Next.Next.Next.Next.Value2 = core.weightedValue;
                    DataCell.Next.Next.Next.Next.Next.Next.Next.Value2 = core.assessValue;
                }

                //设置禁止弹出保存和覆盖的询问提示框
                app.DisplayAlerts = false;
                app.AlertBeforeOverwriting = false;
                //保存工作簿
                wBook.SaveAs(strFileName, Excel.XlFileFormat.xlWorkbookNormal, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
                wBook.Close(false, missing, missing);
                app.Quit();
                app = null;

            }
            catch (Exception err)
            {
                MessageBox.Show("导出Excel出错!错误原因:" + err.Message, "提示信息",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Пример #9
0
        public static string GetCoreEstimatedDataToString(CoreAssessResult result)
        {
            StringBuilder strBulider = new StringBuilder();

            if (result.assessCoreDataList != null && result.assessCoreDataList.Count > 0)
            {
                string str = "、";
                foreach (CorePointExt core in result.assessCoreDataList)
                {
                    if (core != result.assessCoreDataList.First())
                    {
                        strBulider.Append("|");
                    }
                    strBulider.Append(core.pointName + ":");
                    strBulider.Append("横坐标(毫米)" + str);
                    strBulider.Append("纵坐标(千克)" + str);
                    strBulider.Append(core.pointXValue.ToString() + str);
                    strBulider.Append(core.pointYValue.ToString() + str);
                    strBulider.Append(core.isAssess.ToString() + str);
                    strBulider.Append(core.weightedValue.ToString() + str);
                    strBulider.Append(core.assessValue.ToString());
                }
            }

            return strBulider.ToString();
        }
Пример #10
0
        public void ExportCoreEstimatedToXml(string strFileName, CoreAssessResult result)
        {
            if (result.assessCoreDataList != null && result.assessCoreDataList.Count > 0)
            {
                XmlDocument xmldoc = new XmlDocument();
                XmlTextWriter writeXml = null;
                try
                {
                    writeXml = new XmlTextWriter(strFileName, Encoding.GetEncoding("gb2312"));
                }
                catch
                {
                    MessageBox.Show("创建或写入文件失败!");
                    return;
                }

                writeXml.Formatting = Formatting.Indented;
                writeXml.Indentation = 5;
                writeXml.WriteStartDocument();

                writeXml.WriteStartElement("重心评估");
                writeXml.WriteStartElement("重心评估参数列表");

                foreach (CorePointExt core in result.assessCoreDataList)
                {
                    writeXml.WriteStartElement("重心评估数据");
                    {
                        writeXml.WriteStartElement("重心坐标点名称");
                        writeXml.WriteString(core.pointName);
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("横轴单位");
                        writeXml.WriteString("毫米");
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("纵轴单位");
                        writeXml.WriteString("千克");
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("横轴数值");
                        writeXml.WriteString(core.pointXValue.ToString());
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("纵轴数值");
                        writeXml.WriteString(core.pointYValue.ToString());
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("是否评估");
                        writeXml.WriteString(core.isAssess.ToString());
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("权重");
                        writeXml.WriteString(core.weightedValue.ToString());
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("评估结果");
                        writeXml.WriteString(core.assessValue.ToString());
                        writeXml.WriteEndElement();
                    }
                    writeXml.WriteEndElement();
                }

                writeXml.WriteEndElement();
                writeXml.WriteEndElement();
                writeXml.WriteEndDocument();
                writeXml.Close();
            }
        }
 public CoreEnvelopeAssessForm(CoreAssessResult coreAssessResult)
 {
     IsEdit = true;
     InitializeComponent();
     this.coreAssessResult = coreAssessResult;
 }
        /// <summary>
        /// 重心包线评估
        /// </summary>
        /// <param name="resut"></param>
        public void evaluationCoreMethod01(CoreAssessResult result)
        {
            // 查看基准重心包线是否完备
            if (result.datumCoreDataList == null)
            {
                return;
            }
            else if (result.datumCoreDataList.Count == 0)
            {
                return;
            }

            // 查看待评估重心包线是否完备
            if (result.assessCoreDataList == null)
            {
                return;
            }
            else if (result.assessCoreDataList.Count == 0)
            {
                return;
            }

            foreach (CorePointExt cp in result.assessCoreDataList)
            {
                if (cp.isAssess == true)
                {
                    // 交点X Y坐标列表
                    List <double> lstPointX = new List <double>();
                    List <double> lstPointY = new List <double>();

                    // 找出该点水平线与包线所有交点
                    for (int i = 0; i < result.datumCoreDataList.Count; i = i + 1)
                    {
                        double fStartX;
                        double fStartY;
                        double fEndX;
                        double fEndY;

                        if (i != result.datumCoreDataList.Count - 1)
                        {
                            fStartX = result.datumCoreDataList[i].pointXValue;
                            fStartY = result.datumCoreDataList[i].pointYValue;
                            fEndX   = result.datumCoreDataList[i + 1].pointXValue;
                            fEndY   = result.datumCoreDataList[i + 1].pointYValue;
                        }
                        else
                        {
                            fStartX = result.datumCoreDataList[i].pointXValue;
                            fStartY = result.datumCoreDataList[i].pointYValue;
                            fEndX   = result.datumCoreDataList[0].pointXValue;
                            fEndY   = result.datumCoreDataList[0].pointYValue;
                        }
                        // 超出Y范围
                        if (cp.pointYValue > fStartY && cp.pointYValue > fEndY)
                        {
                            continue;
                        }
                        else if (cp.pointYValue < fStartY && cp.pointYValue < fEndY)
                        {
                            continue;
                        }
                        else// 处理
                        {
                            // 若直线水平,则有两点相交
                            if (fStartY == fEndY)
                            {
                                lstPointX.Add(fStartX);
                                lstPointY.Add(fStartY);

                                lstPointX.Add(fEndX);
                                lstPointY.Add(fEndY);
                            }

                            // 若直线非水平,则只有一点相交
                            if (fStartY != fEndY)
                            {
                                // 若直线垂直,获得交点
                                if (fStartX == fEndX)
                                {
                                    lstPointX.Add(fStartX);
                                    lstPointY.Add(cp.pointYValue);
                                }
                                else // 若直线不垂直,使用直线方程获得交点
                                {
                                    lstPointX.Add((fEndX - fStartX) / (fEndY - fStartY) * (cp.pointYValue - fStartY) + fStartX);
                                    lstPointY.Add(cp.pointYValue);
                                }
                            }
                        }
                    }
                    // 找完交点后,根据交点求评估结果
                    // 排除Y值超限的点
                    if (lstPointX.Count == 0)
                    {
                        MessageBox.Show("待评估重心点" + cp.pointName + "的重量坐标位于基准评估重心范围外,自动剔除并平衡权重");
                        cp.isAssess      = false;
                        cp.weightedValue = 0.0;
                        continue;
                    }
                    else
                    {
                        double fMaxX = lstPointX[0];
                        double fMinX = lstPointX[0];
                        //查找最大、最小横坐标
                        for (int i = 0; i < lstPointX.Count; i++)
                        {
                            if (fMaxX < lstPointX[i])
                            {
                                fMaxX = lstPointX[i];
                            }
                            if (fMinX > lstPointX[i])
                            {
                                fMinX = lstPointX[i];
                            }
                        }
                        // 排除范围外的点
                        if (cp.pointXValue < fMaxX && cp.pointXValue < fMinX)
                        {
                            MessageBox.Show("待评估重心点" + cp.pointName + "的横坐标位于基准评估重心范围外,自动剔除并平衡权重");
                            cp.isAssess      = false;
                            cp.weightedValue = 0.0;
                            continue;
                        }
                        else if (cp.pointXValue > fMaxX && cp.pointXValue > fMinX)
                        {
                            MessageBox.Show("待评估重心点" + cp.pointName + "的横坐标位于基准评估重心范围外,自动剔除并平衡权重");
                            cp.isAssess      = false;
                            cp.weightedValue = 0.0;
                            continue;
                        }
                        // 判断是否为定顶点
                        if (fMaxX == fMinX)
                        {
                            // 评估点位于顶点 评估结果为0
                            cp.assessValue = 0.0;
                        }
                        else// 非顶点
                        {
                            double fLength = (fMaxX - fMinX) * ((result.downMarginMax + result.downMarginMin) * 0.5 - (result.topMarginMax + result.topMarginMin) * 0.5);
                            double fMidX   = fMinX + (fMaxX - fMinX) * ((result.topMarginMax - result.topMarginMin) * 0.5) + fLength / 2.0;
                            if (fLength <= 0)
                            {
                                cp.assessValue = 0.0;
                            }
                            else
                            {
                                cp.assessValue = 1 - Math.Abs(cp.pointXValue - fMidX) / fLength;
                            }
                        }
                    }
                }
            }
            // 根据修改后的待评估重心,重新设定权重,计算最终结果
            // 求和权重
            double fSum = 0.0;

            foreach (CorePointExt cp in result.assessCoreDataList)
            {
                if (cp.isAssess == true)
                {
                    fSum = cp.weightedValue + fSum;
                }
            }
            if (fSum <= 0.0)
            {
                MessageBox.Show("权重设置有误");
                return;
            }
            // 重新分配权重
            foreach (CorePointExt cp in result.assessCoreDataList)
            {
                if (cp.isAssess == true)
                {
                    cp.weightedValue = cp.weightedValue / fSum;
                }
            }
            // 计算评估结果
            result.evaluationResult = 0.0;
            foreach (CorePointExt cp in result.assessCoreDataList)
            {
                if (cp.isAssess == true)
                {
                    result.evaluationResult = result.evaluationResult + cp.weightedValue * cp.assessValue;
                }
            }
        }
        /// <summary>
        /// 重心包线评估结果到SyswareDataObject.xml
        /// </summary>
        /// <param name="result"></param>
        /// <param name="isAddChildren">是否增加子结点</param>
        /// <returns></returns>
        public static string saveCoreEnvelopeAssessDataObjectToXml(CoreAssessResult result, bool isAddChildren)
        {
            string path = null;

            try
            {
                SyswareDataObject sdo    = new SyswareDataObject();
                SyswareDataObject subSdo = new SyswareDataObject();
                subSdo.id   = result.resultID;
                subSdo.name = result.resultName;

                SyswareDataObject cSdo = new SyswareDataObject();
                cSdo.name     = "基准重心包线数据";
                cSdo.children = transFormCoreEnvelopeCutToDataObject(result.datumCoreDataList);
                subSdo.children.Add(cSdo);

                cSdo          = new SyswareDataObject();
                cSdo.name     = "重心包线评估数据";
                cSdo.children = transFormCoreEnvelopeCutToDataObject(result.assessCoreDataList);
                subSdo.children.Add(cSdo);


                cSdo       = new SyswareDataObject();
                cSdo.name  = "合理性评估数据";
                cSdo.value = Math.Round(result.evaluationResult, 6).ToString();
                foreach (CorePointExt cpdEx in result.assessCoreDataList)
                {
                    SyswareDataObject nSdo = new SyswareDataObject();
                    nSdo.name = cpdEx.pointName;

                    SyswareDataObject aSdo = new SyswareDataObject();
                    aSdo.name  = "评估结果";
                    aSdo.value = Math.Round(Convert.ToDouble(cpdEx.assessValue), 6).ToString();
                    //aSdo.unit = "Kilogram";
                    nSdo.children.Add(aSdo);

                    SyswareDataObject wSdo = new SyswareDataObject();
                    wSdo.name  = "权重结果";
                    wSdo.value = Math.Round(Convert.ToDouble(cpdEx.weightedValue), 6).ToString();
                    //aSdo.unit = "Kilogram";
                    nSdo.children.Add(wSdo);

                    cSdo.children.Add(nSdo);
                }
                subSdo.children.Add(cSdo);


                if (isAddChildren)
                {
                    sdo = subSdo;
                }
                else
                {
                    sdo.name = "重心包线评估结果";
                    sdo.children.Add(subSdo);
                }


                XmlDocument myXmlDoc = saveSyswareDataObjectToXML(null, null, sdo);
                path = System.IO.Path.GetTempPath() + System.IO.Path.GetRandomFileName() + ".xml";
                //将xml文件保存到临时路径下
                myXmlDoc.Save(path);
            }
            catch
            {
                //XLog.Write("无法保存重心包线评估XML." + e.Message);
                return(null);
            }

            return(path);
        }
Пример #14
0
        public void ExportCoreEstimatedToXml(string strFileName, CoreAssessResult result)
        {
            if (result.assessCoreDataList != null && result.assessCoreDataList.Count > 0)
            {
                XmlDocument   xmldoc   = new XmlDocument();
                XmlTextWriter writeXml = null;
                try
                {
                    writeXml = new XmlTextWriter(strFileName, Encoding.GetEncoding("gb2312"));
                }
                catch
                {
                    MessageBox.Show("创建或写入文件失败!");
                    return;
                }

                writeXml.Formatting  = Formatting.Indented;
                writeXml.Indentation = 5;
                writeXml.WriteStartDocument();

                writeXml.WriteStartElement("重心评估");
                writeXml.WriteStartElement("重心评估参数列表");

                foreach (CorePointExt core in result.assessCoreDataList)
                {
                    writeXml.WriteStartElement("重心评估数据");
                    {
                        writeXml.WriteStartElement("重心坐标点名称");
                        writeXml.WriteString(core.pointName);
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("横轴单位");
                        writeXml.WriteString("毫米");
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("纵轴单位");
                        writeXml.WriteString("千克");
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("横轴数值");
                        writeXml.WriteString(core.pointXValue.ToString());
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("纵轴数值");
                        writeXml.WriteString(core.pointYValue.ToString());
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("是否评估");
                        writeXml.WriteString(core.isAssess.ToString());
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("权重");
                        writeXml.WriteString(core.weightedValue.ToString());
                        writeXml.WriteEndElement();

                        writeXml.WriteStartElement("评估结果");
                        writeXml.WriteString(core.assessValue.ToString());
                        writeXml.WriteEndElement();
                    }
                    writeXml.WriteEndElement();
                }

                writeXml.WriteEndElement();
                writeXml.WriteEndElement();
                writeXml.WriteEndDocument();
                writeXml.Close();
            }
        }