master
sunhonglei 5 months ago
parent ecfaa30596
commit a4f8ab8cc5
  1. 16
      Views/UserControl/Viewport3D.xaml.cs
  2. 21
      Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs

@ -413,21 +413,7 @@ public partial class Viewport3D
ViewportManager.ResetChooseAddModels(); ViewportManager.ResetChooseAddModels();
break; break;
case "ViewportRightMenuShowMeshLines": case "ViewportRightMenuShowMeshLines":
var center = ViewportManager.ModelBounds.Center; ViewportManager.ShowMeshLines(checkResult, ViewportHelperPro.IsCrown());
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);
break; break;
} }
} }

@ -1282,8 +1282,11 @@ public class ViewportHelperPro
/// <param name="thickness"></param> /// <param name="thickness"></param>
/// <returns></returns> /// <returns></returns>
public static List<LineGeometryModel3D> ShowMeshLines(List<Viewport3DTriangleEntity> entities, bool isCrown = true, double thickness = 1.0) public static List<LineGeometryModel3D> ShowMeshLines(List<Viewport3DTriangleEntity> entities, bool isCrown = true, double thickness = 1.0)
{
if (isCrown)
{ {
moveLines = new(); moveLines = new();
}
List<LineGeometryModel3D> lines = new(); List<LineGeometryModel3D> lines = new();
var Y = -0.01F; var Y = -0.01F;
if (!isCrown) if (!isCrown)
@ -1552,6 +1555,10 @@ public class ViewportHelperPro
// 现在鼠标对于3d模型的位置 // 现在鼠标对于3d模型的位置
var mousePosition = ev.Position; var mousePosition = ev.Position;
var Y = -0.01F; var Y = -0.01F;
if (!IsCrown())
{
Y = ViewportManager.ModelBounds.Maximum.Y + 0.01F;
}
var center = ViewportManager.CenterVector; var center = ViewportManager.CenterVector;
center.Y = Y; center.Y = Y;
@ -1619,6 +1626,10 @@ public class ViewportHelperPro
dragStartPoint = ev.Position; dragStartPoint = ev.Position;
Point3D mouseWorldPosition = Get3DPointFromMouse(dragStartPoint); Point3D mouseWorldPosition = Get3DPointFromMouse(dragStartPoint);
var Y = -0.01F; var Y = -0.01F;
if(!IsCrown())
{
Y = ViewportManager.ModelBounds.Maximum.Y + 0.01F;
}
var center = ViewportManager.CenterVector; var center = ViewportManager.CenterVector;
center.Y = Y; center.Y = Y;
initDistance = CalculateDistance(mouseWorldPosition, center.ToPoint3D()); initDistance = CalculateDistance(mouseWorldPosition, center.ToPoint3D());
@ -1627,6 +1638,16 @@ public class ViewportHelperPro
Viewport.CaptureMouse(); 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 私有方法 #region 私有方法
/// <summary> /// <summary>

Loading…
Cancel
Save