diff --git a/Views/UserControl/Viewport3D.xaml.cs b/Views/UserControl/Viewport3D.xaml.cs index 57f3f9a..8038817 100644 --- a/Views/UserControl/Viewport3D.xaml.cs +++ b/Views/UserControl/Viewport3D.xaml.cs @@ -413,21 +413,7 @@ public partial class Viewport3D ViewportManager.ResetChooseAddModels(); break; case "ViewportRightMenuShowMeshLines": - 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; - var Position = camera.Position; - var LookDirection = camera.LookDirection; - bool isCrown = false; - if(camera.LookDirection.Y >= 0 && camera.UpDirection.Y<=0) - { - isCrown = true; - } - ViewportManager.ShowMeshLines(checkResult, isCrown); - //camera.LookDirection = new Vector3D(center.X - camera.Position.X, center.Y - camera.Position.Y, center.Z - camera.Position.Z); - + ViewportManager.ShowMeshLines(checkResult, ViewportHelperPro.IsCrown()); break; } } diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs index ef0c4b8..d09380b 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs @@ -1283,7 +1283,10 @@ public class ViewportHelperPro /// public static List ShowMeshLines(List entities, bool isCrown = true, double thickness = 1.0) { - moveLines = new(); + if (isCrown) + { + moveLines = new(); + } List lines = new(); var Y = -0.01F; if (!isCrown) @@ -1552,6 +1555,10 @@ public class ViewportHelperPro // 现在鼠标对于3d模型的位置 var mousePosition = ev.Position; var Y = -0.01F; + if (!IsCrown()) + { + Y = ViewportManager.ModelBounds.Maximum.Y + 0.01F; + } var center = ViewportManager.CenterVector; center.Y = Y; @@ -1619,6 +1626,10 @@ public class ViewportHelperPro dragStartPoint = ev.Position; Point3D mouseWorldPosition = Get3DPointFromMouse(dragStartPoint); var Y = -0.01F; + if(!IsCrown()) + { + Y = ViewportManager.ModelBounds.Maximum.Y + 0.01F; + } var center = ViewportManager.CenterVector; center.Y = Y; initDistance = CalculateDistance(mouseWorldPosition, center.ToPoint3D()); @@ -1627,6 +1638,16 @@ public class ViewportHelperPro Viewport.CaptureMouse(); } } + public static bool IsCrown() + { + bool isCrown = false; + var camera = ViewportManager.GetViewport3D().Camera; + if (camera.LookDirection.Y >= 0 && camera.UpDirection.Y <= 0) + { + isCrown = true; + } + return isCrown; + } #region 私有方法 ///