在eyeshot wpf中,在视口中显示尺寸时,我必须根据用户在视口文本框中输入的小数点来显示尺寸的小数位。 例如:如果 num = 1.345 如果他输入 1 那么它应该显示 1.3 与 1.234 类似,如果他输入 2,则应显示 1.23 我尝试了起草演示示例中的编码,这是我的代码
我的代码:
在尺寸标注.cs 类中:
private void DrawInteractiveOrdinateDim()
{
if (points.Count < 1)
return;
List<Point3D> pts = new List<Point3D>();
Point3D leaderEndPoint;
Segment3D[] segments = OrdinateDim.Preview(Plane.XY, points[0], current, drawingOrdinateDimVertical, dimTextHeight * 3, dimTextHeight, 0.625, 3.0, 0.625, out leaderEndPoint);
foreach (var segment3D in segments)
{
pts.Add(WorldToScreen(segment3D.P0));
pts.Add(WorldToScreen(segment3D.P1));
}
renderContext.DrawLines(pts.ToArray());
renderContext.EnableXOR(false);
double distance = drawingOrdinateDimVertical ? Math.Abs(Plane.XY.Origin.X - points[0].X) : Math.Abs(Plane.XY.Origin.Y - points[0].Y);
distance = Math.Round(distance, Roundoffno);
string dimText = "D " + distance;
DrawText(mouseLocation.X, (int)Size.Height - mouseLocation.Y + 10, dimText,
new Font("Tahoma", 8.25f), DrawingColor, ContentAlignment.BottomLeft);
}
在snapping.cs类中(显示最终输出)
else if (entity is Dimension)
{
Dimension dim = (Dimension)entity;
dim.LayerName = layerName;
dim.WidthFactor = 0.9;
dim.LineWeightMethod = colorMethodType.byEntity;
double d1 = dim.Distance;
double newDistance = Math.Round(d1, Roundoffno);
dim.Text = "D " + newDistance.ToString();
Entities.Add(dim);
}
我期望的是,在视口中显示尺寸时,我能够根据用户的意愿以交互方式正确显示小数点的数量,但在最终输出中它会返回到原始数字,存在错误在 snapping.cs 类中。请帮我解决这个问题
你可以的。
dim.Text = "D " + newDistance.ToString($"F{Roundoffno}");