You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Eyeshot WPF示例中实现导入DXF后按按钮显示直线及圆半径尺寸

在Eyeshot中实现DXF图形的尺寸标注功能

一、前期准备:确认DXF导入完成

确保已将DXF文件成功导入Eyeshot的Model实例,示例导入代码如下:

// 假设已初始化Model实例model
var dxfImporter = new devDept.Eyeshot.Translators.DxfImporter();
dxfImporter.DoWork(@"你的DXF文件路径");
model.Entities.AddRange(dxfImporter.Entities);
model.Regen();

二、按钮点击事件实现

1. 按钮1:显示所有直线尺寸

遍历Model内实体,筛选Line类型并创建线性尺寸标注,添加到标注集合:

private void Button1_Click(object sender, RoutedEventArgs e)
{
    // 清空现有标注(避免重复显示)
    model.Dimensions.Clear();

    foreach (var entity in model.Entities)
    {
        if (entity is Line line)
        {
            // 创建线性标注:参数为直线起点、终点、标注偏移位置
            var linearDim = new LinearDimension(line.StartPoint, line.EndPoint, new Point3D(line.MidPoint.X + 10, line.MidPoint.Y, 0));
            linearDim.Color = Color.Red;
            linearDim.TextHeight = 5;
            model.Dimensions.Add(linearDim);
        }
    }

    model.Regen();
    viewport1.Invalidate();
}

2. 按钮2:显示所有圆的半径尺寸

筛选Circle类型并创建半径尺寸标注:

private void Button2_Click(object sender, RoutedEventArgs e)
{
    model.Dimensions.Clear();

    foreach (var entity in model.Entities)
    {
        if (entity is Circle circle)
        {
            // 创建半径标注:参数为圆心、半径、标注位置点
            var radiusDim = new RadiusDimension(circle.Center, circle.Radius, circle.Center + new Vector3D(circle.Radius + 10, 0, 0));
            radiusDim.Color = Color.Blue;
            radiusDim.TextHeight = 5;
            model.Dimensions.Add(radiusDim);
        }
    }

    model.Regen();
    viewport1.Invalidate();
}

三、不同图形的尺寸标注方法

1. 直线/多段线直线段

使用LinearDimension,支持对齐标注(跟随直线角度):

// 对齐式线性标注
var alignedDim = new LinearDimension(line.StartPoint, line.EndPoint, line.MidPoint + new Vector3D(0, 10, 0), true);

2. 圆弧/圆

  • 半径标注:用RadiusDimension(见按钮2示例)
  • 直径标注:用DiameterDimension
var diameterDim = new DiameterDimension(circle.Center, circle.Radius, circle.Center + new Vector3D(circle.Radius + 15, 0, 0));
  • 圆弧长度标注:用ArcLengthDimension
if (entity is Arc arc)
{
    var arcLengthDim = new ArcLengthDimension(arc.Center, arc.Radius, arc.StartAngle, arc.EndAngle, arc.MidPoint + new Vector3D(10, 0, 0));
    model.Dimensions.Add(arcLengthDim);
}

3. 角度/其他标注

  • 两直线夹角或圆弧圆心角标注:用AngularDimension
// 两直线夹角标注
var angularDim = new AngularDimension(line1.StartPoint, line1.EndPoint, line2.StartPoint, line2.EndPoint, new Point3D(0, 0, 0));

四、注意事项

  • 标注添加后必须调用model.Regen()和viewport.Invalidate()刷新显示
  • 可通过TextHeight、Color、ArrowSize等属性自定义标注样式
  • 若DXF导入的是块(BlockReference),需先解析块内实体再标注

内容的提问来源于stack exchange,提问作者unknown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:57:42