|
|
|
@ -23,6 +23,7 @@ using Color = SharpDX.Color; |
|
|
|
|
using GeometryModel3D = HelixToolkit.Wpf.SharpDX.GeometryModel3D; |
|
|
|
|
using NPOI.SS.Formula.Functions; |
|
|
|
|
using MeshGeometry3D = HelixToolkit.Wpf.SharpDX.MeshGeometry3D; |
|
|
|
|
using NPOI.SS.UserModel; |
|
|
|
|
|
|
|
|
|
namespace SparkClient.Views.UserControl.ViewportData.Helper; |
|
|
|
|
|
|
|
|
@ -1289,7 +1290,7 @@ public class ViewportHelperPro |
|
|
|
|
var lineCal = new LineCalculationHelper(firstPoint.Point1, center); |
|
|
|
|
|
|
|
|
|
var edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
|
Color4 XlineColor =new Color4(255f, 0f, 0f, 1f); |
|
|
|
|
Color4 XlineColor =new Color4(80f, 0f, 0f, 1f); |
|
|
|
|
var x1 = 5; |
|
|
|
|
var z1 = lineCal.calZ(x1); |
|
|
|
|
var x2 = -5; |
|
|
|
@ -1297,27 +1298,74 @@ public class ViewportHelperPro |
|
|
|
|
edgeLines.Add(new Tuple<Vector3, Vector3>(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2))); |
|
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, XlineColor)); |
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(new Tuple<Vector3, Vector3>(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2)),2)); |
|
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, XlineColor)); |
|
|
|
|
var lineA = DisplayLineModel3D(edgeLines, Color4.Black); |
|
|
|
|
lines.Add(lineA); |
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(new Tuple<Vector3, Vector3>(new Vector3(x1, Y, z1), new Vector3(x2, Y, z2)), -2)); |
|
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, XlineColor)); |
|
|
|
|
var lineB = DisplayLineModel3D(edgeLines, XlineColor); |
|
|
|
|
lines.Add(lineB); |
|
|
|
|
lineA.MouseDown3D += LineA_MouseDown3D; |
|
|
|
|
lineA.MouseUp3D += LineA_MouseUp3D; |
|
|
|
|
lineA.MouseMove3D += LineA_MouseMove3D; |
|
|
|
|
|
|
|
|
|
Color4 YlineColor = new Color4(0F, 255f, 0f, 1f); |
|
|
|
|
Color4 YlineColor = new Color4(0F, 80f, 0f, 1f); |
|
|
|
|
var x3 = 5; |
|
|
|
|
var z3 = lineCal.calZVertical(x3); |
|
|
|
|
var x4 = -5; |
|
|
|
|
var z4 = lineCal.calZVertical(x4); |
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
|
edgeLines.Add(new Tuple<Vector3, Vector3>(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4))); |
|
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, YlineColor)); |
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(new Tuple<Vector3, Vector3>(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4)), 2)); |
|
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, YlineColor)); |
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(new Tuple<Vector3, Vector3>(new Vector3(x3, Y, z3), new Vector3(x4, Y, z4)), -2)); |
|
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, YlineColor)); |
|
|
|
|
return lines; |
|
|
|
|
} |
|
|
|
|
private static bool isDrawing = false; |
|
|
|
|
private static Vector3 startpoint; |
|
|
|
|
private static void LineA_MouseMove3D(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
if (isDrawing) |
|
|
|
|
{ |
|
|
|
|
if (e is HelixToolkit.Wpf.SharpDX.MouseMove3DEventArgs ev) |
|
|
|
|
{ |
|
|
|
|
var line = sender as LineGeometryModel3D; |
|
|
|
|
var newPoint = ev.HitTestResult.PointHit; |
|
|
|
|
var moveDirection = newPoint - startpoint; |
|
|
|
|
var lineDirection = line.Geometry.Positions[1] - line.Geometry.Positions[0]; |
|
|
|
|
|
|
|
|
|
var perpendicularDirection = Vector3.Cross(lineDirection, Vector3.Cross(moveDirection, lineDirection)); |
|
|
|
|
perpendicularDirection.Normalize(); |
|
|
|
|
|
|
|
|
|
line.Geometry.Positions[0] += perpendicularDirection * Vector3.Dot(moveDirection, perpendicularDirection); |
|
|
|
|
line.Geometry.Positions[1] += perpendicularDirection * Vector3.Dot(moveDirection, perpendicularDirection); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static void LineA_MouseUp3D(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
isDrawing = false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static void LineA_MouseDown3D(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
isDrawing = true; |
|
|
|
|
if(e is HelixToolkit.Wpf.SharpDX.MouseDown3DEventArgs ev){ |
|
|
|
|
startpoint = ev.HitTestResult.PointHit; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static LineGeometryModel3D ShowCircleLine(double radius = 1.0, double thickness = 1.0) |
|
|
|
|
{ |
|
|
|
|
var Y = -0.01F; |
|
|
|
|