# RevitForge **Repository Path**: YY.YY/revit-forge ## Basic Information - **Project Name**: RevitForge - **Description**: revit插件脚本生成器 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2025-05-08 - **Last Updated**: 2025-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RevitForge 项目架构说明 ## 1. 项目概述 RevitForge 是一个基于 Revit 2020 API 的插件项目,采用现代化的 .NET 开发方式,支持动态加载命令的特性。项目使用 SDK 风格的项目文件格式,并集成了 MVVM 架构和 Roslyn 编译器技术。本项目旨在提供一个灵活、可扩展的 Revit 插件开发框架,并集成了 DeepSeek AI 技术,实现智能代码生成功能。`下载代码后重新生成解决方案,点击调试启动` ## 2. 技术栈 - .NET Framework 4.8 - WPF (Windows Presentation Foundation) - Revit 2020 API - CommunityToolkit.Mvvm (MVVM 框架) - Roslyn (Microsoft.CodeAnalysis.CSharp) - AvalonEdit (代码编辑器) - DeepSeek AI API - Newtonsoft.Json ## 3. 项目结构 ``` RevitForge/ ├── Commands/ # Revit 命令实现 │ ├── RefreshCommand.cs # 刷新动态命令的实现 │ └── ScriptBotCommand.cs # AI脚本生成命令 ├── Services/ # 核心服务实现 │ ├── ApiKeySetService.cs # API密钥管理服务 │ ├── DeepSeekService.cs # DeepSeek AI服务 │ ├── DynamicCommandLoader.cs # 动态命令加载服务 │ ├── ScriptBotDockablePane.cs # 脚本生成面板 │ └── ScriptExecuteHandler.cs # 脚本执行处理器 ├── ViewModels/ # MVVM 视图模型 │ ├── ApiKeySetViewModel.cs # API密钥设置视图模型 │ └── ScriptBotViewModel.cs # 脚本生成视图模型 ├── Views/ # WPF 视图 │ ├── ApiKeySetView.xaml # API密钥设置视图 │ └── ScriptBotView.xaml # 脚本生成视图 ├── Resources/ # 资源文件(如图标、样式) ├── Source/ # 动态命令源代码目录 ├── App.cs # 插件入口点 └── RevitForge.addin # Revit 插件配置文件 ``` ## 4. 核心组件说明 ### 4.1 App.cs - 实现 `IExternalApplication` 接口 - 负责插件的启动和关闭生命周期管理 - 创建和管理 Revit 功能区(Ribbon)和工具面板 - 初始化动态命令的 Source 目录 - 管理插件资源和服务的初始化 - 注册"刷新"和"生成"两个核心命令按钮 ### 4.2 Commands #### RefreshCommand - 实现 `IExternalCommand` 接口 - 提供动态命令的刷新功能 - 负责与 DynamicCommandLoader 服务的交互 - 处理命令执行过程中的异常情况 #### ScriptBotCommand - 实现 `IExternalCommand` 接口 - 提供AI脚本生成功能 - 创建和显示可停靠的脚本生成面板 - 初始化脚本执行处理器和外部事件 ### 4.3 Services #### DynamicCommandLoader - 核心服务类,负责动态命令的加载和管理 - 主要功能: - 动态命令的编译和加载 - 工具面板的清理和重建 - 命令按钮的创建和管理 - 使用 Roslyn 进行实时代码编译 - 错误处理和日志记录 - 支持自定义按钮名称和描述 #### DeepSeekService - 提供与DeepSeek AI API的交互功能 - 支持聊天和代码生成功能 - 管理消息历史记录 - 处理API密钥验证和更新 - 提供专门针对Revit插件开发的代码生成提示 #### ScriptExecuteHandler - 实现 `IExternalEventHandler` 接口 - 负责在Revit环境中执行动态生成的代码 - 使用Roslyn进行内存中编译 - 动态加载和执行编译后的命令 - 提供错误处理和反馈机制 #### ScriptBotDockablePane - 管理可停靠的脚本生成面板 - 提供面板注册和显示控制 - 集成脚本执行事件处理 #### ApiKeySetService - 管理DeepSeek API密钥 - 提供密钥存储和验证功能 ## 5. 开发工作流程 ### 5.1 环境配置 1. 安装必要软件: - Visual Studio 2022 - Revit 2020 - .NET Framework 4.8 SDK 2. 配置DeepSeek API: - 注册DeepSeek账号并获取API密钥 - 在插件中配置API密钥 ### 5.2 开发流程 1. 克隆项目代码 2. 还原 NuGet 包 3. 配置项目属性和编译选项 4. 编写或修改功能代码 5. 编译和测试 6. 提交代码和创建合并请求 ### 5.3 插件部署流程 1. 编译项目 2. 自动部署到 Revit 插件目录(C:\ProgramData\Autodesk\Revit\Addins\2020) 3. 启动 Revit 测试功能 ## 6. 项目特点 1. **动态加载机制** - 支持在 Revit 运行时动态加载新命令 - 无需重启即可更新功能 - 支持从文本文件编译和加载命令 2. **AI代码生成** - 集成DeepSeek AI技术 - 根据自然语言描述生成Revit命令代码 - 支持实时编译和执行生成的代码 - 提供专业的Revit开发提示和模板 3. **现代化架构** - 采用 MVVM 设计模式 - 清晰的职责分离 - 高度可维护和可测试 - 使用可停靠面板提供友好的用户界面 4. **开发体验** - 实时编译功能 - 完整的错误处理 - 详细的日志记录 - 集成代码编辑器 5. **可扩展性** - 插件化架构 - 支持自定义命令开发 - 灵活的配置系统 - 支持动态添加新功能 ## 7. 使用指南 ### 7.1 基本使用 1. 启动Revit 2020 2. 在功能区找到"RevitForge"选项卡 3. 使用"刷新"按钮加载动态命令 4. 使用"生成"按钮打开AI代码生成面板 ### 7.2 AI代码生成 1. 点击"生成"按钮打开ScriptBot面板 2. 首次使用时配置DeepSeek API密钥 3. 在输入框中描述您需要的Revit功能 4. 点击"生成"按钮,AI将生成相应的代码 5. 检查和编辑生成的代码(如需要) 6. 点击"执行"按钮运行生成的代码 7. 查看执行结果和输出信息 ### 7.3 动态命令开发 1. 在Source目录下创建.txt文件 2. 编写实现IExternalCommand接口的C#代码 3. 添加ButtonName和Description静态属性(可选) 4. 保存文件并点击"刷新"按钮 5. 新命令将自动添加到"自定义"面板中