首页 新闻 会员 周边 捐助

求C#读取CAD文件内容

0
悬赏园豆:5 [已解决问题] 解决于 2022-12-01 16:44

可以有偿, 项目遇到瓶颈, 不知道该怎么做下去了
主要有以下一些困难

  1. 可不可以读取到图中设备名称和型号里面的内容
  2. 可不可以就类似于上传文件一样, 不用打开 autocad 软件从而直接读取到里面的内容
  3. 图里可能有各种各样乱七八糟的内容. 但是我需要的数据只有这两行

求思路, 或者学习资料等等, 感谢

临冰听雪丶的主页 临冰听雪丶 | 初学一级 | 园豆:175
提问于:2022-12-01 10:24
< >
分享
最佳答案
0

可以用nuGet 上引用 netDxf 库 解析DXF 文件,读取DXF里面的MTexts 可以获取文字的坐标和类容,然后可以根据坐标获取你想要的文字内容,

收获园豆:5
中华鲟3670 | 小虾三级 |园豆:922 | 2022-12-01 15:00

大哥有没有小Demo 我参考一下

临冰听雪丶 | 园豆:175 (初学一级) | 2022-12-01 15:14

刚试了一下, 感觉获取不到 dwg 的文件

临冰听雪丶 | 园豆:175 (初学一级) | 2022-12-01 15:31

@临冰听雪丶:

using netDxf;
using netDxf.Entities;
using System;
using System.Collections.Generic;

using System.Windows.Forms;



namespace net_DXF
{
    public partial class Form1 : Form
    {
        /// <summary> DXF文件路径 </summary>
        public static string file;
        /// <summary> DXF文件 </summary>
        public static DxfDocument dxf;

        /// <summary> 文本</summary>
        List<MText> mTexts = new List<MText>();
        public Form1()
        {
            InitializeComponent();
 
        }
        /// <summary>// 打开DXF文件 </summary>
        private void btn_Open1_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFile = new OpenFileDialog())
            {
                openFile.Title = "加载DXF文件";
                openFile.Filter = "dxf File(*.dxf)|*.dxf|ALL File(*.*)|*.*";
                if (openFile.ShowDialog() == DialogResult.OK)
                {
                    //获得文件路径
                    file = openFile.FileName;
                    //加载文件
                    dxf = DxfDocument.Load(file);
                   //解析DXF文件
                    ImPort(file);
                }
            }
        }

        public void ImPort(string fileName)
        {

            foreach (MText txt in dxf.MTexts)
            {
                mTexts.Add(txt);
            }
            this.dataGridView1.DataSource = mTexts;
            
        }

    }
}
中华鲟3670 | 园豆:922 (小虾三级) | 2022-12-01 15:41


中华鲟3670 | 园豆:922 (小虾三级) | 2022-12-01 15:56

@临冰听雪丶: 要把DWG文件另存为DXF格式

中华鲟3670 | 园豆:922 (小虾三级) | 2022-12-01 15:58

@中华鲟3670: 刚试了下, 好像确实可以, 但是不知道为什么只取出来一些说明数据, 没取出来表格里面的数据, 谢谢大哥, 我再研究一下看看

临冰听雪丶 | 园豆:175 (初学一级) | 2022-12-01 16:19

@临冰听雪丶: 用记事本打开你的DXF文件,搜索你需要的文字,看看是属于什么类型的数据

中华鲟3670 | 园豆:922 (小虾三级) | 2022-12-01 16:27

@中华鲟3670: 是这个吗
?

临冰听雪丶 | 园豆:175 (初学一级) | 2022-12-01 16:32

@中华鲟3670: 这个是能查出来的

临冰听雪丶 | 园豆:175 (初学一级) | 2022-12-01 16:35

@临冰听雪丶: 对的,那就用Text 类型去读取,要看找到的文字的上面的类型

中华鲟3670 | 园豆:922 (小虾三级) | 2022-12-01 16:39

@中华鲟3670: 查出来啦, 哈哈哈, 谢谢大哥

临冰听雪丶 | 园豆:175 (初学一级) | 2022-12-01 16:44
其他回答(1)
0

提供一个思路,主要就是图像识别:
1、首先读取文件。这里可以参考读取文件:C#读取CAD文件
2、然后进行图像识别。建三个字符数组:一个数字数组,一个字母数组(包含大小写),一个汉字数组(只需要包含设备常用字就行);因为你这个图片格式很标准,如果你能找到图像识别的方法,应该不难实现;这里可以参考一下:一个C#二维码图片识别的Demo

三人乐乐 | 园豆:4823 (老鸟四级) | 2022-12-01 11:03

谢谢大哥, 我试一下

支持(0) 反对(0) 临冰听雪丶 | 园豆:175 (初学一级) | 2022-12-01 11:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册