my_ai 是一个功能强大的 SolidWorks 二次开发项目,集成了 AI 智能对话、命令行工具和插件界面,为机械工程师提供自动化设计解决方案。
- 🧠 AI 智能对话 - 通过自然语言描述需求,AI 自动识别并执行相应操作
- ⌨️ 命令行工具 - 支持直接输入命令快速执行 SolidWorks 任务
- 🖱️ 右键菜单集成 - 在 SolidWorks 中无缝集成自定义功能菜单
- 📦 丰富功能库 - 涵盖零件、装配体、工程图、CAD 文件处理等多种场景
- 🔍 模糊搜索 - 支持命令相似度匹配,快速定位所需功能
- 📊 性能监控 - 内置性能分析工具,实时追踪命令执行效率
# 启动交互式对话模式
ctool.exe
# 示例命令
> exportdxf # 导出 DXF 文件
> 导出当前零件 # AI 识别意图并调用相应命令
> search export # 搜索相关命令
> history # 查看历史对话
> clear # 清空历史记录
> mode # 切换工作模式
> llm # 进入纯对话模式
> quit/exit # 退出程序- ✅ 自动加载到 SolidWorks 菜单栏
- ✅ 提供欢迎界面和版本信息
- ✅ 集成控制台输出窗口
- ✅ 支持右键菜单快捷操作
- ✅ 命令管理器集成
exportdwg- 导出 DWG 工程图get_thickness- 获取钣金厚度unsuppress- 解除压缩特征new_drw- 新建工程图select_part_byname- 按名称选择零件
asm2bom- 生成 BOM 表asm2do- 装配体转工程图asm2step- 导出 STEP 格式get_all_part_name- 获取所有零件名称
drw2dwg- 工程图转 DWGdrw2dxf- 工程图转 DXFdrw2png- 导出 PNG 图片get_all_visable_edge- 获取可见边线
dwg2dxf- DWG 转 DXFdxf2dwg- DXF 转 DWGmerge_dwg- 合并 DWG 文件draw_divider- 绘制分隔线
topology_labeler- 拓扑结构标注similarity_calculator- 模型相似度计算face_graph_builder- 面图构建WL 图核算法- Weisfeiler-Lehman 图核算法
- SolidWorks - 已安装并正确配置
- .NET SDK - .NET 9.0 或更高版本
- Visual Studio - 用于编译项目(可选)
# 进入项目目录
cd e:\cqh\code\my_c#
# 使用 Visual Studio 打开 my_ai.sln
# 或使用命令行编译
dotnet build -c Release- 右键点击
plugin\register_addin.bat - 选择"以管理员身份运行"
- 等待注册成功的提示
- 按照提示在 SolidWorks 中启用插件
# 以管理员身份打开命令行,进入项目目录
cd e:\cqh\code\my_c#
# 执行注册命令
%windir%\Microsoft.NET\Framework64\v4.0.30319\regasm.exe "plugin\bin\Release\net48\plugin.dll" /codebase /tlb- 打开 SolidWorks
- 点击顶部菜单栏的 "工具" (Tools)
- 选择 "插件" (Add-Ins)
- 在弹出的对话框中找到 "SolidWorksAddinStudy"
- 勾选 该插件名称旁边的复选框
- ✓ 勾选当前会话:仅本次有效
- ✓ 勾选"启动时加载":每次启动自动加载
- 点击 "确定"
> exportdxf
> get_thickness
> asm2bom> 导出当前零件的 DXF 文件
> 获取这个钣金的厚度
> 生成装配体的材料明细表> search export # 搜索包含"export"的命令
> find dwg # 查找与 DWG 相关的功能> help # 显示所有可用命令
> exportdxf -h # 查看特定命令的帮助- 菜单栏 - SolidWorks 顶部菜单会出现自定义工具栏
- 右键菜单 - 在图形区域右键可看到快捷菜单
- 控制台 - 按提示打开控制台查看输出信息
- 显示控制台 - 点击插件菜单中的"显示控制台"
- 查看版本 - 启动时自动显示欢迎界面和版本信息
- 清空缓存 - 欢迎界面倒计时结束后可清空工程文件
my_ai/
├── ctools/ # 命令行工具主程序
│ ├── main.cs # 程序入口和命令调度
│ ├── llm_service.cs # AI 大模型服务
│ ├── llm_loop_caller.cs # AI 对话循环控制器
│ ├── command_executor.cs # 命令执行器
│ ├── CommandAttribute.cs # 命令特性定义
│ └── connect.cs # SolidWorks 连接模块
│
├── plugin/ # SolidWorks 插件
│ ├── addin.cs # 插件主程序
│ ├── ConsoleOutputForm.cs # 控制台输出窗口
│ ├── body_context_menu.cs # 实体右键菜单
│ ├── function_adder.cs # 功能添加器
│ └── welcome.png # 欢迎界面图片
│
├── share/ # 共享功能库
│ ├── part/ # 零件相关功能
│ │ ├── exportdwg.cs # 导出 DWG
│ │ ├── get_thickness.cs # 获取厚度
│ │ └── ...
│ ├── asm/ # 装配体相关功能
│ │ ├── asm2bom.cs # 生成 BOM
│ │ ├── asm2do.cs # 转工程图
│ │ └── ...
│ ├── drw/ # 工程图相关功能
│ │ ├── drw2dwg.cs # 转 DWG
│ │ ├── drw2dxf.cs # 转 DXF
│ │ └── ...
│ ├── cad/ # CAD 文件处理
│ │ ├── dwg2dxf.cs # DWG 转 DXF
│ │ ├── merge_dwg.cs # 合并 DWG
│ │ └── ...
│ ├── train/ # AI 训练和算法
│ │ ├── topology_labeler.cs # 拓扑标注
│ │ ├── similarity_calculator.cs
│ │ └── wl_graph_kernel.cs # WL 图核
│ └── nomal/ # 通用工具
│ ├── comhelp.cs # COM 帮助类
│ └── get_folder_file.cs # 文件夹遍历
│
├── reference/ # 引用 DLL 文件
│ ├── Autodesk.AutoCAD.Interop.*.dll
│ ├── SolidWorks.Interop.*.dll
│ └── solidworkstools.dll
│
├── design_notes/ # 设计笔记
│ ├── draw_knowledge.txt # 制图知识
│ ├── works_knowledge.txt # 工作知识
│ └── *.png # 示意图
│
├── my_ai.sln # Visual Studio 解决方案
└── README.md # 本说明文档
- CommandAttribute - 命令特性标记,定义命令名称、描述、参数
- CommandRegistry - 全局命令注册中心,管理所有命令
- CommandExecutor - 命令执行器,解析和执行命令
- LlmLoopCaller - AI 对话循环控制器,集成命令解析
- 服务提供商 - 阿里云通义千问 (DashScope)
- 支持模型 - qwen3.5-flash(默认)、VLM 图像分析
- 功能特性 -
- 动态构建 System Prompt
- 长短期记忆管理
- 工作知识库集成
- 命令描述动态生成
- 接口实现 - ISwAddin 标准接口
- COM 注册 - Guid:
D9C5D3A4-3B9F-4ACF-BC19-6D77D39C47CD - 命令管理器 - ICommandManager 集成
- 文档类型 - 零件、装配体、工程图全支持
解决方案:
- ✓ 确保以管理员身份运行注册脚本
- ✓ 检查 DLL 文件是否存在于
plugin\bin\Release\net48\目录 - ✓ 确认 SolidWorks 版本兼容性
解决方案:
- ✓ 重新运行
register_addin.bat - ✓ 重启 SolidWorks
- ✓ 检查注册表项:
HKEY_CURRENT_USER\Software\SolidWorks\AddInsStartup
解决方案:
- ✓ 先启动 SolidWorks 应用程序
- ✓ 确保有激活的文档
- ✓ 以管理员身份运行 ctool.exe
解决方案:
- ✓ 查看控制台输出信息
- ✓ 检查 SolidWorks 是否弹出错误提示
- ✓ 确认当前文档类型是否符合命令要求
解决方案:
- ✓ 使用更明确的命令描述
- ✓ 使用
search命令查看可用命令列表 - ✓ 切换到直接命令模式
- 右键点击
plugin\unregister_addin.bat - 选择"以管理员身份运行"
# 以管理员身份打开命令行
%windir%\Microsoft.NET\Framework64\v4.0.30319\regasm.exe "plugin\bin\Release\net48\plugin.dll" /unregister- 打开 SolidWorks
- 点击 "工具" > "插件"
- 取消勾选 "SolidWorksAddinStudy"
- 点击 "确定"
- ✅ 使用小写字母和下划线:
export_dwg,get_thickness - ✅ 动词 + 名词结构:
export*,get*,create_* - ❌ 避免使用大写:
ExportDXF(错误) - ❌ 避免使用中文:
导出 dxf(错误)
[Command("exportdxf")]
[Description("导出当前零件的 DXF 文件")]
[Parameters("无")]
[Group("part")]
public static void ExportDXF(string[] args)
{
// 命令实现
}- 无参数命令:直接使用命令名(如
rename) - 有参数命令:
命令名 [参数值]格式 - 禁止使用:过时的
do_【命令名】或do_【命令名】<参数值>格式
点击链接加入群聊【solidworks 神经网络自动标注小白群】:
https://qm.qq.com/q/n5HGmImlCC
如遇到问题,请通过以下方式反馈:
- GitHub Issues(如有)
- QQ 群内提问
- 邮件联系开发者
本项目仅供学习和研究使用。
感谢以下开源项目和工具:
- SolidWorks API
- 阿里云通义千问
- Newtonsoft.Json
- AutoCAD Interop
Made with ❤️ by my_ai Team
最后更新:2026 年 3 月 27 日