From 36616eb44dc36a4e6e3e7a7540310cb850218ea9 Mon Sep 17 00:00:00 2001
From: yangyin <1850366751@qq.com>
Date: 星期一, 13 一月 2025 17:38:04 +0800
Subject: [PATCH] 更改断面输入高亮显示

---
 WinFrmUI/DPumpHydr.WinFrmUI.Volute/Occ/OccDesignBaseCtrl.cs |  218 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 149 insertions(+), 69 deletions(-)

diff --git a/WinFrmUI/DPumpHydr.WinFrmUI.Volute/Occ/OccDesignBaseCtrl.cs b/WinFrmUI/DPumpHydr.WinFrmUI.Volute/Occ/OccDesignBaseCtrl.cs
index f7a4042..1df0a02 100644
--- a/WinFrmUI/DPumpHydr.WinFrmUI.Volute/Occ/OccDesignBaseCtrl.cs
+++ b/WinFrmUI/DPumpHydr.WinFrmUI.Volute/Occ/OccDesignBaseCtrl.cs
@@ -10,7 +10,6 @@
     public partial class OccDesignBaseCtrl : UserControl
     {
         protected HydrEngineCSharp.CDisplayView pDisplayView;
-        protected string strTurbopumpTopoShapeName = "蜗壳设计x";
 
 
 
@@ -146,30 +145,63 @@
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
-        public void RefreshAllSectShape18(ViewModel.SectionBundleInfo bundle)
+        public List<int> RefreshAllSectShape18(ViewModel.SectionBundleInfo bundle)
         {
             if (_isFirstSectShape18)
             {
-                CreateSectShape18(bundle);
+                _isFirstSectShape18 = false;
+                return CreateSectShape18(bundle);
             }
             else
             {
-                EditSectShape18(bundle);
+                return EditSectShape18(bundle);
             }
-            _isFirstSectShape18 = false;
+
         }
-      
+
+        double GetSectStartAngle()
+        {
+            if (_stype == eOutflowStyle.未知 || _stype == eOutflowStyle.中心出口_垂直法兰面流出)
+                return -HydrDisplayEngineBridge.PI_4;
+            else
+                return 0;
+        }
+        eOutflowStyle _stype = eOutflowStyle.中心出口_垂直法兰面流出;
+        public bool SetOutflowStyle(eOutflowStyle style)
+        {
+            if (_stype == style)
+                return false ;
+            bool isNeedRebuild = false;
+            if(style == eOutflowStyle.侧面出口_直线连接)
+            {
+                if(_stype != eOutflowStyle.侧面出口_直线连接)
+                {
+                    isNeedRebuild = true ;
+                }
+            }
+            if (style != eOutflowStyle.侧面出口_直线连接)
+            {
+                if (_stype == eOutflowStyle.侧面出口_直线连接)
+                {
+                    isNeedRebuild = true;
+                }
+            }
+            _stype = style;
+
+            return isNeedRebuild;
+        }
         /// <summary>
         /// 
         /// </summary>
         /// <param name="bundle"></param>
-        protected void CreateSectShape18(ViewModel.SectionBundleInfo bundle)
+        protected List<int> CreateSectShape18(ViewModel.SectionBundleInfo bundle)
         {
-            //pDisplayView.Update3DViews(_is3D);
+            List<int> error_sect = new List<int>();
 
-            double dStartAngle = -HydrDisplayEngineBridge.PI_4;
 
-            double dDetAngle = 2 * HydrDisplayEngineBridge.PI / 8;
+            double dStartAngle = GetSectStartAngle();
+
+            double dDetAngle =   HydrDisplayEngineBridge.PI / 4;
             for (int i = 8; i >= 1; i--)
             {
                 var theSectionParam = bundle.ToSectionShapePara(i);
@@ -184,7 +216,7 @@
                 dBaseWidth = theSectionParam.BaseWidth;
                 dBaseCircleRadius = theSectionParam.BaseCircleRadius;
 
-                string wstrShapeNameI = string.Format("SectShape_{0}", theSectionParam.Index);
+
 
 
                 HydrProperties theHydrProperties = new HydrProperties();
@@ -197,40 +229,37 @@
 
 
                 double dAngle = (8 - theSectionParam.Index) * dDetAngle + dStartAngle;
-                theHydrProperties.SetShapeName(wstrShapeNameI);
+                theHydrProperties.SetShapeGuid(GlobalParas.BuildSectShapeName(theSectionParam.Index));
                 pHydrGeomCurve.SetHydrProperties(theHydrProperties);
                 pHydrGeomCurve.SetGeomSection(dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth);
                 pHydrGeomCurve.SetMatrix(dAngle, dBaseCircleRadius);
-                //if (_is3D)
-                //{
 
-                //    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(theSectionParam.Index, pHydrGeomCurve);
+                ToolTips tt = pDisplayView.addVoluteCurve(theSectionParam.Index, pHydrGeomCurve);
+                if (tt == null || tt.GetTipsId() != 1)
+                {
+                    error_sect.Add(theSectionParam.Index);
+                }
             }
 
 
 
             Invalidate(true);
             pDisplayView.FitAll3DViews(true);
-
+            return error_sect;
         }
 
         /// <summary>
         /// 
         /// </summary>
         /// <param name="bundle"></param>
-        protected void EditSectShape18(ViewModel.SectionBundleInfo bundle)
+        public List<int> EditSectShape18(ViewModel.SectionBundleInfo bundle)
         {
-            pDisplayView.Update3DViews(_is3D);
+            List<int> error_sect = new List<int>();
 
-            double dStartAngle = -HydrDisplayEngineBridge.PI_4;
+            double dStartAngle = GetSectStartAngle();
 
-            double dDetAngle = 2 * HydrDisplayEngineBridge.PI / 8;
+            double dDetAngle =   HydrDisplayEngineBridge.PI / 4;
             for (int i = 1; i <= 8; i++)
             {
                 var theSectionParam = bundle.ToSectionShapePara(i);
@@ -258,7 +287,7 @@
                 double dAngle = (8 - theSectionParam.Index) * dDetAngle + dStartAngle;
 
 
-                theHydrProperties.SetShapeName(wstrShapeNameI);
+                //theHydrProperties.SetShapeName(wstrShapeNameI);
                 pHydrGeomCurve.SetHydrProperties(theHydrProperties);
                 pHydrGeomCurve.SetGeomSection(dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth);
                 pHydrGeomCurve.SetMatrix(dAngle, dBaseCircleRadius);
@@ -271,23 +300,32 @@
                 //    pHydrGeomCurve.SetMatrix(theMatrix);
                 //}
 
-                pDisplayView.editVoluteCurve(wstrShapeNameI, pHydrGeomCurve);
+                ToolTips tt = pDisplayView.editVoluteCurve(wstrShapeNameI, pHydrGeomCurve);
+                //pDisplayView.addVoluteCurve(theSectionParam.Index, pHydrGeomCurve);
+                if (tt == null || tt.GetTipsId() != 1)
+                {
+                    error_sect.Add(theSectionParam.Index);
+                }
             }
 
 
 
             Invalidate(true);
 
-
+            return error_sect;
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="theSectionParam"></param>
         public void RefreshSingleSectShape18(ViewModel.SectionShapePara theSectionParam)
         {
             pDisplayView.Update3DViews(true);
 
-            double dStartAngle = -HydrDisplayEngineBridge.PI_4;
+            double dStartAngle = GetSectStartAngle();
 
-            double dDetAngle = 2 * HydrDisplayEngineBridge.PI / 8;
+            double dDetAngle =   HydrDisplayEngineBridge.PI / 4;
 
 
             double dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth, dBaseCircleRadius;
@@ -300,8 +338,6 @@
             dBaseWidth = theSectionParam.BaseWidth;
             dBaseCircleRadius = theSectionParam.BaseCircleRadius;
 
-            string wstrShapeNameI = string.Format("SectShape_{0}", theSectionParam.Index);
-
 
             HydrProperties theHydrProperties = new HydrProperties();
             HydrGeomCurve theHydrGeomCurve = HydrDisplayEngineBridge.CreateGeomCurve(HydrCurveType.EHydrGeomSection);
@@ -313,37 +349,48 @@
 
             double dAngle = (8 - theSectionParam.Index) * dDetAngle + dStartAngle;
 
-            theHydrProperties.SetShapeName(wstrShapeNameI);
+            theHydrProperties.SetShapeGuid(GlobalParas.BuildSectShapeName(theSectionParam.Index));
             pHydrGeomCurve.SetHydrProperties(theHydrProperties);
             pHydrGeomCurve.SetGeomSection(dGama_Left, dGama_Right, dH, dR_out, dR_Left, dR_Right, dBaseWidth);
             pHydrGeomCurve.SetMatrix(dAngle, dBaseCircleRadius);
-            //{
 
-            //    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.editVoluteCurve(wstrShapeNameI, pHydrGeomCurve);
+            pDisplayView.editVoluteCurve(GlobalParas.BuildSectShapeName(theSectionParam.Index), pHydrGeomCurve);
 
 
             Invalidate(true);
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="isVisible"></param>
         public void SetAllSectionCurveVisible(bool isVisible)
         {
             for (int i = 8; i >= 1; i--)
             {
                 string wstrShapeNameI = string.Format("SectShape_{0}", i);
-                if(isVisible)
+                if (isVisible)
                     pDisplayView.showVoluteCurve(wstrShapeNameI);
                 else
                     pDisplayView.hideVoluteCurve(wstrShapeNameI);
             }
         }
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="sectIndex"></param>
+        public void HightLightSectCurve(int sectIndex)
+        {
+            for (int i = 1; i <= 8; i++)
+            {
+                if (i == sectIndex)
+                    this.pDisplayView.setVoluteCurveClr(i, 255, 0, 255);
+                else
+                    this.pDisplayView.setVoluteCurveClr(i, 100, 149, 237);
+            }
 
-
+            Invalidate(true);
+        }
         #endregion
 
 
@@ -351,7 +398,7 @@
 
         #region 水体
 
-        public HydrGeomSplineParam Create2DWaterBody(DPumpHydr.WinFrmUI.Volute.ViewModel.OtuflowParas outflowParas )
+        public HydrGeomSplineParam Create2DWaterBody(DPumpHydr.WinFrmUI.Volute.ViewModel.OtuflowParas outflowParas)
         {
             if (this._is3D)
                 return null;
@@ -368,10 +415,19 @@
             theWaterBodyOuterParam.SetRadConner(outflowParas.Septalradius);
 
 
-            bool bSucc = pDisplayView.build2DMidCurve(theWaterBodyOuterParam);
+
+            ToolTips theToolTips = pDisplayView.build2DMidCurve(theWaterBodyOuterParam);
+            if (theToolTips == null)
+                return null;
             Invalidate(true);
             pDisplayView.FitAll3DViews(true);
-            if (bSucc)
+
+            pDisplayView.set2DMidCurveClr(
+ DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBoudaryColor.R,
+ DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBoudaryColor.G,
+ DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBoudaryColor.B);
+
+            if (theToolTips.GetTipsId() == 1)
             {
                 return pDisplayView.getHydrGeomSplineParam();
             }
@@ -380,13 +436,13 @@
                 return null;
             }
         }
-        string ShapeNameWaterSolid = "WaterSolid";
-        public void Create3DWaterBody(DPumpHydr.WinFrmUI.Volute.ViewModel.OtuflowParas outflowParas, HydrGeomSplineParam theHydrGeomSplineParam)
+
+        public ToolTips  Create3DWaterBody(DPumpHydr.WinFrmUI.Volute.ViewModel.OtuflowParas outflowParas, HydrGeomSplineParam theHydrGeomSplineParam)
         {
             if (!this._is3D)
-                return;
+                return null;
             if (theHydrGeomSplineParam == null)
-                return;
+                return null;
 
             WaterBodyOuterParam theWaterBodyOuterParam = new WaterBodyOuterParam();
             theWaterBodyOuterParam.SetOuterOffset(outflowParas.Offset);
@@ -400,27 +456,31 @@
             theWaterBodyOuterParam.SetH2(outflowParas.H2);
             theWaterBodyOuterParam.SetRadConner(outflowParas.Septalradius);
 
-            {
-                
-                HydrGeomCurve theHydrGeomCurve = HydrDisplayEngineBridge.CreateGeomCurve(HydrCurveType.EHydrGeomCircle);
-                HydrProperties theHydrProperties = new HydrProperties();
-                theHydrProperties.SetShapeName(ShapeNameWaterSolid);
-                theHydrGeomCurve.SetHydrProperties(theHydrProperties);
-                if (pDisplayView.hasBuildThicknessBody())
-                    pDisplayView.removeThicknessBody();//
-                pDisplayView.buildWaterBody(ShapeNameWaterSolid, theHydrGeomSplineParam, theWaterBodyOuterParam);
-                Invalidate(true);
-                pDisplayView.FitAll3DViews(true);
-            }
 
+
+            // HydrGeomCurve theHydrGeomCurve = HydrDisplayEngineBridge.CreateGeomCurve(HydrCurveType.EHydrGeomCircle);
+            HydrProperties theHydrProperties = new HydrProperties();
+            theHydrProperties.SetShapeGuid(DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyShapeName);
+            theHydrProperties.SetShapeColor(
+             DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.R,
+             DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.G,
+             DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.B, 256);
+            //  theHydrGeomCurve.SetHydrProperties(theHydrProperties);
+            if (pDisplayView.hasBuildThicknessBody())
+                pDisplayView.ClearTopoShape(TopoTypeDisplay.EThicknessBody);
+           var tt = pDisplayView.buildWaterBody(theHydrProperties, theHydrGeomSplineParam, theWaterBodyOuterParam);
+            Invalidate(true);
+            pDisplayView.FitAll3DViews(true);
+
+            return tt;
         }
-       
-        
-        
-        public void Edit3DWaterBody(DPumpHydr.WinFrmUI.Volute.ViewModel.OtuflowParas outflowParas, HydrGeomSplineParam theHydrGeomSplineParam)
+
+
+
+        public ToolTips Edit3DWaterBody(DPumpHydr.WinFrmUI.Volute.ViewModel.OtuflowParas outflowParas, HydrGeomSplineParam theHydrGeomSplineParam)
         {
             if (!this._is3D)
-                return;
+                return null;
 
 
             if (theHydrGeomSplineParam != null)
@@ -437,10 +497,21 @@
                 theWaterBodyOuterParam.SetH2(outflowParas.H2);
                 theWaterBodyOuterParam.SetRadConner(outflowParas.Septalradius);
 
-                pDisplayView.rebuildWaterBody(theHydrGeomSplineParam, theWaterBodyOuterParam);
+                if (pDisplayView.hasBuildThicknessBody())
+                    pDisplayView.ClearTopoShape(TopoTypeDisplay.EThicknessBody);//
+
+                var tt =  pDisplayView.rebuildWaterBody(theHydrGeomSplineParam, theWaterBodyOuterParam);
+                if (tt == null)
+                    return null;
+                if(tt.GetTipsId () != 1)
+                {
+
+                }
                 Invalidate(true);
-                pDisplayView.FitAll3DViews(true);
+
+                return tt; 
             }
+            return null;
         }
         /// <summary>
         /// 割舌的角度
@@ -453,5 +524,14 @@
         #endregion
 
 
+
+        public bool  ClearAll()
+        {
+            _isFirstSectShape18 = true;
+            var ret = pDisplayView.ClearTopoShape(TopoTypeDisplay.EAllBody);
+            //bool bSucc = pDisplayView.BeginTurbopumpTopoShape(DPumpHydr.WinFrmUI.Volute.GlobalParas.RootTopoShapeName);
+
+            return ret;
+        }
     }
 }

--
Gitblit v1.9.3