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;
///
/// 初始化步骤列表
///
private void InitialStepNodes()
{
if (_ctrlHdrBaseInfo == null)
{
_ctrlHdrBaseInfo = new ctrlHdrBaseInfo();
_ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo";
_ctrlHdrBaseInfo.Dock = DockStyle.Right;
_ctrlHdrBaseInfo.InitialParas();
}
this.DockStepParaCtrl(_ctrlHdrBaseInfo);
//
this._stepTreeDockPanel.InitialStepNodes();
}
///
/// 下一步核心
///
///
private bool GoNextStepCore()
{
var currentStepID = this._stepTreeDockPanel.CurrentStepID;
if (SaveStepParas(currentStepID) == false)
{
return false;
}
//
var next_step_id = this._stepTreeDockPanel.NextStepID;
if (currentStepID == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
next_step_id = this._stepTreeDockPanel.Step_ID_Outflow_Type;
}
if (next_step_id > 0)
{
if(currentStepID == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
#region MyRegion
ViewModel.HdrBaseInfo hdrBaseInfo = null;
ViewModel.GeomBaseInfo geomBaseInfo = null;
string error_info = _ctrlHdrBaseInfo.GetBindingData(ref hdrBaseInfo, ref geomBaseInfo);
if (error_info != null)
{
MessageBox.Show(error_info);
return false;
}
bool isClearAll = false;
if (_geomBaseInfo != null)
{
if (Math.Abs(geomBaseInfo.B3 - _geomBaseInfo.B3) > 1)
{
isClearAll = true;
}
if (Math.Abs(geomBaseInfo.D3 - _geomBaseInfo.D3) > 1)
{
isClearAll = true;
}
}
if (isClearAll)
{
this._occDesign2dCtrl.ClearAll();
this._occDesign3dCtrl.ClearAll();
}
#endregion
}
if (currentStepID == this._stepTreeDockPanel.Step_ID_Outflow_Type)
{
var outflowType = _ctrlSetOutflowType.GetBindingData();
this._occDesign3dCtrl.SetOutflowStyle(outflowType);
bool isNeedRebuild = this._occDesign2dCtrl.SetOutflowStyle(outflowType);
if (isNeedRebuild)
{
_occDesign2dCtrl.ClearAll();
_occDesign3dCtrl.ClearAll();
this.RefreshSectShapeWhole18(this._sectionBundleInfo);
}
}
this.SetParasCtrl(next_step_id, DPumpHydr.ViewModel.eWizardStepDiretion.前进);
//
this._stepTreeDockPanel.SetFocusedNode(next_step_id);
}
return true;
}
///
///
///
///
///
protected bool SaveStepParas(long step_id)
{
#region 获取当前页面参数
//第一步
if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
ViewModel.HdrBaseInfo hdrBaseInfo = null;
ViewModel.GeomBaseInfo geomBaseInfo = null;
string error_info = _ctrlHdrBaseInfo.GetBindingData(ref hdrBaseInfo, ref geomBaseInfo);
if (error_info != null)
{
MessageBox.Show(error_info);
return false;
}
if (geomBaseInfo == null || hdrBaseInfo == null)
return false;
_ctrlHdrBaseInfo.SaveHistoryParas(hdrBaseInfo, geomBaseInfo);
_hdrBaseInfo = hdrBaseInfo;
_hdrBaseInfo.CalcNs();
_geomBaseInfo = geomBaseInfo;
if (_sectionBundleInfo != null)
{//时时保持同步
_sectionBundleInfo.BaseWidth = _geomBaseInfo.B3;
_sectionBundleInfo.BaseCircleRadius = _geomBaseInfo.D3 / 2;
}
return true;
}
//第二步
if (step_id == 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;
return true;
}
//1-8断面进行下一步点击
if (step_id == 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 (currentStepID == this._stepTreeDockPanel.Step_ID_Outflow_Type)
{
prev_step_id = this._stepTreeDockPanel.Step_ID_Section18_Full;
}
if (prev_step_id == 0)
return false;
this.SetParasCtrl(prev_step_id, DPumpHydr.ViewModel.eWizardStepDiretion.后退);
//
this._stepTreeDockPanel.SetFocusedNode(prev_step_id);
return true;
}
///
/// 生成控件的参数控件
///
///
private void SetParasCtrl(long step_id, DPumpHydr.ViewModel.eWizardStepDiretion step_direction)
{
Rbtn数据导出STP.Visible = false;
Rbtn数据导出IGS.Visible = false;
#region 第1步
if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
if (_ctrlHdrBaseInfo == null)
{
_ctrlHdrBaseInfo = new ctrlHdrBaseInfo();
_ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo";
}
DockStepParaCtrl(_ctrlHdrBaseInfo);
this._sectAreaDockPanel.Visible = false;
return;
}
#endregion
#region 第2步 断面总览
if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
if (_hdrBaseInfo == null || _geomBaseInfo == null)
return;
if (_ctrlSectionBundleInfo == null)
{
_ctrlSectionBundleInfo = new ctrlSectionBundleInfo();
_ctrlSectionBundleInfo.Name = "ctrlSectionBaseInfo";
_ctrlSectionBundleInfo.OnRefreshShape += RefreshSectShapeWhole18;
_ctrlSectionBundleInfo.OnHightLightSectCurve += HightLightSectCurve;
}
_ctrlSectionBundleInfo.ShowPage(_hdrBaseInfo, _geomBaseInfo, step_direction);
DockStepParaCtrl(_ctrlSectionBundleInfo);
this._occDesign2dCtrl.SetAllSectionCurveVisible(true);
this._occDesign3dCtrl.SetAllSectionCurveVisible(true);
this._occDesign3dCtrl.SetWaterBodyVisible(false);
this._occDesign3dCtrl.SetThicknessBodyVisible(false);
this._sectAreaDockPanel.RefreshControl();
this._sectAreaDockPanel.Visible = true;
return;
}
#endregion
#region 第3步 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;
}
DockStepParaCtrl(_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;
this._occDesign2dCtrl.SetAllSectionCurveVisible(true);
this._occDesign3dCtrl.SetAllSectionCurveVisible(true);
return;
}
#endregion
#region 出水面类型选择
if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Type)
{
if (_sectionBundleInfo == null)
return;
if (_ctrlSetOutflowType == null)
{
_ctrlSetOutflowType = new ctrlSetOutflowType();
_ctrlSetOutflowType.Name = "ctrlSetOutflowType";
}
_ctrlSetOutflowType.ShowPage(step_direction);
this._sectAreaDockPanel.Visible = true;
this._sectAreaDockPanel.RefreshControl();
DockStepParaCtrl(_ctrlSetOutflowType);
return;
}
#endregion
#region 出水面参数
if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Paras)
{
if (_sectionBundleInfo == null)
return;
this._occDesign2dCtrl.SetAllSectionCurveVisible(false);
this._occDesign3dCtrl.SetAllSectionCurveVisible(false);
_outflowType = _ctrlSetOutflowType.GetBindingData();
if (_ctrlSetOutflowParas == null)
{
_ctrlSetOutflowParas = new ctrlSetOutflowParas();
_ctrlSetOutflowParas.Name = "ctrlSetOutflowStyle";
_ctrlSetOutflowParas.OnRefreshShape2D += RefreshWaterBody2D;
_ctrlSetOutflowParas.OnRefreshShape3D += RefreshWaterBody3D;
_ctrlSetOutflowParas.OnMoveSectPosi += (sect_index, posi) =>
{
if (sect_index == 9)
{
_sect9Posi = posi;
var SectArea9 = this._occDesign3dCtrl.GetSectArea9(_sect9Posi);
this._sectAreaDockPanel.SetArea9(SectArea9);
}
if (sect_index == 10)
{
_sect10Posi = posi;
var SectArea10 = this._occDesign3dCtrl.GetSectArea10(_sect10Posi);
this._sectAreaDockPanel.SetArea10(SectArea10);
}
};
_ctrlSetOutflowParas.InitialParas(_outflowType, _hdrBaseInfo, _geomBaseInfo, _sectionBundleInfo);
_ctrlSetOutflowParas.SetSect9Posi(_sect9Posi);
_ctrlSetOutflowParas.SetSect10Posi(_sect10Posi);
}
else
{
this._occDesign3dCtrl.SetOutflowStyle(_outflowType);
if (this._occDesign2dCtrl.SetOutflowStyle(_outflowType))
{
}
if (_outflowType == ViewModel.eOutflowStyle.侧面出口_直线连接)
{
if(_ctrlSetOutflowParas.CurrentOutflowStyle != ViewModel.eOutflowStyle.侧面出口_直线连接)
{
_occDesign2dCtrl.ClearAll();
_occDesign3dCtrl.ClearAll();
this.RefreshSectShapeWhole18(this._sectionBundleInfo);
}
}
else
{
if (_ctrlSetOutflowParas.CurrentOutflowStyle == ViewModel.eOutflowStyle.侧面出口_直线连接)
{
_occDesign2dCtrl.ClearAll();
_occDesign3dCtrl.ClearAll();
this.RefreshSectShapeWhole18(this._sectionBundleInfo);
}
}
_ctrlSetOutflowParas.SetBindingData(_outflowType, _hdrBaseInfo, _geomBaseInfo, _sectionBundleInfo);
}
_ctrlSetOutflowParas.ShowPage(step_direction);
this._sectAreaDockPanel.RefreshControl();
this._sectAreaDockPanel.Visible = true;
DockStepParaCtrl(_ctrlSetOutflowParas);
string error = "";
_outflowParas = _ctrlSetOutflowParas.GetBindingData(out error);
this._occDesign3dCtrl.setWaterBodyOpacity(
DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.R,
DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.G,
DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.B, 256);
this._occDesign3dCtrl.SetThicknessBodyVisible(false );
return;
}
#endregion
#region 加厚
if (step_id == this._stepTreeDockPanel.Step_ID_jiahout)
{
if (_sectionBundleInfo == null)
return;
Rbtn数据导出STP.Visible = true;
Rbtn数据导出IGS.Visible = true;
this._occDesign2dCtrl.SetAllSectionCurveVisible(false);
this._occDesign3dCtrl.SetAllSectionCurveVisible(false);
if (_ctrlThicknessParas == null)
{
_ctrlThicknessParas = new ctrlThicknessParas();
_ctrlThicknessParas.Name = "ctrlThicknessParas";
_ctrlThicknessParas.OnRefreshShape += (houdu) =>
{
this._bodyThickness = houdu;
this._occDesign3dCtrl.BuildThicknessBody(houdu);
};
this._bodyThickness = _ctrlThicknessParas.InitialParas(_hdrBaseInfo, _geomBaseInfo, _outflowParas);
this._occDesign3dCtrl.BuildThicknessBody(_bodyThickness);
}
_ctrlThicknessParas.ShowPage();
this._occDesign3dCtrl.setWaterBodyOpacity(
DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.R,
DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.G,
DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.B, 60);
this._occDesign3dCtrl.SetThicknessBodyVisible(true);
DockStepParaCtrl(_ctrlThicknessParas);
return;
}
#endregion
}
///
/// 获取当前步骤的参数控制控件
///
///
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_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 DockStepParaCtrl(ParasInfoBaseCtrl ctrl)
{
this._parasDockPanel.Controls.Clear();
ctrl.Dock = DockStyle.Fill;
this._parasDockPanel.Controls.Add(ctrl);
}
///
/// 下一步
///
///
public bool GoNextStep()
{
return GoNextStepCore();
}
///
/// 上一步
///
///
public bool GoPrevStep()
{
return GoPrevStepCore();
}
}
}