using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using System.Text;
using System.Linq;
using DPumpHydr.WinFrmUI.Volute.ViewModel;
namespace DPumpHydr.WinFrmUI.Volute
{
public partial class MainViewPage
{
//步骤控件
StepTreeDockPanel _stepTreeDockPanel = null;
//参数控件
ctrlHdrBaseInfo _ctrlHdrBaseInfo = null;
ctrlGeomBaseInfo _ctrlGeomBaseInfo = null;
ctrlSectionBundleInfo _ctrlSectionBundleInfo = null;
ctrlSectionShapeInfo18 _ctrlSectionShapeInfo18 = null;
ctrlSetOutflowStyle _ctrlSetOutflowStyle = null;
ctrlSetOutflowType _ctrlSetOutflowType = null;
//参数
ViewModel.HdrBaseInfo _hdrBaseInfo = null;
ViewModel.GeomBaseInfo _geomBaseInfo = null;
ViewModel.SectionBundleInfo _sectionBundleInfo = null;
///
/// 下一步
///
///
public bool GoNextStep()
{
return GoNextStepCore();
}
///
/// 上一步
///
///
public bool GoPrevStep()
{
return GoPrevStepCore();
}
///
/// 下一步核心
///
///
private bool GoNextStepCore()
{
var currentStepID = this._stepTreeDockPanel.CurrentStepID;
if (SaveStepParas(currentStepID) == false)
{
return false;
}
//
var next_step_id = this._stepTreeDockPanel.NextStepID;
if (next_step_id > 0)
{
this.SetParasCtrl(next_step_id);
//
this._stepTreeDockPanel.SetFocusedNode(next_step_id);
}
return true;
}
///
///
///
///
///
protected bool SaveStepParas(long stepID)
{
#region 获取当前页面参数
//第一步
if (stepID == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
string error_info;
var hdrBaseInfo = _ctrlHdrBaseInfo.GetBindingData(out error_info);
if (hdrBaseInfo == null)
{
MessageBox.Show(error_info);
return false;
}
hdrBaseInfo.CalcNs();
_hdrBaseInfo = hdrBaseInfo;
if (_geomBaseInfo == null)
{
_geomBaseInfo = new ViewModel.GeomBaseInfo();
}
_geomBaseInfo.Calc(_hdrBaseInfo);
return true;
}
//第二步
if (stepID == this._stepTreeDockPanel.Step_ID_Geom_Base_Info)
{
if (_ctrlGeomBaseInfo == null)
return false;
string error_info;
var geomBaseInfo = _ctrlGeomBaseInfo.GetBindingData(out error_info);
if (geomBaseInfo == null)
{
MessageBox.Show(error_info);
return false;
}
_geomBaseInfo = geomBaseInfo;
if (_sectionBundleInfo == null)
{
_sectionBundleInfo = new ViewModel.SectionBundleInfo();
}
var v3 = ViewModel.SectionBundleInfo.CalcV3(_hdrBaseInfo, _geomBaseInfo);
_sectionBundleInfo.ResetAllParas(_hdrBaseInfo, _geomBaseInfo, v3);
return true;
}
//第三步
if (stepID == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
string error_info;
var sectionBaseInfo = _ctrlSectionBundleInfo.GetBindingData(out error_info);
if (sectionBaseInfo == null)
{
MessageBox.Show(error_info);
return false;
}
_sectionBundleInfo = sectionBaseInfo;
//_sectionBundleInfo.ResetAllParas(_hdrBaseInfo, _geomBaseInfo);
//ViewModel.SectionShapePara _sectionShapePara = null;
//if (_sectionShapePara == null)
//{
// _sectionShapePara = new ViewModel.SectionShapePara();
//}
//_sectionShapePara.Initialparameters(_currentSectIndex, _sectionBaseInfo);
return true;
}
//1-8断面进行下一步点击
if (stepID == this._stepTreeDockPanel.Step_ID_Section18_Grp)
{
//string error_info;
//var sectionShapeInfo18 = _ctrlSectionShapeInfo18.GetBindingData(out error_info);
//if (sectionShapeInfo18 == null)
//{
// MessageBox.Show(error_info);
// return false;
//}
//if (!sectionShapeInfo18.Verify(out error_info))
//{
// MessageBox.Show(error_info);
// return false;
//}
//_sectionShapePara = sectionShapeInfo18;
//_sectionShapePara.CalcHeightByArea(_sectionBaseInfo.ShapeType);
//_sectionBaseInfo.EditSingleShape(_sectionShapePara, _currentSectIndex);
//if (_currentSectIndex != 9)
//{
// _currentSectIndex--;
//}
//_sectionShapePara.Initialparameters(_currentSectIndex, _sectionBaseInfo);
return true;
}
#endregion
return true;
}
///
/// 上一步核心
///
///
private bool GoPrevStepCore()
{
var currentStepID = this._stepTreeDockPanel.CurrentStepID;
ParasInfoBaseCtrl paras_ctrl = GetParasCtrl(currentStepID);
if(paras_ctrl != null && paras_ctrl.IsChangesParas())
{
DialogResult result = MessageBox.Show("已经修改过的数据需要保存吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
if (SaveStepParas(currentStepID) == false )
{
return false;
}
}
}
var prev_step_id = this._stepTreeDockPanel.PrevStepID;
if (prev_step_id == 0)
return false;
this.SetParasCtrl(prev_step_id);
//
this._stepTreeDockPanel.SetFocusedNode(prev_step_id);
return true;
}
///
/// 生成控件的参数控件
///
///
private void SetParasCtrl(long step_id)
{
//第一步
if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
if (_ctrlHdrBaseInfo == null)
{
_ctrlHdrBaseInfo = new ctrlHdrBaseInfo();
_ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo";
}
_ctrlHdrBaseInfo.SetBindingData(_hdrBaseInfo);
AddStepParaCtrl(_ctrlHdrBaseInfo);
}
//第二步
if (step_id == this._stepTreeDockPanel.Step_ID_Geom_Base_Info)
{
if (_ctrlGeomBaseInfo == null)
{
_ctrlGeomBaseInfo = new ctrlGeomBaseInfo();
_ctrlGeomBaseInfo.Name = "ctrlGeomBaseInfo";
}
_ctrlGeomBaseInfo.SetBindingData(_geomBaseInfo);
AddStepParaCtrl(_ctrlGeomBaseInfo);
}
//第三步
if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
if (_ctrlSectionBundleInfo == null)
{
_ctrlSectionBundleInfo = new ctrlSectionBundleInfo();
_ctrlSectionBundleInfo.Name = "ctrlSectionBaseInfo";
_ctrlSectionBundleInfo.OnRefreshShape += RefreshSectShape18;
}
AddStepParaCtrl(_ctrlSectionBundleInfo);
_ctrlSectionBundleInfo.InitialParas(_hdrBaseInfo, _geomBaseInfo);
_ctrlSectionBundleInfo.SetBindingData(_sectionBundleInfo);
}
//第四步
if (step_id > this._stepTreeDockPanel.Step_ID_Section18_Grp &&
step_id <= this._stepTreeDockPanel.Step_ID_Section18_Grp + 8)
{
if (_sectionBundleInfo == null)
return;
if (_ctrlSectionShapeInfo18 == null)
{
_ctrlSectionShapeInfo18 = new ctrlSectionShapeInfo18();
_ctrlSectionShapeInfo18.Name = "ctrlSectionShapeInfo18";
//_ctrlSectionShapeInfo18.OnRefreshShape += RefreshSectShape18;
}
AddStepParaCtrl(_ctrlSectionShapeInfo18);
var sect_index = 9 + this._stepTreeDockPanel.Step_ID_Section18_Grp- step_id ;
var shape_info = _sectionBundleInfo.ToSectionShapePara((int)sect_index);
_ctrlSectionShapeInfo18.SetBindingData(shape_info);
}
if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Style)
{
if (_ctrlSetOutflowStyle == null)
{
_ctrlSetOutflowStyle = new ctrlSetOutflowStyle();
_ctrlSetOutflowStyle.Name = "ctrlSetOutflowStyle";
}
AddStepParaCtrl(_ctrlSetOutflowStyle);
}
if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Type)
{
if (_ctrlSetOutflowType == null)
{
_ctrlSetOutflowType = new ctrlSetOutflowType();
_ctrlSetOutflowType.Name = "ctrlSetOutflowDim";
}
AddStepParaCtrl(_ctrlSetOutflowType);
}
}
///
/// 获取当前步骤的参数控制控件
///
///
private DPumpHydr.WinFrmUI.Volute.ParasInfoBaseCtrl GetParasCtrl(long step_id)
{
if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
return _ctrlHdrBaseInfo;
}
//第二步
if (step_id == this._stepTreeDockPanel.Step_ID_Geom_Base_Info)
{
return _ctrlGeomBaseInfo;
}
//第三步
if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
return _ctrlSectionBundleInfo;
}
//1-8断面进行下一步点击
if (step_id >= this._stepTreeDockPanel.Step_ID_Section18_Grp &&
step_id>= this._stepTreeDockPanel.Step_ID_Section18_Grp+8)
{
return _ctrlSectionShapeInfo18;
}
return null;
}
///
///
///
///
private void AddStepParaCtrl(ParasInfoBaseCtrl ctrl)
{
this._parasDockPanel.Controls.Clear();
ctrl.Dock = DockStyle.Fill;
this._parasDockPanel.Controls.Add(ctrl);
}
///
/// 蜗壳参数导出
///
public void VoluteDeriveArgument()
{
//if (_sectionBaseInfo == null)
//{
// MessageBox.Show("您还没有完成定义参数!请定义完成后在进行导出!(至少完成第三步)");
// return;
//}
//if (_currentStepID <= 21)
//{
// DialogResult result = MessageBox.Show("确定不进行后续断面参数的调整,使用初始计算后的参数吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
// if (result == DialogResult.Cancel)
// {
// return;
// }
//}
//ViewModel.SectionShapePara VoluteArgument = new ViewModel.SectionShapePara();
//string json = VoluteArgument.DeriveArgument(_sectionBaseInfo);
//string filePath = Path.Combine(@"C:\Users\THL\Desktop", $"蜗壳参数.json");
//File.WriteAllText(filePath, json);
}
#region 初始化步骤列表
///
///
///
private void InitialStepNodes()
{
ViewModel.HdrBaseInfo hdrBaseInfo = new ViewModel.HdrBaseInfo();
hdrBaseInfo.Q = 200;
hdrBaseInfo.H = 50;
hdrBaseInfo.n = 2900;
hdrBaseInfo.D2 = 220;
hdrBaseInfo.B2 = 20;
if (_ctrlHdrBaseInfo == null)
{
_ctrlHdrBaseInfo = new ctrlHdrBaseInfo();
_ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo";
_ctrlHdrBaseInfo.Dock = DockStyle.Right;
_ctrlHdrBaseInfo.SetBindingData(hdrBaseInfo);
}
this.AddStepParaCtrl(_ctrlHdrBaseInfo);
//
this._stepTreeDockPanel.InitialStepNodes();
}
#endregion
}
}