|
|
@ -899,7 +899,10 @@ public class ViewportHelperPro |
|
|
|
/// <param name="speed">旋转时间 秒</param> |
|
|
|
/// <param name="speed">旋转时间 秒</param> |
|
|
|
public static void RotateModel(Vector3D axis, bool hasLine = true, int speed = 7, int to = 360) |
|
|
|
public static void RotateModel(Vector3D axis, bool hasLine = true, int speed = 7, int to = 360) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
ViewportManager.GetViewport().ViewportRightMenuShowModelFaceByType.IsChecked = false; |
|
|
|
ViewportManager.ClearDicModels(); |
|
|
|
ViewportManager.ClearDicModels(); |
|
|
|
|
|
|
|
ViewportManager.DoubleClickSelect = false; |
|
|
|
|
|
|
|
|
|
|
|
// 设置旋转的中心点和旋转轴 |
|
|
|
// 设置旋转的中心点和旋转轴 |
|
|
|
var rotateTransform = new RotateTransform3D(); |
|
|
|
var rotateTransform = new RotateTransform3D(); |
|
|
|
var rotation = new AxisAngleRotation3D(axis, 0); |
|
|
|
var rotation = new AxisAngleRotation3D(axis, 0); |
|
|
@ -1284,7 +1287,7 @@ public class ViewportHelperPro |
|
|
|
/// <param name="entities"></param> |
|
|
|
/// <param name="entities"></param> |
|
|
|
/// <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(bool isCrown = true, double thickness = 0.2) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (isCrown) |
|
|
|
if (isCrown) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1298,7 +1301,7 @@ public class ViewportHelperPro |
|
|
|
} |
|
|
|
} |
|
|
|
var center = ViewportManager.CenterVector; |
|
|
|
var center = ViewportManager.CenterVector; |
|
|
|
center.Y = Y; |
|
|
|
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 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; |
|
|
|
//var a = (firstPoint.Point1.Z - b) / firstPoint.Point1.X; |
|
|
@ -1321,27 +1324,27 @@ public class ViewportHelperPro |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
var XLine = lineCal.calXline(r); |
|
|
|
var XLine = lineCal.calXline(r); |
|
|
|
edgeLines.Add(XLine); |
|
|
|
edgeLines.Add(XLine); |
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, XlineColor)); |
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, XlineColor, thickness)); |
|
|
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(XLine, 2)); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(XLine, 2)); |
|
|
|
var lineA = DisplayLineModel3D(edgeLines, XlineColor); |
|
|
|
var lineA = DisplayLineModel3D(edgeLines, XlineColor, thickness); |
|
|
|
lines.Add(lineA); |
|
|
|
lines.Add(lineA); |
|
|
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(XLine, -2)); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(XLine, -2)); |
|
|
|
var lineB = DisplayLineModel3D(edgeLines, XlineColor); |
|
|
|
var lineB = DisplayLineModel3D(edgeLines, XlineColor, thickness); |
|
|
|
lines.Add(lineB); |
|
|
|
lines.Add(lineB); |
|
|
|
bindingMoveLine(lineA, lineB); |
|
|
|
bindingMoveLine(lineA, lineB); |
|
|
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(XLine, 4)); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(XLine, 4)); |
|
|
|
var lineE = DisplayLineModel3D(edgeLines, XlineColor); |
|
|
|
var lineE = DisplayLineModel3D(edgeLines, XlineColor, thickness); |
|
|
|
lines.Add(lineE); |
|
|
|
lines.Add(lineE); |
|
|
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(XLine, -4)); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(XLine, -4)); |
|
|
|
var lineF = DisplayLineModel3D(edgeLines, XlineColor); |
|
|
|
var lineF = DisplayLineModel3D(edgeLines, XlineColor, thickness); |
|
|
|
lines.Add(lineF); |
|
|
|
lines.Add(lineF); |
|
|
|
bindingMoveLine(lineE, lineF); |
|
|
|
bindingMoveLine(lineE, lineF); |
|
|
|
|
|
|
|
|
|
|
@ -1358,31 +1361,32 @@ public class ViewportHelperPro |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
var YLine = lineCal.calYline(r); |
|
|
|
var YLine = lineCal.calYline(r); |
|
|
|
edgeLines.Add(YLine); |
|
|
|
edgeLines.Add(YLine); |
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, YlineColor)); |
|
|
|
lines.Add(DisplayLineModel3D(edgeLines, YlineColor, thickness)); |
|
|
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(YLine, 2)); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(YLine, 2)); |
|
|
|
var lineC = DisplayLineModel3D(edgeLines, YlineColor); |
|
|
|
var lineC = DisplayLineModel3D(edgeLines, YlineColor, thickness); |
|
|
|
lines.Add(lineC); |
|
|
|
lines.Add(lineC); |
|
|
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(YLine, -2)); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(YLine, -2)); |
|
|
|
var lineD = DisplayLineModel3D(edgeLines, YlineColor); |
|
|
|
var lineD = DisplayLineModel3D(edgeLines, YlineColor, thickness); |
|
|
|
lines.Add(lineD); |
|
|
|
lines.Add(lineD); |
|
|
|
bindingMoveLine(lineC, lineD); |
|
|
|
bindingMoveLine(lineC, lineD); |
|
|
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(YLine, 4)); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(YLine, 4)); |
|
|
|
var lineG = DisplayLineModel3D(edgeLines, YlineColor); |
|
|
|
var lineG = DisplayLineModel3D(edgeLines, YlineColor, thickness); |
|
|
|
lines.Add(lineG); |
|
|
|
lines.Add(lineG); |
|
|
|
|
|
|
|
|
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines = new List<Tuple<Vector3, Vector3>>(); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(YLine, -4)); |
|
|
|
edgeLines.Add(lineCal.calLineOfOffset(YLine, -4)); |
|
|
|
var lineH = DisplayLineModel3D(edgeLines, YlineColor); |
|
|
|
var lineH = DisplayLineModel3D(edgeLines, YlineColor, thickness); |
|
|
|
lines.Add(lineH); |
|
|
|
lines.Add(lineH); |
|
|
|
bindingMoveLine(lineG, lineH); |
|
|
|
bindingMoveLine(lineG, lineH); |
|
|
|
return lines; |
|
|
|
return lines; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private static readonly double HitTestThickness = 5; |
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// 网状参考线 对向移动绑定 |
|
|
|
/// 网状参考线 对向移动绑定 |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
@ -1390,10 +1394,12 @@ public class ViewportHelperPro |
|
|
|
/// <param name="lineB"></param> |
|
|
|
/// <param name="lineB"></param> |
|
|
|
private static void bindingMoveLine(LineGeometryModel3D lineA, LineGeometryModel3D lineB) |
|
|
|
private static void bindingMoveLine(LineGeometryModel3D lineA, LineGeometryModel3D lineB) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
lineA.HitTestThickness = HitTestThickness; |
|
|
|
lineA.MouseDown3D += LineA_MouseDown3D; |
|
|
|
lineA.MouseDown3D += LineA_MouseDown3D; |
|
|
|
lineA.MouseUp3D += LineA_MouseUp3D; |
|
|
|
lineA.MouseUp3D += LineA_MouseUp3D; |
|
|
|
lineA.MouseMove3D += LineA_MouseMove3D; |
|
|
|
lineA.MouseMove3D += LineA_MouseMove3D; |
|
|
|
moveLines.Add(lineA.GUID, lineB.GUID); |
|
|
|
moveLines.Add(lineA.GUID, lineB.GUID); |
|
|
|
|
|
|
|
lineB.HitTestThickness = HitTestThickness; |
|
|
|
lineB.MouseDown3D += LineA_MouseDown3D; |
|
|
|
lineB.MouseDown3D += LineA_MouseDown3D; |
|
|
|
lineB.MouseUp3D += LineA_MouseUp3D; |
|
|
|
lineB.MouseUp3D += LineA_MouseUp3D; |
|
|
|
lineB.MouseMove3D += LineA_MouseMove3D; |
|
|
|
lineB.MouseMove3D += LineA_MouseMove3D; |
|
|
@ -1648,7 +1654,7 @@ public class ViewportHelperPro |
|
|
|
/// <param name="radius"></param> |
|
|
|
/// <param name="radius"></param> |
|
|
|
/// <param name="thickness"></param> |
|
|
|
/// <param name="thickness"></param> |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
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; |
|
|
|
var Y = -0.01F; |
|
|
|
if (!isCrown) |
|
|
|
if (!isCrown) |
|
|
@ -1657,9 +1663,9 @@ public class ViewportHelperPro |
|
|
|
} |
|
|
|
} |
|
|
|
var center = ViewportManager.CenterVector; |
|
|
|
var center = ViewportManager.CenterVector; |
|
|
|
center.Y = Y; |
|
|
|
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; // 圆的细分段数 |
|
|
|
int segments = 100; // 圆的细分段数 |
|
|
@ -1677,7 +1683,8 @@ public class ViewportHelperPro |
|
|
|
indices.Add(i); |
|
|
|
indices.Add(i); |
|
|
|
indices.Add((i + 1) % segments); |
|
|
|
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.MouseDown3D += Circle_MouseDown3D; |
|
|
|
Circle.MouseUp3D += Circle_MouseUp3D; |
|
|
|
Circle.MouseUp3D += Circle_MouseUp3D; |
|
|
|
Circle.MouseMove3D += Circle_MouseMove3D; |
|
|
|
Circle.MouseMove3D += Circle_MouseMove3D; |
|
|
|