using System;
|
using System.Collections.Generic;
|
using System.Windows.Forms;
|
using System.IO;
|
using System.Text;
|
using System.Linq;
|
|
namespace DPumpHydr.WinFrmUI.Volute
|
{
|
public partial class MainViewPage
|
{
|
//步骤控件
|
StepTreeDockPanel _stepTreeDockPanel = null;
|
|
//参数控件
|
ctrlHdrBaseInfo _ctrlHdrBaseInfo = null;
|
ctrlGeomBaseInfo _ctrlGeomBaseInfo = null;
|
ctrlSectionBundleInfo _ctrlSectionBundleInfo = null;
|
ctrlSectionShapeInfo18 _ctrlSectionShapeInfo18 = null;
|
ctrlSetOutflowParas _ctrlSetOutflowStyle = null;
|
ctrlSetOutflowType _ctrlSetOutflowType = null;
|
|
//参数
|
ViewModel.HdrBaseInfo _hdrBaseInfo = null;
|
ViewModel.GeomBaseInfo _geomBaseInfo = null;
|
ViewModel.SectionBundleInfo _sectionBundleInfo = null;
|
ViewModel.eOutflowStyle _type ;
|
|
|
/// <summary>
|
/// 下一步
|
/// </summary>
|
/// <returns></returns>
|
public bool GoNextStep()
|
{
|
return GoNextStepCore();
|
}
|
|
/// <summary>
|
/// 上一步
|
/// </summary>
|
/// <returns></returns>
|
public bool GoPrevStep()
|
{
|
return GoPrevStepCore();
|
}
|
|
/// <summary>
|
/// 下一步核心
|
/// </summary>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="stepID"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 上一步核心
|
/// </summary>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 生成控件的参数控件
|
/// </summary>
|
/// <param name="step_id"></param>
|
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);
|
this._sectAreaDockPanel.Visible = false;
|
}
|
|
//第二步
|
if (step_id == this._stepTreeDockPanel.Step_ID_Geom_Base_Info)
|
{
|
if (_ctrlGeomBaseInfo == null)
|
{
|
_ctrlGeomBaseInfo = new ctrlGeomBaseInfo();
|
_ctrlGeomBaseInfo.Name = "ctrlGeomBaseInfo";
|
}
|
_ctrlGeomBaseInfo.SetBindingData(_geomBaseInfo);
|
AddStepParaCtrl(_ctrlGeomBaseInfo);
|
this._sectAreaDockPanel.Visible = false;
|
}
|
|
//第三步 断面总览
|
if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
|
{
|
if (_ctrlSectionBundleInfo == null)
|
{
|
_ctrlSectionBundleInfo = new ctrlSectionBundleInfo();
|
_ctrlSectionBundleInfo.Name = "ctrlSectionBaseInfo";
|
_ctrlSectionBundleInfo.OnRefreshShape += RefreshSectShapeWhole18;
|
}
|
AddStepParaCtrl(_ctrlSectionBundleInfo);
|
_ctrlSectionBundleInfo.InitialParas(_hdrBaseInfo, _geomBaseInfo);
|
_ctrlSectionBundleInfo.SetBindingData(_sectionBundleInfo);
|
RefreshSectShapeWhole18(_sectionBundleInfo);
|
this._sectAreaDockPanel.RefreshControl();
|
this._sectAreaDockPanel.Visible = true;
|
}
|
|
//第四步 1-8断面
|
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 += RefreshSectShapeSingle18;
|
}
|
AddStepParaCtrl(_ctrlSectionShapeInfo18);
|
var sect_index = 9 + this._stepTreeDockPanel.Step_ID_Section18_Grp - step_id;
|
var shape_info = _sectionBundleInfo.ToSectionShapePara((int)sect_index);
|
RefreshSectShapeSingle18(shape_info);
|
_ctrlSectionShapeInfo18.SetBindingData(shape_info);
|
this._sectAreaDockPanel.RefreshControl();
|
this._sectAreaDockPanel.Visible = true;
|
}
|
|
//出水面类型选择
|
if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Type)
|
{
|
if (_ctrlSetOutflowType == null)
|
{
|
_ctrlSetOutflowType = new ctrlSetOutflowType();
|
_ctrlSetOutflowType.Name = "ctrlSetOutflowDim";
|
}
|
this._sectAreaDockPanel.Visible = true;
|
this._sectAreaDockPanel.RefreshControl();
|
AddStepParaCtrl(_ctrlSetOutflowType);
|
}
|
|
//出水面参数
|
if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Style)
|
{
|
_type = _ctrlSetOutflowType.GetBindingData();
|
if (_ctrlSetOutflowStyle == null)
|
{
|
_ctrlSetOutflowStyle = new ctrlSetOutflowParas();
|
_ctrlSetOutflowStyle.Name = "ctrlSetOutflowStyle";
|
_ctrlSetOutflowStyle.OnRefreshShape += CreateWaterBody;
|
}
|
|
_ctrlSetOutflowStyle.SetBindingData(_type);
|
_ctrlSetOutflowStyle.ShowPage();
|
this._sectAreaDockPanel.RefreshControl();
|
this._sectAreaDockPanel.Visible = true;
|
AddStepParaCtrl(_ctrlSetOutflowStyle);
|
}
|
|
if (step_id == this._stepTreeDockPanel.Step_ID_jiahout)
|
{
|
this._occDesign3dCtrl.CreateOutletBody3d();
|
}
|
|
}
|
|
|
|
/// <summary>
|
/// 获取当前步骤的参数控制控件
|
/// </summary>
|
/// <param name="step_id"></param>
|
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;
|
}
|
|
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="ctrl"></param>
|
private void AddStepParaCtrl(ParasInfoBaseCtrl ctrl)
|
{
|
this._parasDockPanel.Controls.Clear();
|
ctrl.Dock = DockStyle.Fill;
|
this._parasDockPanel.Controls.Add(ctrl);
|
}
|
/// <summary>
|
/// 蜗壳参数导出
|
/// </summary>
|
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 初始化步骤列表
|
|
/// <summary>
|
///
|
/// </summary>
|
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
|
|
}
|
}
|