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

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

cadminiview 是一个用 Go 语言从零手写的轻量 CAD(DXF)查看工具,提供桌面 GUI。它不依赖 CGO / C 编译器,编译后即为一个体积小巧、开箱即用的可执行文件,适合快速看图、二次开发,以及学习 DXF 解析原理。

功能

  • 解析 ASCII DXF 文件(R12 / R2000 及以后)。
  • 支持图元:LINECIRCLEARCLWPOLYLINE(含凸度 bulge)、POLYLINEPOINT3DFACESOLIDTEXTMTEXTINSERT(块引用自动展开,非等比缩放精确化)、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 仅按匿名块图形显示,不做标注语义编辑。
相关推荐
xcLeigh2 小时前
Go入门:基本数据类型全览与选择指南
android·服务器·golang·教程·go热门
聪明蛋子哟14 小时前
Stagehand v3多语言SDK:Python/Go/Rust/Java下的浏览器自动化统一方案
python·golang·rust
福大大架构师每日一题1 天前
ragflow v0.27.0 发布:Go 后端全面对齐、智能体搜索与知识编译大升级,超全更新解析
开发语言·后端·golang
JavaPub-rodert1 天前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
剩下了什么2 天前
float32 与 float64 精度陷阱:如何在 Go 中避免错误使用
开发语言·后端·golang
ttwuai2 天前
Go 后台接入 SSO 后菜单正常但接口 403,怎么排查权限链路?
开发语言·后端·golang
PC2005-cloud2 天前
Go学习笔记:基本概念与项目结构——GOPATH、Go Modules 与常用命令
笔记·学习·golang
ttwuai2 天前
Go 后台图片上传到对象存储后,预览 403/404 怎么排查?
开发语言·golang