using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using System.Text;
using System.Linq;
using HydrEngineCSharp;
using System.Net.NetworkInformation;
using DPumpHydr.WinFrmUI.Volute.ViewModel;
namespace DPumpHydr.WinFrmUI.Volute
{
public partial class MainViewPage
{
ctrlSetOutflowParas _ctrlSetOutflowParas = null;
ViewModel.OutflowParas _outflowParas = null;
///
///
///
///
private bool SaveParaStep3()
{
return true;
}
///
///
///
///
private void EnterStep3(long last_step_id)
{
if (_sectionBundleInfo == null)
return;
this._occDesign2dCtrl.SetAllSectionCurveVisible(false);
this._occDesign3dCtrl.SetAllSectionCurveVisible(false);
if (_ctrlSetOutflowParas == null)
{
_ctrlSetOutflowParas = new ctrlSetOutflowParas();
_ctrlSetOutflowParas.Name = "ctrlSetOutflowStyle";
_ctrlSetOutflowParas.OnRefreshShape2D += RefreshWaterBody2D ;
_ctrlSetOutflowParas.OnRefreshShape3D += RefreshWaterBody3D;
_ctrlSetOutflowParas.OnNextStep += () =>
{
GoNextStep();
};
_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);
}
};
}
else
{
//this._occDesign3dCtrl.SetOutflowStyle( );
//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.InitialParas(_hdrBaseInfo, _geomBaseInfo, _sectionBundleInfo);
_ctrlSetOutflowParas.SetSect9Posi(_sect9Posi);
_ctrlSetOutflowParas.SetSect10Posi(_sect10Posi);
DPumpHydr.ViewModel.eWizardStepDiretion step_direction = DPumpHydr.ViewModel.eWizardStepDiretion.前进;
if (last_step_id > this._stepTreeDockPanel.Step_ID_Outflow_Paras)
step_direction = DPumpHydr.ViewModel.eWizardStepDiretion.后退;
_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);
}
private bool _isHaveCreateWaterBody2d = false;
private bool _isHaveCreateWaterBody3d = false;
HydrEngineCSharp.WaterBodyOuterParam m_theWaterBodyOuterParam;
private void RefreshOuterParam(DPumpHydr.WinFrmUI.Volute.ViewModel.OutflowParas outflowParas)
{
double dOuterRad = outflowParas.Dia * 0.5;
double dOuterHigh = outflowParas.Heigh;
double dOuterOffset = outflowParas.Offset;
double dH1 = outflowParas.H1;
double dH2 = outflowParas.H2;
double dTopValue1 = outflowParas.Tangent_Top_Left;
double dBtmValue1 = outflowParas.Tangent_Btm_Left;
double dTopValue2 = outflowParas.Tangent_Top_Right;
double dBtmValue2 = outflowParas.Tangent_Btm_Right;
double dRadConner = outflowParas.Septalradius;
double dRadConnerAngle = this._geomBaseInfo.FAI0;
dRadConnerAngle = dRadConnerAngle * HydrDisplayEngineBridge.PI / 180.0;
if (m_theWaterBodyOuterParam == null)
m_theWaterBodyOuterParam = HydrDisplayEngineBridge.CreateWaterBodyOuter(WaterBodyOuterType.EWaterBodyOuterSp);
HydrEngineCSharp.WaterBodyOuterSpParam pHydrGeomCurve = m_theWaterBodyOuterParam as HydrEngineCSharp.WaterBodyOuterSpParam;
pHydrGeomCurve.SetOuterOffset(dOuterOffset);
pHydrGeomCurve.SetOuterHigh(dOuterHigh);
pHydrGeomCurve.SetOuterRad(dOuterRad);
pHydrGeomCurve.SetH1(dH1);
pHydrGeomCurve.SetH2(dH2);
pHydrGeomCurve.SetRadConner(dRadConner);
pHydrGeomCurve.SetRadConnerAngle(dRadConnerAngle);
pHydrGeomCurve.SetTopValue1(dTopValue1);
pHydrGeomCurve.SetBtmValue1(dBtmValue1);
pHydrGeomCurve.SetTopValue2(dTopValue2);
pHydrGeomCurve.SetBtmValue2(dBtmValue2);
}
private bool RefreshWaterBody2D( DPumpHydr.WinFrmUI.Volute.ViewModel.OutflowParas outflowParas)
{
if (outflowParas == null || outflowParas.Tangent_Top_Right <= 0 || outflowParas.Tangent_Btm_Right <= 0 ||
outflowParas.Tangent_Top_Left <= 0 || outflowParas.Tangent_Btm_Left <= 0)
return false;
RefreshOuterParam(outflowParas);
HydrEngineCSharp.WaterBodyOuterSpParam pHydrGeomCurve = m_theWaterBodyOuterParam as HydrEngineCSharp.WaterBodyOuterSpParam;
//if (_isHaveCreateWaterBody2d == true)
//{
// this._occDesign2dCtrl.Create2DWaterBody(pHydrGeomCurve);
//}
this._occDesign2dCtrl.Create2DWaterBody(pHydrGeomCurve);
_isHaveCreateWaterBody2d = true;
return true;
}
private bool RefreshWaterBody3D(DPumpHydr.WinFrmUI.Volute.ViewModel.OutflowParas outflowParas)
{
if (outflowParas == null || outflowParas.Tangent_Top_Right <= 0 || outflowParas.Tangent_Btm_Right <= 0 ||
outflowParas.Tangent_Top_Left <= 0 || outflowParas.Tangent_Btm_Left <= 0)
return false;
if (outflowParas.ShapeStyle == DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_直线连接)
{
if (_occDesign2dCtrl.SectStartAngle != 0)
{
_isHaveCreateWaterBody2d = false;
this._occDesign2dCtrl.SectStartAngle = 0;
this._occDesign2dCtrl.ClearAll();
this._occDesign2dCtrl.RefreshAllSectShape18(this._sectionBundleInfo);
this._occDesign2dCtrl.HideSectCurve18();
}
}
else
{
if (_occDesign2dCtrl.SectStartAngle == 0)
{
_isHaveCreateWaterBody2d = false;
_occDesign2dCtrl.SectStartAngle = 0;
_occDesign2dCtrl.ClearAll();
this._occDesign2dCtrl.RefreshAllSectShape18(this._sectionBundleInfo);
this._occDesign2dCtrl.HideSectCurve18();
}
}
if (outflowParas.ShapeStyle == DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_直线连接)
{
if (_occDesign3dCtrl.SectStartAngle != 0)
{
_isHaveCreateWaterBody3d = false;
_occDesign3dCtrl.SectStartAngle = 0;
_occDesign3dCtrl.ClearAll();
this._occDesign3dCtrl.RefreshAllSectShape18(this._sectionBundleInfo);
this._sectAreaDockPanel.SetArea18(_sectionBundleInfo);
}
}
else
{
if (_occDesign3dCtrl.SectStartAngle == 0)
{
_isHaveCreateWaterBody3d = false;
_occDesign3dCtrl.SectStartAngle = 0;
_occDesign3dCtrl.ClearAll();
this._occDesign3dCtrl.RefreshAllSectShape18(this._sectionBundleInfo);
this._sectAreaDockPanel.SetArea18(_sectionBundleInfo);
}
}
this._sectAreaDockPanel.SetAreaOutletDia(outflowParas.Dia);
this._outflowParas = outflowParas;
RefreshOuterParam(outflowParas);
HydrEngineCSharp.WaterBodyOuterSpParam pHydrGeomCurve = m_theWaterBodyOuterParam as HydrEngineCSharp.WaterBodyOuterSpParam;
if (_isHaveCreateWaterBody3d == true)
{
this._occDesign2dCtrl.Create2DWaterBody(pHydrGeomCurve);
this._occDesign3dCtrl.Edit3DWaterBody(pHydrGeomCurve);
this._occDesign3dCtrl.SetWaterBodyVisible(true);
return true ;
}
else
{
this._occDesign2dCtrl.Create2DWaterBody(pHydrGeomCurve);
_isHaveCreateWaterBody3d = true;
//ViewModel.OtuflowParasCalcReponse rep = new ViewModel.OtuflowParasCalcReponse();
//rep.GeSheAngle = this._occDesign2dCtrl.Get2DMidCurveAngleParam();
this._occDesign3dCtrl.Create3DWaterBody(pHydrGeomCurve);
this._occDesign3dCtrl.SetWaterBodyVisible(true);
return true;// BuildRefreshWaterBodyReponse();
}
}
private double _sect9Posi = 0.25;
private double _sect10Posi = 0.65;
private ViewModel.OutflowParasCalcReponse BuildRefreshWaterBodyReponse()
{
ViewModel.OutflowParasCalcReponse rep = new ViewModel.OutflowParasCalcReponse();
//rep.GeSheAngle = this._occDesign2dCtrl.Get2DMidCurveAngleParam();
rep.SectArea9 = this._occDesign3dCtrl.GetSectArea9(_sect9Posi);
rep.SectArea10 = this._occDesign3dCtrl.GetSectArea10(_sect10Posi);
this._sectAreaDockPanel.SetArea9 (rep.SectArea9);
this._sectAreaDockPanel.SetArea10(rep.SectArea10);
return rep;
}
}
}