CAD Mini Viewer ------ 一个纯 Go 编写的轻量 DXF 查看器
cadminiview 是一个用 Go 语言从零手写的轻量 CAD(DXF)查看工具,提供桌面 GUI。它不依赖 CGO / C 编译器,编译后即为一个体积小巧、开箱即用的可执行文件,适合快速看图、二次开发,以及学习 DXF 解析原理。
功能
- 解析 ASCII DXF 文件(R12 / R2000 及以后)。
- 支持图元:
LINE、CIRCLE、ARC、LWPOLYLINE(含凸度 bulge)、POLYLINE、POINT、3DFACE、SOLID、TEXT、MTEXT、INSERT(块引用自动展开,非等比缩放精确化)、IMAGE(光栅底图,2D 下显示)、HATCH(实体填充 / 边界描边)、DIMENSION(按匿名块显示)。 - 图层颜色(随层 BYLAYER)与线型(虚线等)渲染。
- 二维 / 三维自动识别;三维以线框方式展示并可旋转视角。
- 菜单栏:
文件菜单提供「打开文件...」与「退出」,可选择并加载新的 DXF 文件。 - 鼠标交互:左键拖动平移、右键拖动旋转(3D)、滚轮缩放、
F适配视图、R重置视角、Esc退出。 - 深色背景 + 网格 + ACI 颜色映射。
运行
powershell
go build -o cadminiview.exe .
.\cadminiview.exe examples\sample.dxf
也可以直接 go run . examples\sample.dxf。
交互说明
| 操作 | 效果 |
|---|---|
| 左键拖动 | 平移 |
| 右键拖动 | 旋转视角(3D 模式) |
| 滚轮 | 缩放 |
F |
适配视图(适合全部图形) |
R |
重置视角并适配 |
Esc |
退出 |
技术选型
- 界面:
gioui.org(纯 Go,无需 CGO / C 编译器)。 - 渲染:2D 图元直接用 Gio 路径描边;3D 用软件投影做线框。
目录结构
cadminiview/
├── main.go # 入口
├── internal/
│ ├── dxf/ # DXF 数据模型、解析器、图元细分
│ ├── viewer/ # 视图状态与坐标投影
│ └── app/ # Gio 桌面窗口与事件处理
└── examples/sample.dxf # 示例文件
与同类查看工具对比
市面上常见的 DXF/DWG 查看方案大致有三类:开源 CAD 软件(LibreCAD、QCAD)、厂商官方查看器(Autodesk DWG TrueView)、在线云端查看器(ShareCAD 等)。本项目与之定位不同,主打「轻量 + 离线 + 纯 Go + 易二次开发」。
| 维度 | cadminiview | LibreCAD / QCAD | DWG TrueView | 在线查看器(ShareCAD 等) |
|---|---|---|---|---|
| 开源 | ✅ 开源(Go) | ✅ 开源(C++/Qt) | ❌ 闭源 | 多数闭源 |
| 体积与依赖 | 极小,纯 Go 单文件,无 CGO | 较大,依赖 Qt 运行库 | 安装包数百 MB | 无需安装,需浏览器 |
| 支持格式 | ASCII DXF(R12 / R2000+) | DXF(可查看、编辑) | DXF / DWG | DXF / DWG(云端解析) |
| 三维显示 | ✅ 线框 + 视角旋转 | 以 2D 为主 | ✅ 支持 | 视产品而定 |
| 编辑能力 | ❌ 仅查看 | ✅ 完整编辑 | ❌ 仅查看 | ❌ 仅查看 |
| 离线与隐私 | ✅ 本地离线 | ✅ 本地离线 | ✅ 本地离线 | ❌ 需上传云端 |
| 二次开发 | 代码精简、易读易改 | 工程庞大、门槛高 | 闭源不可改 | 不可改 |
简单说:如果需要完整的绘图编辑能力,选 LibreCAD / QCAD;如果只想要一个打开快、体积小、还能看源码改着玩的 DXF 查看器,那 cadminiview 更合适。
下载与项目地址
- CSDN 下载地址:https://download.csdn.net/download/itopit/93315347
- GitCode 项目地址:https://gitcode.com/itopit/cadminiview
已知限制(mini 版)
- 仅支持 ASCII 编码的 DXF;二进制 DXF 暂不支持。
- 块引用的非等比缩放对文本仅做近似处理(不还原斜切)。
- HATCH 仅支持实体填充与边界描边,暂不支持复杂图案填充(如 ANSI31 斜线)。
- DIMENSION 仅按匿名块图形显示,不做标注语义编辑。