一个功能完整的 C# WinForms 应用程序,用于查看、管理和转换 AutoCAD SLB(Slide Library)幻灯片库文件。支持多种格式导入导出,完整实现 AutoCAD 矢量渲染和 256 色标准颜色表。
- ✅ 打开 SLB 库文件并自动解析所有幻灯片
- ✅ 直接打开单个 SLD 文件快速查看
- ✅ 显示幻灯片总数和名称列表
- ✅ 实时矢量渲染 AutoCAD 幻灯片数据
- ✅ 完整支持 AutoCAD 标准 256 色索引(ACI)
- ✅ 双栏布局:列表 + 预览区域
支持多种格式导出:
- 图像格式:PNG、JPG、BMP、WMF(矢量)
- CAD 格式:SLD、DXF(AutoCAD R12 兼容)
- 批量导出:单个、多选或全部导出
- 自定义尺寸:原始尺寸、预设尺寸或自定义尺寸
- 背景选择:白色或黑色背景
- ✅ 导入 SLD 文件或图像(BMP、PNG、JPG、GIF)
- ✅ 自动将图像转换为 AutoCAD 矢量格式
- ✅ 添加到现有库或创建新库
- ✅ 自动处理重名和非法字符
- ✅ 幻灯片重命名(防重名、验证合法性)
- ✅ 多选操作(Ctrl/Shift 多选)
- ✅ 调试模式和文件诊断工具
💡 提示:添加项目截图可以让用户更直观地了解应用程序。建议添加以下截图:
- 主界面预览
- 幻灯片渲染效果
- 导出对话框
- 导入功能演示
- 操作系统:Windows
- 运行时:.NET 8.0 Desktop Runtime
- 开发工具(可选):Visual Studio 2022 或 .NET SDK 8.0
如果您只想运行程序,请下载并安装 .NET 8.0 Desktop Runtime:
-
克隆仓库
git clone https://github.com/Hexon-X/SlbViewer.git cd SlbViewer -
编译项目
dotnet build SlbViewer.csproj
-
运行程序
dotnet run
或直接运行可执行文件:
bin\Debug\net8.0-windows\SlbViewer.exe
生成独立的可执行文件(包含运行时):
dotnet publish -c Release -r win-x64 --self-contained true发布后的文件位于 bin\Release\net8.0-windows\win-x64\publish\
- 打开 SLB 库文件:点击 "打开SLB库..." 按钮 → 选择
.slb文件 - 打开单个 SLD 文件:点击 "打开SLD文件..." 按钮 → 选择
.sld文件
- 在左侧列表中点击幻灯片名称
- 右侧预览区域实时显示矢量图形
Ctrl + 点击:多选不连续的幻灯片Shift + 点击:选择连续范围
快速导出:选择幻灯片 → 点击工具栏 "导出幻灯片" 按钮
高级导出:右键菜单 → "导出幻灯片..." → 配置选项:
- 格式:PNG、JPG、BMP、WMF、SLD、DXF
- 范围:当前、所有、选中
- 尺寸:原始、预设(16×16 ~ 512×512)、自定义
- 背景:白色或黑色
- 点击 "导入幻灯片" 按钮
- 添加文件(支持 SLD、BMP、PNG、JPG、GIF)
- 选择模式:
- 添加到当前库:导入到已打开的 SLB 文件(同名自动替换)
- 创建新库:创建新的 SLB 文件
- 点击 "导入" 完成
⚠️ 注意:图像导入会自动转换为矢量格式,最大 800×600 像素
右键点击幻灯片 → "重命名..." → 输入新名称 → 确定
- 调试模式:勾选 "显示详细调试信息" 查看解析细节
- 文件诊断:点击 "诊断文件" 查看完整结构报告
- 框架:.NET 8.0 Windows Forms
- 语言:C# 12.0
- 图形渲染:GDI+ (System.Drawing)
- 文件格式:AutoCAD SLB/SLD、DXF R12、WMF、位图格式
AutoCAD SLB 文件是包含多个幻灯片的库文件:
目录结构:
- 每个目录条目:32 字节名称 + 4 字节偏移量(小端序)
- 目录表以空名称条目结束
文件头格式:
AutoCAD 幻灯片有两种文件头格式:
| 字段 | 字节数 | 说明 |
|---|---|---|
| ID字符串 | 17 | "AutoCAD Slide\r\n\x1a\0" |
| 类型标识符 | 1 | 56(十进制) |
| 层指示器 | 1 | 2(或其他非1值) |
| 高X点 | 2 | 图形宽度(像素) |
| 高Y点 | 2 | 图形高度(像素) |
| 宽高比 | 4 | 按 10,000,000 缩放的整数 |
| 硬件填充 | 2 | 0 或 2 |
| 测试数字 | 2 | 0x1234(小端)或 0x3412(大端) |
| 字段 | 字节数 | 说明 |
|---|---|---|
| ID字符串 | 17 | "AutoCAD Slide\r\n\x1a\0" |
| 类型标识符 | 1 | 56(十进制) |
| 层指示器 | 1 | 1(标识旧格式) |
| 高X点 | 2 | 图形宽度(像素) |
| 高Y点 | 2 | 图形高度(像素) |
| 宽高比 | 8 | 双精度浮点数 |
| 硬件填充 | 2 | 0 或 2 |
| 填充字节 | 1 | 保留字节 |
💡 重要:旧格式没有测试数字字段,默认使用小端序。新格式通过测试数字自动检测字节序。
数据记录类型:
| 记录类型 | 字节数 | 说明 |
|---|---|---|
| 00-7F | 8 | 普通矢量:from-X, from-Y, to-X, to-Y |
| FB | 5 | 偏移矢量:相对偏移量(-128~+127) |
| FC | 2 | 文件结尾 |
| FD | 6 | 实体填充:多边形顶点 |
| FE | 3 | 通用端点矢量 |
| FF | 2 | 新建颜色 |
SlbViewer/
├── Program.cs # 程序入口
├── MainForm.cs # 主窗体逻辑
├── MainForm.Designer.cs # 主窗体 UI 布局
├── SlbReader.cs # SLB 文件读取器
├── SlbWriter.cs # SLB 文件写入器
├── SlideParser.cs # 幻灯片解析器(矢量数据)
├── SlideRenderer.cs # 幻灯片渲染器(GDI+ 绘制)
├── SlideExporter.cs # 多格式导出器
├── ImageToSlideConverter.cs # 图像转幻灯片转换器
├── ExportDialog.cs # 导出对话框
├── ImportDialog.cs # 导入对话框
├── AutoCADColors.cs # AutoCAD 256 色表
├── SlbDiagnostic.cs # SLB 文件诊断工具
├── AboutDialog.cs # 关于对话框
├── SlbViewer.csproj # 项目配置文件
├── README.md # 项目说明文档
└── run.bat # 快速运行脚本
- 🐛 重大修复:支持旧版幻灯片格式(解决字节序问题)
- 🔧 修复:大端序(Big Endian)文件头解析错误
- 🔧 修复:旧格式幻灯片(34字节头)无法正常显示的问题
- ✅ 完整支持线型幻灯片(如 13W100)的渲染
- 📝 添加字节序自动检测和适配机制
- 💡 影响:修复了约 3% 的旧格式 SLB 文件显示混乱的问题
- ✨ 新增:点(Point)对象的渲染支持
- 🔧 优化:点的自适应大小显示(根据缩放比例调整)
- 🐛 修复:包含点对象的幻灯片无法正常显示的问题
- 🔧 修复:SLB 文件列表缺失最后两个文件的问题
- 🔧 修复:%%BLANK 特殊幻灯片的解析错误
- ✨ 新增:单个 SLD 文件快速查看功能
- ✨ 新增:工具栏导出按钮
- 🔧 优化:DXF 导出为 R12 格式,提高兼容性
- 🐛 修复:DXF 导出导致 AutoCAD 崩溃的问题
- 💄 优化:界面布局,添加版本和作者信息
- 🎉 基础功能实现
- ✅ SLB 库文件查看和预览
- ✅ 多格式导出支持
- ✅ 图像导入和转换
- ✅ 幻灯片重命名功能
欢迎贡献代码、报告问题或提出新功能建议!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
如果您发现 Bug 或有功能建议,请在 Issues 页面创建新问题。
版权所有 © 2025 DevinTTX 明经通道-东升铮
本项目仅供学习和研究使用。
- 作者:DevinTTX
- 单位:明经通道-东升铮
- 联系:明经通道论坛
感谢明经通道论坛的支持与反馈。
Made with ❤️ for AutoCAD Users