DXF文件导入并显示图像(以圆为案例)

1.在VS的工具栏安装.netdxf资源包

2.展示案例效果:

DXF导入演示

3.附上DXF导入代码:

private void btnOpenDxf_Click(object sender, EventArgs e)
{

    rtxtMessage.Clear();
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;
    openFileDialog.Filter = "dxf|*.dxf|All|*.*";
    DialogResult dialog = openFileDialog.ShowDialog();
    if (dialog != DialogResult.OK)
    {
        return;
    }
    string fileName = openFileDialog.FileName;//AppDomain.CurrentDomain.BaseDirectory + "testFile\\蓝本-CAD.dxf"
    DisplayMessage($"CAD文件dxf路径为【{fileName}】");
    DxfDocument dxfDocument = DxfDocument.Load(fileName);//载入dxf文件

    DisplayMessage($"活动布局的名称为【{dxfDocument.Entities.ActiveLayout}】");//ActiveLayout
    rtxtMessage.Tag = dxfDocument.Entities;

       

    //IEnumerable<Line> circles = dxfDocument.Entities.Lines;//直线        
    IEnumerable<Circle> circles = dxfDocument.Entities.Circles;//圆

    int circleCount = circles.Count();
    DisplayMessage($"读取到圆Circle的个数为【{circleCount}】");

    var values = new HotPointSeries();
    Random random = new Random();
    for (int i = 0; i < circleCount; i++)
    {
        Circle circle = circles.ElementAt(i);//Line
        //DisplayMessage($"直线【{(i + 1).ToString()}】,起始坐标【({circle.StartPoint})】,结束坐标【{circle.EndPoint}】");//\x20\x20            
        //PointF px1 = new PointF(((float)circle.StartPoint.X), ((float)circle.StartPoint.Y));
        //PointF px2 = new PointF(((float)circle.EndPoint.X), ((float)circle.EndPoint.Y));
        DisplayMessage($"\x20\x20圆【{(i + 1).ToString("D2")}】,圆心坐标【({circle.Center})】,半径【{circle.Radius}】");//读出来的数据
        values.Values.Add(new HotPoint(circle.Center.X, circle.Center.Y, circle.Radius, Color.FromArgb(random.Next(60, 254), Color.Gold)));//显示图像的数据
    }

    //显示图像
    vChart1.Series.Add(values);
    vChart1.Xaxis.Step = 20;
    vChart1.Yaxis.Step = 20;
    vChart1.Yaxis.Split = 5;
    vChart1.Xaxis.Split = 5;
  


    //IEnumerable<Circle> circles = dxfDocument.Entities.Circles;
    //int circleCount = circles.Count();
    //DisplayMessage($"读取到圆Circle的个数为【{circleCount}】");
    //for (int i = 0; i < circleCount; i++)
    //{
    //    Circle circle = circles.ElementAt(i);
    //    DisplayMessage($"\x20\x20圆【{(i + 1).ToString("D3")}】,圆心坐标【({circle.Center})】,半径【{circle.Radius}】");
    //}

}
 

4.感谢浏览

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_47190500

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值