| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Windows.Forms; |
| | | using DPumpHydr.WinFrmUI.RLT.Docking.Crown; |
| | | using HydrEngineCSharp; |
| | | |
| | | namespace DPumpHydr.WinFrmUI.Volute |
| | | { |
| | | public partial class OccDesignCtrl : System.Windows.Forms.UserControl |
| | | { |
| | | |
| | | public partial class OccDesignCtrl : UserControl |
| | | { |
| | | private HydrEngineCSharp.CDisplayView pDisplayView; |
| | | private int m_nCreateCurve = 0; |
| | | |
| | | private int m_nNum = 0; |
| | | private int m_nSectionNum = 0; |
| | | private int m_nVoluteNum = 0; |
| | |
| | | { |
| | | InitializeComponent(); |
| | | |
| | | // 创建时的代码 |
| | | pDisplayView = new HydrEngineCSharp.CDisplayView(); |
| | | //this.DefaultDockArea = RLT.Enum.Crown.DockArea.Document; |
| | | //this._isDispCloseIcon = false ;//不能关闭 |
| | | |
| | | pDisplayView.InitOCCDraw(); |
| | | |
| | | |
| | | this.MouseDown += OnMouseDown; |
| | | this.MouseMove += OnMouseMove; |
| | | this.MouseUp += OnMouseUp; |
| | | this.MouseWheel += OnMouseWheel; |
| | | |
| | | IntPtr hwnd = this.Handle; |
| | | //IntPtr hwnd = splitContainer1.Handle; |
| | | // 初始化更新代码 |
| | | pDisplayView.InitialUpdateOCC((uint)hwnd, true); |
| | | |
| | | //string strTurbopumpTopoShapeName = "蜗壳设计" + (m_nNum++).ToString(); |
| | | //bool bSucc = pDisplayView.addTurbopumpTopoShape(strTurbopumpTopoShapeName); |
| | |
| | | if (vd == Model.eViewDirect.RIGHT) |
| | | pDisplayView.SetViewDirect(HydrEngineCSharp.VIEWDIRECT.RIGHTVIEW); |
| | | } |
| | | private bool _is3D = true; |
| | | |
| | | string strTurbopumpTopoShapeName = "蜗壳设计1" ; |
| | | public void Initial( ) |
| | | { |
| | | bool bSucc = pDisplayView.addTurbopumpTopoShape(strTurbopumpTopoShapeName); |
| | | if (bSucc) |
| | | { |
| | | m_nCreateCurve = 1; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 更新1-8端面参数 |
| | | /// </summary> |
| | | public void UpdateSectParas18(List<DPumpHydr.OccModel.SectionParam> listSectionParam) |
| | | public void ClearAll() |
| | | { |
| | | string wstrName = "断面"; |
| | | double dStartAngle = -HydrDisplayEngineBridge.PI_4; |
| | | int nNum = listSectionParam.Count; |
| | | double dDetAngle = 2 * HydrDisplayEngineBridge.PI / nNum; |
| | | for (int i = 0; i < nNum; i++) |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = listSectionParam[i]; |
| | | |
| | | double dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth, dBaseCircleRadius; |
| | | dGama_Left = theSectionParam.Gama_Left; |
| | | dGama_Right = theSectionParam.Gama_Right; |
| | | dH = theSectionParam.H; |
| | | dR_out = theSectionParam.R_out; |
| | | dR_Left = theSectionParam.m_dR_Left; |
| | | dR_Right = theSectionParam.R_Right; |
| | | dBaseWidth = theSectionParam.BaseWidth; |
| | | dBaseCircleRadius = theSectionParam.BaseCircleRadius; |
| | | int nIndex = theSectionParam.Index; |
| | | string wstrShapeNameI = wstrName + nIndex.ToString() + "(" + (m_nSectionNum++).ToString() + ")"; |
| | | |
| | | HydrGeomSection pHydrGeomCurve = new HydrGeomSection(); |
| | | HydrProperties theHydrProperties = new HydrProperties(); |
| | | theHydrProperties.SetShapeName(wstrShapeNameI); |
| | | pHydrGeomCurve.SetHydrProperties(theHydrProperties); |
| | | pHydrGeomCurve.SetGeomSection(dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth, dBaseCircleRadius); |
| | | double dAngle = i * dDetAngle + dStartAngle; |
| | | BcGeMatrix theMatrix = BcGeMatrix.translate(0, dBaseCircleRadius, 0); |
| | | BcGeMatrix theMatrix1 = BcGeMatrix.rotate(-dAngle, 1.0, 0.0, 0.0); |
| | | theMatrix.postMult(theMatrix1); |
| | | pHydrGeomCurve.SetMatrix(theMatrix); |
| | | pDisplayView.addVoluteCurve(i, pHydrGeomCurve); |
| | | } |
| | | Invalidate(true); |
| | | pDisplayView.FitAll3DViews(true); |
| | | m_nCreateCurve = 2; |
| | | pDisplayView.DeleteObject(strTurbopumpTopoShapeName); |
| | | pDisplayView.addTurbopumpTopoShape(strTurbopumpTopoShapeName); |
| | | } |
| | | |
| | | public void Initial(bool is3D) |
| | | { |
| | | this._is3D = is3D; |
| | | // 创建时的代码 |
| | | pDisplayView = new HydrEngineCSharp.CDisplayView(); |
| | | |
| | | pDisplayView.InitOCCDraw(); |
| | | IntPtr hwnd = this.Handle; |
| | | //IntPtr hwnd = splitContainer1.Handle; |
| | | // 初始化更新代码 |
| | | pDisplayView.InitialUpdateOCC((uint)hwnd, is3D); |
| | | |
| | | bool bSucc = pDisplayView.addTurbopumpTopoShape(strTurbopumpTopoShapeName); |
| | | |
| | | |
| | | //OnSectiondesignbutton(); |
| | | |
| | | //OnBuildsolidbutton(); |
| | | } |
| | | |
| | | bool isFirst = true; |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void OnSectiondesignbutton(object sender, EventArgs e) |
| | | public void RefreshAllSectShape18(ViewModel.SectionBundleInfo bundle) |
| | | { |
| | | if (m_nCreateCurve != 1) |
| | | { |
| | | MessageBox.Show("请先创建蜗壳设计", "提示"); |
| | | return; |
| | | } |
| | | List<DPumpHydr.OccModel.SectionParam> listSectionParam = new List<DPumpHydr.OccModel.SectionParam>(); |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = new DPumpHydr.OccModel.SectionParam(); |
| | | theSectionParam.Index = 8; |
| | | theSectionParam.Gama_Left = 15.0; |
| | | theSectionParam.Gama_Right = 15.0; |
| | | theSectionParam.H = 79.9267; |
| | | theSectionParam.R_out = 1000; |
| | | theSectionParam.m_dR_Left = 29.0; |
| | | theSectionParam.R_Right = 29.0; |
| | | theSectionParam.BaseWidth = 60; |
| | | theSectionParam.BaseCircleRadius = 263.5; |
| | | listSectionParam.Add(theSectionParam); |
| | | } |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = new DPumpHydr.OccModel.SectionParam(); |
| | | theSectionParam.Index = 7; |
| | | theSectionParam.Gama_Left = 14.0; |
| | | theSectionParam.Gama_Right = 14.0; |
| | | theSectionParam.H = 72.5712; |
| | | theSectionParam.R_out = 1000; |
| | | theSectionParam.m_dR_Left = 27.0; |
| | | theSectionParam.R_Right = 27.0; |
| | | theSectionParam.BaseWidth = 60; |
| | | theSectionParam.BaseCircleRadius = 263.5; |
| | | listSectionParam.Add(theSectionParam); |
| | | } |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = new DPumpHydr.OccModel.SectionParam(); |
| | | theSectionParam.Index = 6; |
| | | theSectionParam.Gama_Left = 13.0; |
| | | theSectionParam.Gama_Right = 13.0; |
| | | theSectionParam.H = 64.6095; |
| | | theSectionParam.R_out = 1000; |
| | | theSectionParam.m_dR_Left = 25.0; |
| | | theSectionParam.R_Right = 25.0; |
| | | theSectionParam.BaseWidth = 60; |
| | | theSectionParam.BaseCircleRadius = 263.5; |
| | | listSectionParam.Add(theSectionParam); |
| | | } |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = new DPumpHydr.OccModel.SectionParam(); |
| | | theSectionParam.Index = 5; |
| | | theSectionParam.Gama_Left = 12.0; |
| | | theSectionParam.Gama_Right = 12.0; |
| | | theSectionParam.H = 55.9824; |
| | | theSectionParam.R_out = 1000; |
| | | theSectionParam.m_dR_Left = 23.0; |
| | | theSectionParam.R_Right = 23.0; |
| | | theSectionParam.BaseWidth = 60; |
| | | theSectionParam.BaseCircleRadius = 263.5; |
| | | listSectionParam.Add(theSectionParam); |
| | | } |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = new DPumpHydr.OccModel.SectionParam(); |
| | | theSectionParam.Index = 4; |
| | | theSectionParam.Gama_Left = 11.0; |
| | | theSectionParam.Gama_Right = 11.0; |
| | | theSectionParam.H = 46.6348; |
| | | theSectionParam.R_out = 1000; |
| | | theSectionParam.m_dR_Left = 21.0; |
| | | theSectionParam.R_Right = 21.0; |
| | | theSectionParam.BaseWidth = 60; |
| | | theSectionParam.BaseCircleRadius = 263.5; |
| | | listSectionParam.Add(theSectionParam); |
| | | } |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = new DPumpHydr.OccModel.SectionParam(); |
| | | theSectionParam.Index = 3; |
| | | theSectionParam.Gama_Left = 10.0; |
| | | theSectionParam.Gama_Right = 10.0; |
| | | theSectionParam.H = 36.5229; |
| | | theSectionParam.R_out = 1000; |
| | | theSectionParam.m_dR_Left = 19.0; |
| | | theSectionParam.R_Right = 19.0; |
| | | theSectionParam.BaseWidth = 60; |
| | | theSectionParam.BaseCircleRadius = 263.5; |
| | | listSectionParam.Add(theSectionParam); |
| | | } |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = new DPumpHydr.OccModel.SectionParam(); |
| | | theSectionParam.Index = 2; |
| | | theSectionParam.Gama_Left = 9.0; |
| | | theSectionParam.Gama_Right = 9.0; |
| | | theSectionParam.H = 25.6253; |
| | | theSectionParam.R_out = 1000; |
| | | theSectionParam.m_dR_Left = 17.0; |
| | | theSectionParam.R_Right = 17.0; |
| | | theSectionParam.BaseWidth = 60; |
| | | theSectionParam.BaseCircleRadius = 263.5; |
| | | listSectionParam.Add(theSectionParam); |
| | | } |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = new DPumpHydr.OccModel.SectionParam(); |
| | | theSectionParam.Index = 1; |
| | | theSectionParam.Gama_Left = 8.0; |
| | | theSectionParam.Gama_Right = 8.0; |
| | | theSectionParam.H = 13.9584; |
| | | theSectionParam.R_out = 1000; |
| | | theSectionParam.m_dR_Left = 10.0; |
| | | theSectionParam.R_Right = 10.0; |
| | | theSectionParam.BaseWidth = 60; |
| | | theSectionParam.BaseCircleRadius = 263.5; |
| | | listSectionParam.Add(theSectionParam); |
| | | } |
| | | string wstrName = "断面"; |
| | | double dStartAngle = -HydrDisplayEngineBridge.PI_4; |
| | | int nNum = listSectionParam.Count; |
| | | double dDetAngle = 2 * HydrDisplayEngineBridge.PI / nNum; |
| | | for (int i = 0; i < nNum; i++) |
| | | if (!isFirst) |
| | | { |
| | | DPumpHydr.OccModel.SectionParam theSectionParam = listSectionParam[i]; |
| | | //string wstrVoluteName = "泵体" + (m_nVoluteNum++).ToString(); |
| | | // pDisplayView.DeleteObject(wstrVoluteName);//删除掉老的 |
| | | ClearAll(); |
| | | //for (int i = 1; i <= 8; i++) |
| | | //{ |
| | | // //var theSectionParam = bundle.ToSectionShapePara(i); |
| | | |
| | | // //double dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth, dBaseCircleRadius; |
| | | // //dGama_Left = theSectionParam.Gama_Left; |
| | | // //dGama_Right = theSectionParam.Gama_Right; |
| | | // //dH = theSectionParam.H; |
| | | // //dR_out = theSectionParam.R_out; |
| | | // //dR_Left = theSectionParam.R_Left; |
| | | // //dR_Right = theSectionParam.R_Right; |
| | | // //dBaseWidth = theSectionParam.BaseWidth; |
| | | // //dBaseCircleRadius = theSectionParam.BaseCircleRadius; |
| | | // int nIndex = i; |
| | | |
| | | // string wstrShapeNameI = wstrName + nIndex.ToString() + "(" + (m_nSectionNum++).ToString() + ")"; |
| | | // pDisplayView.DeleteObject(wstrShapeNameI);//删除掉老的 |
| | | //} |
| | | } |
| | | |
| | | pDisplayView.Update3DViews(_is3D); |
| | | |
| | | double dStartAngle = -HydrDisplayEngineBridge.PI_4; |
| | | |
| | | double dDetAngle = 2 * HydrDisplayEngineBridge.PI / 8; |
| | | for (int i = 1; i <= 8; i++) |
| | | { |
| | | var theSectionParam = bundle.ToSectionShapePara(i); |
| | | |
| | | double dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth, dBaseCircleRadius; |
| | | dGama_Left = theSectionParam.Gama_Left; |
| | | dGama_Right = theSectionParam.Gama_Right; |
| | | dH = theSectionParam.H; |
| | | dR_out = theSectionParam.R_out; |
| | | dR_Left = theSectionParam.m_dR_Left; |
| | | dR_Left = theSectionParam.R_Left; |
| | | dR_Right = theSectionParam.R_Right; |
| | | dBaseWidth = theSectionParam.BaseWidth; |
| | | dBaseCircleRadius = theSectionParam.BaseCircleRadius; |
| | | int nIndex = theSectionParam.Index; |
| | | string wstrShapeNameI = wstrName + nIndex.ToString() + "(" + (m_nSectionNum++).ToString() + ")"; |
| | | //int nIndex = theSectionParam.Index; |
| | | |
| | | HydrGeomSection pHydrGeomCurve = new HydrGeomSection(); |
| | | string wstrShapeNameI = wstrName + i.ToString() + "(" + (m_nSectionNum++).ToString() + ")"; |
| | | |
| | | |
| | | HydrProperties theHydrProperties = new HydrProperties(); |
| | | theHydrProperties.SetShapeName(wstrShapeNameI); |
| | | pHydrGeomCurve.SetHydrProperties(theHydrProperties); |
| | | pHydrGeomCurve.SetGeomSection(dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth, dBaseCircleRadius); |
| | | double dAngle = i * dDetAngle + dStartAngle; |
| | | BcGeMatrix theMatrix = BcGeMatrix.translate(0, dBaseCircleRadius, 0); |
| | | BcGeMatrix theMatrix1 = BcGeMatrix.rotate(-dAngle, 1.0, 0.0, 0.0); |
| | | theMatrix.postMult(theMatrix1); |
| | | pHydrGeomCurve.SetMatrix(theMatrix); |
| | | pDisplayView.addVoluteCurve(i, pHydrGeomCurve); |
| | | } |
| | | Invalidate(true); |
| | | pDisplayView.FitAll3DViews(true); |
| | | m_nCreateCurve = 2; |
| | | HydrGeomCurve theHydrGeomCurve = HydrDisplayEngineBridge.CreateGeomCurve(HydrCurveType.EHydrGeomSection); |
| | | HydrGeomSection pHydrGeomCurve = theHydrGeomCurve as HydrGeomSection; |
| | | if (pHydrGeomCurve == null) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | |
| | | |
| | | theHydrProperties.SetShapeName(wstrShapeNameI); |
| | | pHydrGeomCurve.SetHydrProperties(theHydrProperties); |
| | | pHydrGeomCurve.SetGeomSection(dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth, dBaseCircleRadius); |
| | | if (_is3D) |
| | | { |
| | | double dAngle = i * dDetAngle + dStartAngle; |
| | | BcGeMatrix theMatrix = BcGeMatrix.translate(0, dBaseCircleRadius, 0); |
| | | BcGeMatrix theMatrix1 = BcGeMatrix.rotate(-dAngle, 1.0, 0.0, 0.0); |
| | | theMatrix.postMult(theMatrix1); |
| | | pHydrGeomCurve.SetMatrix(theMatrix); |
| | | } |
| | | |
| | | pDisplayView.addVoluteCurve(i, pHydrGeomCurve); |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | if (_is3D) |
| | | { |
| | | CreateSolid(); |
| | | } |
| | | else |
| | | { |
| | | Invalidate(true); |
| | | pDisplayView.FitAll3DViews(true); |
| | | } |
| | | isFirst = false; |
| | | } |
| | | |
| | | // |
| | | private void OnBuildsolidbutton(object sender, EventArgs e) |
| | | { |
| | | if (m_nCreateCurve != 2) |
| | | { |
| | | MessageBox.Show("请先完成断面设计", "提示"); |
| | | return; |
| | | } |
| | | // |
| | | private void CreateSolid( ) |
| | | { |
| | | string wstrVoluteName = "泵体" + (m_nVoluteNum++).ToString(); |
| | | bool bSucc = pDisplayView.buildVoluteShape(wstrVoluteName); |
| | | if (bSucc) |
| | | { |
| | | Invalidate(true); |
| | | pDisplayView.FitAll3DViews(true); |
| | | m_nCreateCurve = 3; |
| | | |
| | | } |
| | | |
| | | Invalidate(true); |
| | | pDisplayView.FitAll3DViews(true); |
| | | } |
| | | |
| | | |