CAD Mini Viewer —— 一个纯 Go 编写的轻量 DXF 查看器

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 更合适。

下载与项目地址

已知限制(mini 版)

  • 仅支持 ASCII 编码的 DXF;二进制 DXF 暂不支持。
  • 块引用的非等比缩放对文本仅做近似处理(不还原斜切)。
  • HATCH 仅支持实体填充与边界描边,暂不支持复杂图案填充(如 ANSI31 斜线)。
  • DIMENSION 仅按匿名块图形显示,不做标注语义编辑。
相关推荐
JWASX9 小时前
Java 转 go 学习 - 类型转换
学习·golang
小小龙学IT11 小时前
Go 语言 encoding/json 标准库深度解析:从 Tag 反射到流式处理
golang·json
JWASX17 小时前
Java 转 go 学习 - 函数(1)
学习·golang
看浪的路人18 小时前
第7讲:实时告警与自动化响应
开发语言·后端·golang
小小龙学IT19 小时前
Go 语言 database/sql 标准库深度解析:从连接池到驱动抽象
数据库·sql·golang
wdfk_prog19 小时前
Wi-Fi Direct 源码分析(09):从 P2P_CONNECT 到 GO Negotiation 完成
运维·服务器·ubuntu·golang·asp.net·p2p·wifi-direct
JWASX20 小时前
Java 转 go 学习 - map
学习·golang
笨蛋©1 天前
[实战] 2026年工程图纸扫描转DXF的精度控制与数字化质量管理流程
ai·数字化·cad·质量管理·制造业
福大大架构师每日一题1 天前
ollama v0.35.0发布:决策模型正式上线,接口直接返回选择、概率与评分
golang
茉莉玫瑰花茶1 天前
GO [ 泛型 ]
golang