0

0

C# 操作CAD文件 C#如何读取DWG或DXF文件的基本信息

星降

星降

发布时间:2026-02-18 08:25:02

|

224人浏览过

|

来源于php中文网

原创

netdxf 是最轻量的 dxf 元信息读取方案,可直接解析图层、实体数、单位、创建时间等,无需 autocad;需注意头变量判空、编码设置(如 gbk)及严格模式异常处理。

c# 操作cad文件 c#如何读取dwg或dxf文件的基本信息

netDxf 读取 DXF 文件元信息最轻量

DXF 是文本可读格式,netDxf 开源库能直接解析图层、实体数、单位、创建时间等基本信息,不依赖 AutoCAD 安装。它适合做批量检查、预处理或轻量 CAD 数据提取。

常见错误现象:NullReferenceException 在调用 DxfDocument.Load 后立刻访问 document.Header —— 实际上部分头变量(如 $INSUNITS)可能未定义,需先判断 document.Header.ContainsKey("$INSUNITS")

  • 使用场景:自动化校验设计院交付的 DXF 是否含标准图层、是否设置毫米单位
  • DxfDocument.Load 默认启用严格模式,遇到非标准扩展实体会抛 DxfException;加 new DxfReaderOptions { IgnoreUnknownRecords = true } 更鲁棒
  • 性能影响:小文件(DxfDocument.LoadAsync 避免 UI 线程阻塞

读 DWG 必须走 Autodesk RealDWG 或 Teigha(无免费纯托管方案)

C# 原生无法解析 DWG,因为它是二进制加密格式,Autodesk 不开放规范。所谓“免费读 DWG”方案基本是包装了 RealDWG 的 COM 组件(需安装 AutoCAD 或单独部署 RealDWG 运行时),或调用 Open Design Alliance 的 Teigha SDK(商业授权)。

容易踩的坑:AcDbDatabase.ReadDwgFileeNotImplemented 错误——不是代码写错,而是当前 RealDWG 版本不支持该 DWG 的保存版本(比如用 2024 RealDWG 读 2025 新增功能保存的 DWG)。

  • 必须匹配 DWG 版本:RealDWG 2023 支持最高到 ACAD2023(即 AC1032),不支持 AC1033
  • 部署时缺 acdb19.dllaccoreconsole.exe 会导致 DllNotFoundException,不能只拷 bin 目录,要按官方文档部署整个运行时目录
  • Linux/macOS 下完全不可行;.NET Core/.NET 6+ 项目需用 x64 构建并禁用“首选 32 位”

Document.Database.Header 里哪些字段真正可靠

不是所有头变量都默认存在,尤其从第三方软件导出的 DXF/DWG。硬取 $LUNITS$MEASUREMENT 很容易崩,得按实际有无来适配。

千面数字人
千面数字人

千面 Avatar 系列:音频转换让静图随声动起来,动作模仿让动漫复刻真人动作,操作简单,满足多元创意需求。

下载

实操建议:优先查这四个字段,它们在绝大多数人工绘制文件中稳定存在:

  • $ACADVER:DWG/DXF 版本标识(如 AC1027 对应 AutoCAD 2013)
  • $INSUNITS:插入单位(值为 4=mm,6=m,10=inch),但需 fallback 到 $MEASUREMENT(0=英制,1=公制)
  • $EXTMIN$EXTMAX:模型空间范围,类型是 Point3d,可算图纸大致尺寸
  • $DWGCODEPAGE:编码页,决定中文图层名/文字能否正确解码(ANSI_1252ANSI_932

中文路径或图层名乱码的根源和临时解法

根本原因是 DXF 默认用系统本地编码(如 Windows-1252),而 .NET StreamReader 默认用 UTF-8。RealDWG 自动处理,但 netDxf 需手动指定编码。

错误现象:document.Layers.FirstOrDefault(l => l.Name == "标注") 返回 null,但打印所有图层名看到的是 “标注”。

  • DXF 加载时传入 Encoding.GetEncoding(936)(GBK)或 Encoding.GetEncoding(932)(Shift-JIS)
  • RealDWG 中文图层名一般没问题,但若 AcDbLayerTableRecord.Name 显示方块,检查 AcDbDatabase.Textstyle 是否缺失仿宋字体定义
  • 不推荐全局改系统区域设置,临时解法是在启动 RealDWG 前调用 SetThreadUILanguage(0x0804)(中文简体)

DWG 的版本兼容性和部署约束比想象中更硬,很多“读取成功”的假象来自测试文件恰好匹配了 SDK 版本。真正上线前,务必用客户实际交付的最小/最大/最旧版本 DWG 各跑一遍。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

244

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

766

2024.03.01

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

55

2025.12.13

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

473

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

158

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

64

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

26

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 9.7万人学习

C 教程
C 教程

共75课时 | 4.8万人学习

C++教程
C++教程

共115课时 | 18.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号