# SlbViewer
**Repository Path**: comblue/SlbViewer
## Basic Information
- **Project Name**: SlbViewer
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-15
- **Last Updated**: 2026-01-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AutoCAD SLB 幻灯片库查看器
一个功能完整的 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 多选)
- ✅ 调试模式和文件诊断工具
---
## 📸 截图预览
> 💡 **提示**:添加项目截图可以让用户更直观地了解应用程序。建议添加以下截图:
> - 主界面预览
> - 幻灯片渲染效果
> - 导出对话框
> - 导入功能演示
[主界面](screenshots/main.png)
[幻灯片预览](screenshots/preview.png)
---
## 🚀 快速开始
### 系统要求
- **操作系统**:Windows
- **运行时**:.NET 8.0 Desktop Runtime
- **开发工具**(可选):Visual Studio 2022 或 .NET SDK 8.0
### 📦 安装运行时
如果您只想运行程序,请下载并安装 .NET 8.0 Desktop Runtime:
👉 [下载 .NET 8.0 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet/8.0)
### 🔨 从源代码编译
1. **克隆仓库**
```bash
git clone https://github.com/Hexon-X/SlbViewer.git
cd SlbViewer
```
2. **编译项目**
```bash
dotnet build SlbViewer.csproj
```
3. **运行程序**
```bash
dotnet run
```
或直接运行可执行文件:
```bash
bin\Debug\net8.0-windows\SlbViewer.exe
```
### 📦 发布独立应用
生成独立的可执行文件(包含运行时):
```bash
dotnet publish -c Release -r win-x64 --self-contained true
```
发布后的文件位于 `bin\Release\net8.0-windows\win-x64\publish\`
---
## 📖 使用指南
### 基本操作
#### 1️⃣ 打开文件
- **打开 SLB 库文件**:点击 "打开SLB库..." 按钮 → 选择 `.slb` 文件
- **打开单个 SLD 文件**:点击 "打开SLD文件..." 按钮 → 选择 `.sld` 文件
#### 2️⃣ 预览幻灯片
- 在左侧列表中点击幻灯片名称
- 右侧预览区域实时显示矢量图形
#### 3️⃣ 多选操作
- `Ctrl + 点击`:多选不连续的幻灯片
- `Shift + 点击`:选择连续范围
### 导出幻灯片
**快速导出**:选择幻灯片 → 点击工具栏 "导出幻灯片" 按钮
**高级导出**:右键菜单 → "导出幻灯片..." → 配置选项:
- **格式**:PNG、JPG、BMP、WMF、SLD、DXF
- **范围**:当前、所有、选中
- **尺寸**:原始、预设(16×16 ~ 512×512)、自定义
- **背景**:白色或黑色
### 导入幻灯片
1. 点击 "导入幻灯片" 按钮
2. 添加文件(支持 SLD、BMP、PNG、JPG、GIF)
3. 选择模式:
- **添加到当前库**:导入到已打开的 SLB 文件(同名自动替换)
- **创建新库**:创建新的 SLB 文件
4. 点击 "导入" 完成
> ⚠️ **注意**:图像导入会自动转换为矢量格式,最大 800×600 像素
### 重命名幻灯片
右键点击幻灯片 → "重命名..." → 输入新名称 → 确定
### 高级功能
- **调试模式**:勾选 "显示详细调试信息" 查看解析细节
- **文件诊断**:点击 "诊断文件" 查看完整结构报告
---
## 🔧 技术说明
### 技术栈
- **框架**:.NET 8.0 Windows Forms
- **语言**:C# 12.0
- **图形渲染**:GDI+ (System.Drawing)
- **文件格式**:AutoCAD SLB/SLD、DXF R12、WMF、位图格式
### SLB 文件格式(幻灯片库)
AutoCAD SLB 文件是包含多个幻灯片的库文件:
**目录结构**:
- 每个目录条目:32 字节名称 + 4 字节偏移量(小端序)
- 目录表以空名称条目结束
### SLD 文件格式(单个幻灯片)
**文件头格式**:
AutoCAD 幻灯片有两种文件头格式:
#### 新格式(31字节头) - 层指示器 ≠ 1
| 字段 | 字节数 | 说明 |
|------|--------|------|
| 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(大端)** |
#### 旧格式(34字节头) - 层指示器 = 1
| 字段 | 字节数 | 说明 |
|------|--------|------|
| 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 # 快速运行脚本
```
---
## 📝 版本历史
### v1.0.7 - **当前版本**
- 🐛 **重大修复**:支持旧版幻灯片格式(解决字节序问题)
- 🔧 修复:大端序(Big Endian)文件头解析错误
- 🔧 修复:旧格式幻灯片(34字节头)无法正常显示的问题
- ✅ 完整支持线型幻灯片(如 13W100)的渲染
- 📝 添加字节序自动检测和适配机制
- 💡 **影响**:修复了约 3% 的旧格式 SLB 文件显示混乱的问题
### v1.0.6
- ✨ 新增:点(Point)对象的渲染支持
- 🔧 优化:点的自适应大小显示(根据缩放比例调整)
- 🐛 修复:包含点对象的幻灯片无法正常显示的问题
- 🔧 修复:SLB 文件列表缺失最后两个文件的问题
- 🔧 修复:%%BLANK 特殊幻灯片的解析错误
### v1.0.5
- ✨ 新增:单个 SLD 文件快速查看功能
- ✨ 新增:工具栏导出按钮
- 🔧 优化:DXF 导出为 R12 格式,提高兼容性
- 🐛 修复:DXF 导出导致 AutoCAD 崩溃的问题
- 💄 优化:界面布局,添加版本和作者信息
### v1.0.0 - v1.0.4
- 🎉 基础功能实现
- ✅ SLB 库文件查看和预览
- ✅ 多格式导出支持
- ✅ 图像导入和转换
- ✅ 幻灯片重命名功能
---
## 🤝 贡献指南
欢迎贡献代码、报告问题或提出新功能建议!
### 如何贡献
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
### 报告问题
如果您发现 Bug 或有功能建议,请在 [Issues](https://github.com/Hexon-X/SlbViewer/issues) 页面创建新问题。
---
## 📄 许可证
**版权所有** © 2025 DevinTTX 明经通道-东升铮
本项目仅供学习和研究使用。
---
## 👨💻 作者信息
- **作者**:DevinTTX
- **单位**:明经通道-东升铮
- **联系**:明经通道论坛
---
## 🙏 致谢
感谢明经通道论坛的支持与反馈。
---
Made with ❤️ for AutoCAD Users