From 6d2fe70b3508c69df25fab896c1a11c513354681 Mon Sep 17 00:00:00 2001 From: sunhonglei Date: Sat, 18 Jan 2025 16:56:06 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix=EF=BC=9A=E7=BD=91=E6=A0=BC=E7=BA=BF?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Views/UserControl/Viewport3D.xaml.cs | 12 ++-- .../Helper/LineCalculationHelper.cs | 11 ++-- .../ViewportData/Helper/ViewportHelperPro.cs | 58 ++++++++++++------- .../ViewportData/Helper/ViewportManager.cs | 54 ++++++++++++----- 4 files changed, 91 insertions(+), 44 deletions(-) diff --git a/Views/UserControl/Viewport3D.xaml.cs b/Views/UserControl/Viewport3D.xaml.cs index 3e6dc03..b9555de 100644 --- a/Views/UserControl/Viewport3D.xaml.cs +++ b/Views/UserControl/Viewport3D.xaml.cs @@ -418,10 +418,14 @@ public partial class Viewport3D var distance = maxDimension * 1.2; // 调整相机到模型的距离,保证视野范围内 // 获取当前相机 var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.PerspectiveCamera; - camera.Position = new Point3D(center.X, center.Y - distance, center.Z); // 从底部看,Y轴负方向 - camera.UpDirection = new Vector3D(0, 0, -1); - camera.LookDirection = new Vector3D(center.X - camera.Position.X, center.Y - camera.Position.Y, center.Z - camera.Position.Z); - ViewportManager.ShowMeshLines(checkResult); + 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); break; diff --git a/Views/UserControl/ViewportData/Helper/LineCalculationHelper.cs b/Views/UserControl/ViewportData/Helper/LineCalculationHelper.cs index 7789ba1..af1c288 100644 --- a/Views/UserControl/ViewportData/Helper/LineCalculationHelper.cs +++ b/Views/UserControl/ViewportData/Helper/LineCalculationHelper.cs @@ -10,7 +10,7 @@ namespace SparkClient.Views.UserControl.ViewportData.Helper { internal class LineCalculationHelper { - private readonly float Y = -0.01F; + private float Y = -0.01F; private Vector3 point1; private Vector3 center; /// @@ -24,6 +24,7 @@ namespace SparkClient.Views.UserControl.ViewportData.Helper public LineCalculationHelper(Vector3 point1, Vector3 center) { this.point1 = point1; this.center = center; + this.Y = center.Y; this.a = calA(point1, center); this.b = calB(point1, a); } @@ -54,7 +55,7 @@ namespace SparkClient.Views.UserControl.ViewportData.Helper var x1 = twoPoint.p1.X; var z1 = twoPoint.p1.Y; var x2 = twoPoint.p2.X; - var z2 = twoPoint.p2.X; + var z2 = twoPoint.p2.Y; return new Tuple(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2)); } public Tuple calYline(float length) @@ -63,7 +64,7 @@ namespace SparkClient.Views.UserControl.ViewportData.Helper var x1 = twoPoint.p1.X; var z1 = twoPoint.p1.Y; var x2 = twoPoint.p2.X; - var z2 = twoPoint.p2.X; + var z2 = twoPoint.p2.Y; return new Tuple(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2)); } @@ -120,8 +121,8 @@ namespace SparkClient.Views.UserControl.ViewportData.Helper float t2 = (float)(-B - Math.Sqrt(discriminant)) / (2 * A); // 计算两点坐标 - var p1 = (X: t1, Y: k * t1 + b); - var p2 = (X: t2, Y: k * t2 + b); + var p1 = (X: t1, Y: (k * t1) + b); + var p2 = (X: t2, Y: (k * t2) + b); return (p1, p2); } diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs index 48d063d..b63b99c 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs @@ -1279,11 +1279,15 @@ public class ViewportHelperPro /// /// /// - public static List ShowMeshLines(List entities, double thickness = 1.0) + public static List ShowMeshLines(List entities, bool isCrown = true, double thickness = 1.0) { moveLines = new(); List lines = new(); var Y = -0.01F; + if (!isCrown) + { + Y = ViewportManager.ModelBounds.Maximum.Y + 0.01f; + } var center = ViewportManager.CenterVector; center.Y = Y; Viewport3DTriangleEntity firstPoint = entities.Where(x => x.PlaneType == PlaneType.TableFacet).FirstOrDefault(); @@ -1299,63 +1303,73 @@ public class ViewportHelperPro { r = (float)(v*0.501); } - var x1 = r; - var z1 = lineCal.calZ(x1); - var x2 = -r; - var z2 = lineCal.calZ(x2); - edgeLines.Add(new Tuple(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2))); + //var x1 = r; + //var z1 = lineCal.calZ(x1); + //var x2 = -r; + //var z2 = lineCal.calZ(x2); + //edgeLines.Add(new Tuple(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2))); + //lines.Add(DisplayLineModel3D(edgeLines, XlineColor)); + + edgeLines = new List>(); + var XLine = lineCal.calXline(r); + edgeLines.Add(XLine); lines.Add(DisplayLineModel3D(edgeLines, XlineColor)); edgeLines = new List>(); - edgeLines.Add(lineCal.calLineOfOffset(new Tuple(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2)),2)); + edgeLines.Add(lineCal.calLineOfOffset(XLine, 2)); var lineA = DisplayLineModel3D(edgeLines, XlineColor); lines.Add(lineA); edgeLines = new List>(); - edgeLines.Add(lineCal.calLineOfOffset(new Tuple(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2)), -2)); + edgeLines.Add(lineCal.calLineOfOffset(XLine, -2)); var lineB = DisplayLineModel3D(edgeLines, XlineColor); lines.Add(lineB); bindingMoveLine(lineA, lineB); edgeLines = new List>(); - edgeLines.Add(lineCal.calLineOfOffset(new Tuple(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2)), 4)); + edgeLines.Add(lineCal.calLineOfOffset(XLine, 4)); var lineE = DisplayLineModel3D(edgeLines, XlineColor); lines.Add(lineE); edgeLines = new List>(); - edgeLines.Add(lineCal.calLineOfOffset(new Tuple(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2)), -4)); + edgeLines.Add(lineCal.calLineOfOffset(XLine, -4)); var lineF = DisplayLineModel3D(edgeLines, XlineColor); lines.Add(lineF); bindingMoveLine(lineE, lineF); Color4 YlineColor = new Color4(0F, 80f, 0f, 1f); - var x3 = r; - var z3 = lineCal.calZVertical(x3); - var x4 = -r; - var z4 = lineCal.calZVertical(x4); + //var x3 = r; + //var z3 = lineCal.calZVertical(x3); + //var x4 = -r; + //var z4 = lineCal.calZVertical(x4); + + //edgeLines = new List>(); + //edgeLines.Add(new Tuple(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4))); + //lines.Add(DisplayLineModel3D(edgeLines, YlineColor)); edgeLines = new List>(); - edgeLines.Add(new Tuple(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4))); + var YLine = lineCal.calYline(r); + edgeLines.Add(YLine); lines.Add(DisplayLineModel3D(edgeLines, YlineColor)); edgeLines = new List>(); - edgeLines.Add(lineCal.calLineOfOffset(new Tuple(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4)), 2)); + edgeLines.Add(lineCal.calLineOfOffset(YLine, 2)); var lineC = DisplayLineModel3D(edgeLines, YlineColor); lines.Add(lineC); edgeLines = new List>(); - edgeLines.Add(lineCal.calLineOfOffset(new Tuple(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4)), -2)); + edgeLines.Add(lineCal.calLineOfOffset(YLine, -2)); var lineD = DisplayLineModel3D(edgeLines, YlineColor); lines.Add(lineD); bindingMoveLine(lineC, lineD); edgeLines = new List>(); - edgeLines.Add(lineCal.calLineOfOffset(new Tuple(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4)), 4)); + edgeLines.Add(lineCal.calLineOfOffset(YLine, 4)); var lineG = DisplayLineModel3D(edgeLines, YlineColor); lines.Add(lineG); edgeLines = new List>(); - edgeLines.Add(lineCal.calLineOfOffset(new Tuple(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4)), -4)); + edgeLines.Add(lineCal.calLineOfOffset(YLine, -4)); var lineH = DisplayLineModel3D(edgeLines, YlineColor); lines.Add(lineH); bindingMoveLine(lineG, lineH); @@ -1482,9 +1496,13 @@ public class ViewportHelperPro /// /// /// - public static LineGeometryModel3D ShowCircleLine(double radius = 1.0, double thickness = 1.0) + public static LineGeometryModel3D ShowCircleLine(bool isCrown = true, double radius = 1.0, double thickness = 1.0) { var Y = -0.01F; + if (!isCrown) + { + Y = ViewportManager.ModelBounds.Maximum.Y + 0.01f; + } var center = ViewportManager.CenterVector; center.Y = Y; return UpdateCircleGeometry(center, initialRadius); diff --git a/Views/UserControl/ViewportData/Helper/ViewportManager.cs b/Views/UserControl/ViewportData/Helper/ViewportManager.cs index 94ef6db..8628ad2 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportManager.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportManager.cs @@ -50,11 +50,19 @@ public class ViewportManager /// /// 网格线 /// - public static List MainModelMeshLines = new List(); + public static List MainModelMeshLines_C = new List(); /// /// 网格线(圈) /// - public static LineGeometryModel3D MainModelCircleLine = new LineGeometryModel3D(); + public static LineGeometryModel3D MainModelCircleLine_C = new LineGeometryModel3D(); + /// + /// 网格线 + /// + public static List MainModelMeshLines_P = new List(); + /// + /// 网格线(圈) + /// + public static LineGeometryModel3D MainModelCircleLine_P = new LineGeometryModel3D(); /// /// 腰垂直线 /// @@ -278,9 +286,12 @@ public class ViewportManager _viewport.Camera.UpDirection = new Vector3D(0, -1, 0); _viewport.RenderHost.MSAA = MSAALevel.Maximum; // TODO: - MainModelMeshLines.Clear(); - MainModelMeshLines.AddRange(ViewportHelperPro.ShowMeshLines(entities)); - MainModelCircleLine = ViewportHelperPro.ShowCircleLine(); + 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); } /// @@ -422,24 +433,37 @@ public class ViewportManager } } - public static void ShowMeshLines(bool isShow) { + public static void ShowMeshLines(bool isShow,bool isCrown) { if (_viewport == null) return; if (isShow) { - MainModelMeshLines.ForEach(e => + if (isCrown) { + MainModelMeshLines_C.ForEach(e => + { + if (!_viewport.Items.Contains(e)) + _viewport.Items.Add(e); + }); + if (!_viewport.Items.Contains(MainModelCircleLine_C)) + _viewport.Items.Add(MainModelCircleLine_C); + } + else { - if (!_viewport.Items.Contains(e)) - _viewport.Items.Add(e); - }); - if (!_viewport.Items.Contains(MainModelCircleLine)) - _viewport.Items.Add(MainModelCircleLine); - + MainModelMeshLines_P.ForEach(e => + { + if (!_viewport.Items.Contains(e)) + _viewport.Items.Add(e); + }); + if (!_viewport.Items.Contains(MainModelCircleLine_P)) + _viewport.Items.Add(MainModelCircleLine_P); + } } else { - MainModelMeshLines.ForEach(e => _viewport.Items.Remove(e)); - _viewport.Items.Remove(MainModelCircleLine); + MainModelMeshLines_C.ForEach(e => _viewport.Items.Remove(e)); + _viewport.Items.Remove(MainModelCircleLine_C); + MainModelMeshLines_P.ForEach(e => _viewport.Items.Remove(e)); + _viewport.Items.Remove(MainModelCircleLine_P); } } #endregion From 0904710581e6124943aa1d9e7d36280cd386ce98 Mon Sep 17 00:00:00 2001 From: tongg Date: Sat, 18 Jan 2025 17:10:59 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E4=B8=BA=E6=AD=A3=E4=BA=A4=E7=9B=B8=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Views/UserControl/Viewport3D.xaml.cs | 9 +++++---- .../ViewportData/Helper/ViewportHelperPro.cs | 12 +++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Views/UserControl/Viewport3D.xaml.cs b/Views/UserControl/Viewport3D.xaml.cs index 3e6dc03..426c962 100644 --- a/Views/UserControl/Viewport3D.xaml.cs +++ b/Views/UserControl/Viewport3D.xaml.cs @@ -32,6 +32,7 @@ public partial class Viewport3D Viewport3Dx.ShowViewCube = false; Viewport3Dx.ShowCoordinateSystem = false; ViewportManager.SetViewport3D(Viewport3Dx); + } /// @@ -129,7 +130,7 @@ public partial class Viewport3D var maxDimension = ViewportManager.ModelBounds.Size.Length(); var distance = maxDimension *1.2; // 调整相机到模型的距离,保证视野范围内 // 获取当前相机 - var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.PerspectiveCamera; + var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; switch (directionName) { @@ -187,7 +188,7 @@ public partial class Viewport3D var center = ViewportManager.ModelBounds.Center; var maxDimension = ViewportManager.ModelBounds.Size.Length(); var distance = maxDimension *1.2; // 调整相机到模型的距离,保证视野范围内 - var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.PerspectiveCamera; + var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; 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); @@ -211,7 +212,7 @@ public partial class Viewport3D var directionValue = (int)TbCustomizeRevolve.Value; // 旋转角度(单位:度) // 获取当前相机和模型中心 - var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.PerspectiveCamera; + var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; if (camera == null) return; var modelCenter = ViewportManager.CenterVector; // 模型中心 @@ -417,7 +418,7 @@ public partial class Viewport3D var maxDimension = ViewportManager.ModelBounds.Size.Length(); var distance = maxDimension * 1.2; // 调整相机到模型的距离,保证视野范围内 // 获取当前相机 - var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.PerspectiveCamera; + var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; camera.Position = new Point3D(center.X, center.Y - distance, center.Z); // 从底部看,Y轴负方向 camera.UpDirection = new Vector3D(0, 0, -1); camera.LookDirection = new Vector3D(center.X - camera.Position.X, center.Y - camera.Position.Y, center.Z - camera.Position.Z); diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs index 48d063d..6f196ca 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs @@ -19,6 +19,7 @@ using PerspectiveCamera = HelixToolkit.Wpf.SharpDX.PerspectiveCamera; using System.Windows.Controls; using HelixToolkit.Wpf; using MeshBuilder = HelixToolkit.Wpf.SharpDX.MeshBuilder; +using OrthographicCamera = HelixToolkit.Wpf.SharpDX.OrthographicCamera; namespace SparkClient.Views.UserControl.ViewportData.Helper; @@ -1010,7 +1011,7 @@ public class ViewportHelperPro /// /// /// - public static HelixToolkit.Wpf.SharpDX.PerspectiveCamera CalculateCamera(Vector3 positiveDirection, BoundingBox boundingBox, double fieldOfView = 45, double aspectRatio = 16.0 / 9.0) + public static HelixToolkit.Wpf.SharpDX.OrthographicCamera CalculateCamera(Vector3 positiveDirection, BoundingBox boundingBox, double fieldOfView = 45, double aspectRatio = 16.0 / 9.0) { // 单位化正方向 var normalizedDirection = Vector3.Normalize(positiveDirection); @@ -1028,15 +1029,16 @@ public class ViewportHelperPro // 相机位置和朝向 var cameraPosition = center - normalizedDirection * (float)distance; // 沿正方向放置相机 var lookDirection = center - cameraPosition; // 朝向模型中心 - + // 创建并返回相机 - return new HelixToolkit.Wpf.SharpDX.PerspectiveCamera + return new HelixToolkit.Wpf.SharpDX.OrthographicCamera { Position = cameraPosition.ToPoint3D(), LookDirection = lookDirection.ToVector3D(), UpDirection = new Vector3D(0, 1, 0), // 默认全局 Y 轴为上方向 - FieldOfView = fieldOfView, + NearPlaneDistance = 0.1f, + FarPlaneDistance=1000 }; } @@ -1446,7 +1448,7 @@ public class ViewportHelperPro { // 使用 HelixToolkit 的 Ray3D 和 Plane3D var Viewport = ViewportManager.GetViewport3D(); - var camera = Viewport.Camera as PerspectiveCamera; + var camera = Viewport.Camera as OrthographicCamera; // 创建射线 var ray = new Ray3D( From a4f8ab8cc59009a5daef93f7e1ca29f63fcf5a9f Mon Sep 17 00:00:00 2001 From: sunhonglei Date: Sat, 18 Jan 2025 18:01:44 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Views/UserControl/Viewport3D.xaml.cs | 16 +------------ .../ViewportData/Helper/ViewportHelperPro.cs | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 16 deletions(-) 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 私有方法 /// From a4624db0a1d3eb35fbff1eac932a98cb2b8dc481 Mon Sep 17 00:00:00 2001 From: sunhonglei Date: Sat, 18 Jan 2025 18:18:57 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=E7=BD=91=E6=A0=BC=E7=BA=BF=E9=BC=A0?= =?UTF-8?q?=E6=A0=87=E6=8C=89=E4=B8=8B=E6=97=B6=E9=BC=A0=E6=A0=87=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserControl/ViewportData/Helper/ViewportHelperPro.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs index d09380b..f4e2248 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs @@ -20,6 +20,7 @@ using System.Windows.Controls; using HelixToolkit.Wpf; using MeshBuilder = HelixToolkit.Wpf.SharpDX.MeshBuilder; using OrthographicCamera = HelixToolkit.Wpf.SharpDX.OrthographicCamera; +using System.Windows.Input; namespace SparkClient.Views.UserControl.ViewportData.Helper; @@ -1306,7 +1307,7 @@ public class ViewportHelperPro float r =5; if(double.TryParse(ViewportManager.DiamondData["M2"].ToString(), out var v)) { - r = (float)(v*0.501); + r = (float)(v*0.51); } //var x1 = r; //var z1 = lineCal.calZ(x1); @@ -1450,12 +1451,16 @@ public class ViewportHelperPro private static void LineA_MouseUp3D(object sender, RoutedEventArgs e) { isDrawing = false; + var Viewport = ViewportManager.GetViewport3D(); + Viewport.Cursor = Cursors.Arrow; } private static void LineA_MouseDown3D(object sender, RoutedEventArgs e) { isDrawing = true; if(e is HelixToolkit.Wpf.SharpDX.MouseDown3DEventArgs ev){ + var Viewport = ViewportManager.GetViewport3D(); + Viewport.Cursor = Cursors.SizeAll; // 获取鼠标点击的位置 var mousePosition = ev.Position; previousMousePosition = Get3DPointFromMouse(mousePosition); @@ -1609,6 +1614,7 @@ public class ViewportHelperPro { isDrawing = false; var Viewport = ViewportManager.GetViewport3D(); + Viewport.Cursor = Cursors.Arrow; initialRadius = endRadius; initDistance = endDistance; // 释放鼠标捕获 @@ -1634,6 +1640,7 @@ public class ViewportHelperPro center.Y = Y; initDistance = CalculateDistance(mouseWorldPosition, center.ToPoint3D()); var Viewport = ViewportManager.GetViewport3D(); + Viewport.Cursor = Cursors.SizeAll; // 捕获鼠标 Viewport.CaptureMouse(); }