From 5d0c9325a139297cc7291f4c0fa1415cc13a43c6 Mon Sep 17 00:00:00 2001 From: sunhonglei Date: Wed, 22 Jan 2025 17:25:36 +0800 Subject: [PATCH 1/2] fix: --- ViewModel/Grading/GradingResultVM.cs | 14 ++++++- Views/UserControl/Viewport3D.xaml.cs | 27 ++++++++----- .../ViewportData/Helper/VideoHelper.cs | 3 +- .../ViewportData/Helper/ViewportHelperPro.cs | 40 +++++++++++-------- .../ViewportData/Helper/ViewportManager.cs | 30 +++++++++----- 5 files changed, 77 insertions(+), 37 deletions(-) diff --git a/ViewModel/Grading/GradingResultVM.cs b/ViewModel/Grading/GradingResultVM.cs index 986bda2..f0c7643 100644 --- a/ViewModel/Grading/GradingResultVM.cs +++ b/ViewModel/Grading/GradingResultVM.cs @@ -751,6 +751,11 @@ public class GradingResultVM : BaseViewModel } else { + if (!File.Exists(getFilePath())) + { + new MessageBox().Show(MultilingualHelper.getString("SavePathIsnotExists")); + return; + } string fullPath = Path.Combine(getFilePath(), this.DiamondCode); if (FileSaveEnabled("Txt")) { @@ -805,7 +810,14 @@ public class GradingResultVM : BaseViewModel } else { - Directory.CreateDirectory(defultFilePath); + try { + Directory.CreateDirectory(defultFilePath); + } + catch (Exception ex) + { + new MessageBox().Show(MultilingualHelper.getString("SavePathIsnotExists")); + Logger.Error($"全局异常捕获:{ex.Message}", ex); + } return defultFilePath; } } diff --git a/Views/UserControl/Viewport3D.xaml.cs b/Views/UserControl/Viewport3D.xaml.cs index 7ec18d9..45df875 100644 --- a/Views/UserControl/Viewport3D.xaml.cs +++ b/Views/UserControl/Viewport3D.xaml.cs @@ -174,9 +174,7 @@ public partial class Viewport3D { var directionName = ((Button)sender).Name.ToString(); var directionValue = (int) TbCustomizeRevolve.Value; - - - + switch (directionName) { case "BtnFcuntion1View": @@ -189,17 +187,28 @@ public partial class Viewport3D break; case "BtnFcuntion3View": //低 + //var center = ViewportManager.ModelBounds.Center; + //var maxDimension = ViewportManager.ModelBounds.Size.Length(); + //var distance = maxDimension *1.2; // 调整相机到模型的距离,保证视野范围内 + //var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; + //camera.Position = new Point3D(center.X, center.Y, center.Z); // 从前面看,Z轴正方向 + //camera.Width = ViewportManager.calCameraWidth(); + //camera.UpDirection = new Vector3D(0, -1, 0); + //camera.LookDirection = new Vector3D(center.X - camera.Position.X, center.Y - camera.Position.Y, center.Z - camera.Position.Z); var center = ViewportManager.ModelBounds.Center; + ViewportManager.ClearMeshLines(ViewportRightMenuShowMeshLines); var maxDimension = ViewportManager.ModelBounds.Size.Length(); - var distance = maxDimension *1.2; // 调整相机到模型的距离,保证视野范围内 + var distance = maxDimension * 1.2; // 调整相机到模型的距离,保证视野范围内 var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; - camera.Position = new Point3D(center.X, center.Y, center.Z); // 从前面看,Z轴正方向 - camera.Width = ViewportManager.calCameraWidth(); - camera.UpDirection = new Vector3D(0, -1, 0); - camera.LookDirection = new Vector3D(center.X - camera.Position.X, center.Y - camera.Position.Y, center.Z - camera.Position.Z); + camera.Position = new Point3D(center.X, center.Y, center.Z + distance); // 从前面看,Z轴正方向 + camera.UpDirection = new Vector3D(0, -1, 0); + camera.LookDirection = new Vector3D(center.X - camera.Position.X, center.Y - camera.Position.Y, center.Z - camera.Position.Z); + await Task.Delay(100); ViewportHelperPro.RotateModel(new Vector3D(0,-1,0)); - await Task.Delay(5000); + await Task.Delay(7000); ViewportHelperPro.RotateModel(new Vector3D(-1,0,0)); + await Task.Delay(7000); + ViewportManager.DoubleClickSelect = !false; break; } diff --git a/Views/UserControl/ViewportData/Helper/VideoHelper.cs b/Views/UserControl/ViewportData/Helper/VideoHelper.cs index 645e1b3..9696ecd 100644 --- a/Views/UserControl/ViewportData/Helper/VideoHelper.cs +++ b/Views/UserControl/ViewportData/Helper/VideoHelper.cs @@ -212,7 +212,8 @@ public class VideoHelper { ViewportHelperPro.RotateModel(new Vector3D(-1, 0, 0)); }); - + ViewportManager.DoubleClickSelect = !false; + } public static PngBitmapEncoder CutPng(Viewport3DX viewport) diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs index e742caf..c6466b8 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs @@ -178,7 +178,7 @@ public class ViewportHelperPro { if (viewport == null) viewport = ViewportManager.GetViewport3D(); - + var generationTask = VideoHelper.StartGenerationAndRotation(viewport); List pngList = await generationTask; @@ -900,6 +900,8 @@ public class ViewportHelperPro public static void RotateModel(Vector3D axis, bool hasLine = true, int speed = 7, int to = 360) { ViewportManager.ClearDicModels(); + ViewportManager.DoubleClickSelect = false; + // 设置旋转的中心点和旋转轴 var rotateTransform = new RotateTransform3D(); var rotation = new AxisAngleRotation3D(axis, 0); @@ -1284,7 +1286,7 @@ public class ViewportHelperPro /// /// /// - public static List ShowMeshLines(List entities, bool isCrown = true, double thickness = 1.0) + public static List ShowMeshLines(bool isCrown = true, double thickness = 0.2) { if (isCrown) { @@ -1298,7 +1300,7 @@ public class ViewportHelperPro } var center = ViewportManager.CenterVector; center.Y = Y; - Viewport3DTriangleEntity firstPoint = entities.Where(x => x.PlaneType == PlaneType.TableFacet).FirstOrDefault(); + Viewport3DTriangleEntity firstPoint = ViewportManager.ViewportTriangle.Where(x => x.PlaneType == PlaneType.TableFacet).FirstOrDefault(); //var b = ((center.Z * firstPoint.Point1.X) - (firstPoint.Point1.Z * center.X)) / (firstPoint.Point1.X - center.X); //var a = (firstPoint.Point1.Z - b) / firstPoint.Point1.X; @@ -1321,27 +1323,27 @@ public class ViewportHelperPro edgeLines = new List>(); var XLine = lineCal.calXline(r); edgeLines.Add(XLine); - lines.Add(DisplayLineModel3D(edgeLines, XlineColor)); + lines.Add(DisplayLineModel3D(edgeLines, XlineColor, thickness)); edgeLines = new List>(); edgeLines.Add(lineCal.calLineOfOffset(XLine, 2)); - var lineA = DisplayLineModel3D(edgeLines, XlineColor); + var lineA = DisplayLineModel3D(edgeLines, XlineColor, thickness); lines.Add(lineA); edgeLines = new List>(); edgeLines.Add(lineCal.calLineOfOffset(XLine, -2)); - var lineB = DisplayLineModel3D(edgeLines, XlineColor); + var lineB = DisplayLineModel3D(edgeLines, XlineColor, thickness); lines.Add(lineB); bindingMoveLine(lineA, lineB); edgeLines = new List>(); edgeLines.Add(lineCal.calLineOfOffset(XLine, 4)); - var lineE = DisplayLineModel3D(edgeLines, XlineColor); + var lineE = DisplayLineModel3D(edgeLines, XlineColor, thickness); lines.Add(lineE); edgeLines = new List>(); edgeLines.Add(lineCal.calLineOfOffset(XLine, -4)); - var lineF = DisplayLineModel3D(edgeLines, XlineColor); + var lineF = DisplayLineModel3D(edgeLines, XlineColor, thickness); lines.Add(lineF); bindingMoveLine(lineE, lineF); @@ -1358,31 +1360,32 @@ public class ViewportHelperPro edgeLines = new List>(); var YLine = lineCal.calYline(r); edgeLines.Add(YLine); - lines.Add(DisplayLineModel3D(edgeLines, YlineColor)); + lines.Add(DisplayLineModel3D(edgeLines, YlineColor, thickness)); edgeLines = new List>(); edgeLines.Add(lineCal.calLineOfOffset(YLine, 2)); - var lineC = DisplayLineModel3D(edgeLines, YlineColor); + var lineC = DisplayLineModel3D(edgeLines, YlineColor, thickness); lines.Add(lineC); edgeLines = new List>(); edgeLines.Add(lineCal.calLineOfOffset(YLine, -2)); - var lineD = DisplayLineModel3D(edgeLines, YlineColor); + var lineD = DisplayLineModel3D(edgeLines, YlineColor, thickness); lines.Add(lineD); bindingMoveLine(lineC, lineD); edgeLines = new List>(); edgeLines.Add(lineCal.calLineOfOffset(YLine, 4)); - var lineG = DisplayLineModel3D(edgeLines, YlineColor); + var lineG = DisplayLineModel3D(edgeLines, YlineColor, thickness); lines.Add(lineG); edgeLines = new List>(); edgeLines.Add(lineCal.calLineOfOffset(YLine, -4)); - var lineH = DisplayLineModel3D(edgeLines, YlineColor); + var lineH = DisplayLineModel3D(edgeLines, YlineColor, thickness); lines.Add(lineH); bindingMoveLine(lineG, lineH); return lines; } + private static readonly double HitTestThickness = 5; /// /// 网状参考线 对向移动绑定 /// @@ -1390,10 +1393,12 @@ public class ViewportHelperPro /// private static void bindingMoveLine(LineGeometryModel3D lineA, LineGeometryModel3D lineB) { + lineA.HitTestThickness = HitTestThickness; lineA.MouseDown3D += LineA_MouseDown3D; lineA.MouseUp3D += LineA_MouseUp3D; lineA.MouseMove3D += LineA_MouseMove3D; moveLines.Add(lineA.GUID, lineB.GUID); + lineB.HitTestThickness = HitTestThickness; lineB.MouseDown3D += LineA_MouseDown3D; lineB.MouseUp3D += LineA_MouseUp3D; lineB.MouseMove3D += LineA_MouseMove3D; @@ -1648,7 +1653,7 @@ public class ViewportHelperPro /// /// /// - public static LineGeometryModel3D ShowCircleLine(bool isCrown = true, double radius = 1.0, double thickness = 1.0) + public static LineGeometryModel3D ShowCircleLine(bool isCrown = true, double radius = 1.0, double thickness = 0.2) { var Y = -0.01F; if (!isCrown) @@ -1657,9 +1662,9 @@ public class ViewportHelperPro } var center = ViewportManager.CenterVector; center.Y = Y; - return UpdateCircleGeometry(center, initialRadius); + return UpdateCircleGeometry(center, initialRadius, thickness); } - private static LineGeometryModel3D UpdateCircleGeometry(Vector3 center, double radius = 1.0) + private static LineGeometryModel3D UpdateCircleGeometry(Vector3 center, double radius = 1.0, double thickness = 1.0) { // 生成圆形线的点 int segments = 100; // 圆的细分段数 @@ -1677,7 +1682,8 @@ public class ViewportHelperPro indices.Add(i); indices.Add((i + 1) % segments); } - var Circle = DisplayLineModel3D(positions, Color4.Black); + var Circle = DisplayLineModel3D(positions, Colors.Orange.ToColor4(),thickness); + Circle.HitTestThickness = HitTestThickness; Circle.MouseDown3D += Circle_MouseDown3D; Circle.MouseUp3D += Circle_MouseUp3D; Circle.MouseMove3D += Circle_MouseMove3D; diff --git a/Views/UserControl/ViewportData/Helper/ViewportManager.cs b/Views/UserControl/ViewportData/Helper/ViewportManager.cs index e8280c9..8efb773 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportManager.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportManager.cs @@ -156,6 +156,15 @@ public class ViewportManager ChooseAddModels.Clear(); } + public static void ResetMeshLines() + { + MainModelMeshLines_C.Clear(); + MainModelMeshLines_C.AddRange(ViewportHelperPro.ShowMeshLines()); + MainModelCircleLine_C = ViewportHelperPro.ShowCircleLine(); + MainModelMeshLines_P.Clear(); + MainModelMeshLines_P.AddRange(ViewportHelperPro.ShowMeshLines(false)); + MainModelCircleLine_P = ViewportHelperPro.ShowCircleLine(false); + } /// /// 模拟面选中 /// @@ -289,12 +298,7 @@ public class ViewportManager _viewport.Camera.UpDirection = new Vector3D(0, -1, 0); _viewport.RenderHost.MSAA = MSAALevel.Maximum; // TODO: - MainModelMeshLines_C.Clear(); - MainModelMeshLines_C.AddRange(ViewportHelperPro.ShowMeshLines(entities)); - MainModelCircleLine_C = ViewportHelperPro.ShowCircleLine(); - MainModelMeshLines_P.Clear(); - MainModelMeshLines_P.AddRange(ViewportHelperPro.ShowMeshLines(entities, false)); - MainModelCircleLine_P = ViewportHelperPro.ShowCircleLine(false); + ResetMeshLines(); } /// @@ -470,12 +474,20 @@ public class ViewportManager _viewport.Items.Remove(MainModelCircleLine_C); MainModelMeshLines_P.ForEach(e => _viewport.Items.Remove(e)); _viewport.Items.Remove(MainModelCircleLine_P); + ResetMeshLines(); } } + + public static void ClearMeshLines(MenuItem menuItem) + { + ViewportManager.ShowMeshLines(false, true); + ViewportManager.ShowMeshLines(false, false); + menuItem.IsChecked = false; + } #endregion - - - #region 预制颜色 + + + #region 预制颜色 /// /// 材质:半透明蓝 /// From 007f91bb411579a0f99599a3f9a604d7c6b6d107 Mon Sep 17 00:00:00 2001 From: Tongg Date: Wed, 22 Jan 2025 17:29:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=203D=E6=A8=A1=E5=9E=8B=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resource/Images/UserControl/03-8-3.png | Bin 0 -> 2906 bytes SparkClient.csproj | 2 ++ Views/UserControl/Viewport3D.xaml | 4 +++ Views/UserControl/Viewport3D.xaml.cs | 12 ++++++++- .../ViewportData/Helper/UnityHelper.cs | 18 ++++++++++++++ .../ViewportData/Helper/ViewportHelperPro.cs | 1 + .../ViewportData/Helper/ViewportManager.cs | 23 ++++++++++++++++++ 7 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 Resource/Images/UserControl/03-8-3.png create mode 100644 Views/UserControl/ViewportData/Helper/UnityHelper.cs diff --git a/Resource/Images/UserControl/03-8-3.png b/Resource/Images/UserControl/03-8-3.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c78f5634a9f268e6fa38811a387a2355707909 GIT binary patch literal 2906 zcmbVO2UHW;8pfxh3+UqrBCbMWsEVnCkPHcE0s>+L5fOCZkTN7=%A`R;(6yi-(w1Xe zs%v?I0tyI<;DQFQ21KKxh?PBPEEGjWUFA&>Iqp0A+Riz5?wxzT`+t8wlODD_aGJ&U z7G`E<(}IKi!;#t9G^Uy(??+}o|BOuE$%3MlW@eT)rZK@RztG;yZ1P+vB1#p-UIy@B z368^uxgbs>ks)X^GrFHf#^H%T6`BhQASnaW-_V3XLwp8iwHKSfma#w~6r@#vE49lb zcv=yU#>e>iqUjm{5g-9o9JEFvmMQ@a12ZZYK-Q*hJO(`qQHdCs#U?^@6gv#ff)yaz z3rE57h-5FcHw{Omc#>(fg=i9iNW~MVc%mnkNCC(MfJ8!%Js5;d!H);R{g;e!AzuuP zP^FRqc)VJz#;HAVutI<*(r7e1frKZKum}RHOp>ZN8mv_5^i_gCsN^XinF@lXXp=+^ z7fw(yFo>pKOpwUN#Y&Z9ZbBS}*KlNbB934(X%xukjpJkq3h^j8pN9vuq@gE2f*Rt8;9Dk~dL^4jHR0Sj=W{f%HPtnSVBpHYg2bFMwf(Hg9 zB5FFBtdRjM1;|msiU=4Me+^XFSC!E$mMJhawEJpE%7@j;`QO|D{W&U-fguq{URVMV zOCm%Ny#OyVK&E*Rr~rZR1}80^o$ApXHY5Fa3OK+u~)2C-Cct~Zv$C6lpSZ>l#ooyyd)ZxC37&IwxmMaV&3`@A|Eb-;<&olifpfZb$`YrkD|r`E zS4OXJ$hrDRVHM}J%1OB=9cuto3&GuTgg!HbYyh4*=ga>7t2RrdaQM z!$q+GXSiSI;#t@cXVciZbs)$p{Z0q;tg~mH81czlr>P0Bp~sy`=pqlzSdf;pbLP#Y zI@>4u`pdZ*>j%eow%>Bna&M%!`3(9LM)w+bc7%*%l$vu%*i92*>&LUI4}7rcd!Axd z-m+);%8?4gjpqQH;l5$MO`-r7X<-!lcz&{%^6^E ztVQ&S4OS1XTdeaN_K+@otvcg#)q%P{UB1BXLfRBCpw_`}_E`)1nqK4PRdZZhI<_Xi zCMUwX%1duO?j?o7trL-;XRNLHn-41Su?PuhrO(xyF%1Ww*pGx1(tcUh>tJ0kxY-(8 zp>3M}{KSF!lMRMs*~Z9-vKnu`YgN(klDv|&$&?yL*f{%ydcCHjWoiF!QC7QWC z%(-`-N-1ow?OEJiH1j4<(U`@fdmNqDy(6IRh~Cf^gF*G5#P1X797zM@`(7Pybj7E$ zvd<R#nNMB!?LxWK25Sy3nhi$dOLu;N+Lbb4h-NdQ5 zJofNQ<|REfE9I#bb*{&8TT%6a`eg;Dd=1Cte?Q`K+jG-B%}2gy1TU^x>esLXH}^uE z`T#rX3SfP$^xo9jb(eKsqFdad15w`W@`AgS%gTb4 zduYmsK2dhuIu}Uy*%&h=M;B9fOmCQIn7TU&*gU7Q!bW$^lLg#rD<*|D9eQ*7{Ok@&O9R-Mrs%D9=zRb_K3m9GK_Sz+pHDB->dYng7*bc0sNXJ!t*CxznA9U0D};NGe? zHVhJ$d%RY$GmG;>cFZ_-Hc%#qKh}_h!sZO7oAF^_*NX;(<;P&_lJLNfe!lCw%Pm2t zn+xywE_G%eiry90xf<$G1pM~C>i5dSZL3b>uKPlJc}RD;+Fq~ScX7uv_wK`Q^mlen z2JyXRFDItTZ5p#1;>%h;qE9f_w$igQuFyYqihJx{(Ry3@{NdJ9RTX-}221B$A!yVV zW{R%R@A>Xy`=QDs9|MJ{`$Q=l(@qvAM;A=Lzg;cN(QZ3gy8d*-{%e=YKIL0Kn@1_d zX0@LU?s6Llf60RJpN}y1qzz`gZ=BzjIx;cgj@X4|eyH5^_Zu9r-2WIeZp%LbqaLQf literal 0 HcmV?d00001 diff --git a/SparkClient.csproj b/SparkClient.csproj index 62c3379..cbedd23 100644 --- a/SparkClient.csproj +++ b/SparkClient.csproj @@ -189,6 +189,8 @@ + + diff --git a/Views/UserControl/Viewport3D.xaml b/Views/UserControl/Viewport3D.xaml index 2c2ccfc..532b5eb 100644 --- a/Views/UserControl/Viewport3D.xaml +++ b/Views/UserControl/Viewport3D.xaml @@ -45,6 +45,10 @@ x:Name="BtnFcuntion3View" Click="BtnFunction_OnClick"> + diff --git a/Views/UserControl/Viewport3D.xaml.cs b/Views/UserControl/Viewport3D.xaml.cs index 45df875..797a4f2 100644 --- a/Views/UserControl/Viewport3D.xaml.cs +++ b/Views/UserControl/Viewport3D.xaml.cs @@ -42,7 +42,12 @@ public partial class Viewport3D private void Viewport3D_OnLoaded(object sender, RoutedEventArgs e) { ViewportManager.SetViewport3D(Viewport3Dx); + ViewportManager.SetViewport(this); ViewportManager.LoadModelByEntities(new List()); + #if DEBUG + #else + BtnShow3DView.Visibility = Visibility.Hidden; + #endif //选项初始化 显示-后端-管理类 一致 ViewportRightMenuSelectFaceFrame.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; @@ -174,7 +179,9 @@ public partial class Viewport3D { var directionName = ((Button)sender).Name.ToString(); var directionValue = (int) TbCustomizeRevolve.Value; - + + + switch (directionName) { case "BtnFcuntion1View": @@ -210,6 +217,9 @@ public partial class Viewport3D await Task.Delay(7000); ViewportManager.DoubleClickSelect = !false; break; + case "BtnShow3DView": + + break; } diff --git a/Views/UserControl/ViewportData/Helper/UnityHelper.cs b/Views/UserControl/ViewportData/Helper/UnityHelper.cs new file mode 100644 index 0000000..10dc8fd --- /dev/null +++ b/Views/UserControl/ViewportData/Helper/UnityHelper.cs @@ -0,0 +1,18 @@ +namespace SparkClient.Views.UserControl.ViewportData.Helper; + +public class UnityHelper +{ + private static string _image_path = AppDomain.CurrentDomain.BaseDirectory + "/temp/image/"; + + /*** + * 1、根据模型信息和钻石编码生成签名作为stl文件名(导出:ViewportHelperPro.ExportModelsToStl(null, path+filename)) + * 2、判断同名STL文件是否存在 存在跳到 7 + * 3、 清理temp下,image、stl两个目录 + * 4、导出模型stl文件,记录完整的路径paramA + * 5、执行导出命令 xx.exe --model=_stl_path+paramA --output=_image_path --type=0/1 0:心图(0.png) 1:箭图(1.png) + * 6、等待命令结束 + * 7、判断图片文件是否存在 --->>不存在:提示生成失败,请重试, --->>不存在并且从2过来的,跳到1 + * 8、展示图片弹窗,并注以说明:心箭图为模拟渲染,实际请以切工镜观测为准。 + * 9、关闭 + */ +} \ No newline at end of file diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs index c6466b8..5984b47 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs @@ -899,6 +899,7 @@ public class ViewportHelperPro /// 旋转时间 秒 public static void RotateModel(Vector3D axis, bool hasLine = true, int speed = 7, int to = 360) { + ViewportManager.GetViewport().ViewportRightMenuShowModelFaceByType.IsChecked = false; ViewportManager.ClearDicModels(); ViewportManager.DoubleClickSelect = false; diff --git a/Views/UserControl/ViewportData/Helper/ViewportManager.cs b/Views/UserControl/ViewportData/Helper/ViewportManager.cs index 8efb773..d9ac7b4 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportManager.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportManager.cs @@ -63,6 +63,8 @@ public class ViewportManager /// 网格线(圈) /// public static LineGeometryModel3D MainModelCircleLine_P = new LineGeometryModel3D(); + + /// /// 腰垂直线 /// @@ -88,6 +90,9 @@ public class ViewportManager /// 模型控件对象映射 /// private static Viewport3DX _viewport; + + //模型 + private static Viewport3D _viewport3D = null; public static void SetViewport3D(Viewport3DX viewport3D) { if (_viewport != null) @@ -105,6 +110,24 @@ public class ViewportManager throw new Exception("Viewport is not set"); return _viewport; + } + public static void SetViewport(Viewport3D viewport3D) + { + if (_viewport != null) + { + ClearDicModels(); + _viewport.Items.Clear(); + + } + + _viewport3D = viewport3D; + } + public static Viewport3D GetViewport() + { + if (_viewport3D == null) + throw new Exception("Viewport is not set"); + return _viewport3D; + } #region 模型选中交互管理 //是否双击选中