通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI部署指南:SolidWorks用户宏脚本编写辅助

对于SolidWorks工程师来说,每天重复性的操作——比如批量导出图纸、更新零件属性、生成材料清单——不仅枯燥,还极大地消耗了宝贵的设计时间。手动编写VBA宏脚本来自动化这些流程,是提升效率的关键,但VBA的学习曲线和调试过程常常让人望而却步。

现在,情况有所不同了。通过部署一个轻量级的本地AI模型,你可以获得一个随时待命的“代码助手”。它能理解你用自然语言描述的需求,比如“帮我写一个宏,遍历装配体中的所有零件并导出为STEP格式”,然后为你生成可用的VBA代码框架和关键逻辑。这就像身边多了一位经验丰富的自动化专家,让复杂的脚本编写变得像日常对话一样简单。

本文将手把手带你部署通义千问1.5-1.8B-Chat模型的GPTQ-Int4量化版本,并搭建一个简洁的WebUI界面。部署完成后,你将能直接在这个网页聊天框中,用对话的方式获取SolidWorks宏脚本编写支持,从而将更多精力专注于创新设计本身。

1. 为什么选择本地部署通义千问模型?

在考虑为SolidWorks宏编写引入AI辅助时,你可能会想到一些在线的代码生成工具。但本地部署方案有几个难以替代的优势,尤其适合工程环境。

首先是数据安全与隐私。你的设计需求、零件名称、项目结构等都可能包含敏感信息。所有与模型的对话、生成的代码都在你自己的服务器或电脑上处理,无需将任何业务数据上传到第三方云端,从根本上杜绝了信息泄露的风险。

其次是稳定与可控。本地部署意味着服务不受外部网络波动或API调用限制的影响。你可以7x24小时不间断地使用,在赶项目进度时,这一点尤为重要。同时,你可以完全控制模型的运行环境,确保其与你的SolidWorks版本、操作系统保持兼容。

我们选择的通义千问1.5-1.8B-Chat-GPTQ-Int4版本,是专门为资源受限环境优化的。GPTQ是一种高效的模型量化技术,Int4代表它将模型权重压缩到4位整数存储。带来的直接好处是,这个原本需要数GB显存的模型,现在只需要大约1.2GB的显存就能流畅运行。这意味着你甚至不需要昂贵的专业显卡,一张消费级的显卡(如RTX 3060 12GB)就能轻松驾驭,大大降低了使用门槛。

最后是场景的深度契合。虽然这是一个通用对话模型,但通过精心设计的提示词,我们可以引导它专注于理解和生成SolidWorks VBA宏代码。它学习了大量的编程语言和API文档模式,能够将你的自然语言指令,转化为符合SolidWorks对象模型(如SldWorksModelDoc2Feature)的正确语法。

2. 环境准备与一键部署

部署过程力求简洁,我们主要使用Ollama工具,它能以容器化的方式管理模型,省去了复杂的依赖配置。

2.1 基础系统要求

在开始之前,请确保你的计算机满足以下最低要求:

  • 操作系统:Windows 10/11,或Linux发行版(如Ubuntu 20.04+)。本文以Windows为例,Linux步骤类似。
  • 显卡:NVIDIA GPU,显存不小于4GB(推荐6GB以上以获得更好体验)。支持RTX 20系列及以上。
  • 内存:系统内存(RAM)建议16GB或以上。
  • 磁盘空间:至少准备10GB的可用空间,用于存放模型文件和运行环境。

2.2 安装必备软件

我们需要安装两个核心工具:

  1. 安装NVIDIA显卡驱动和CUDA:这是GPU运行的基础。请访问NVIDIA官网,下载并安装与你的显卡型号匹配的最新版驱动。CUDA工具包通常包含在驱动中,或可单独安装(版本11.7或以上均可)。

  2. 安装Ollama:这是管理和运行模型的核心。

    • 访问Ollama官网,下载对应你操作系统的安装包。
    • 运行安装程序,按照提示完成安装。安装后,Ollama服务会自动在后台运行。

2.3 拉取并运行模型

打开你的命令行终端(Windows上可以是PowerShell或CMD)。

第一步,拉取模型。 Ollama官方库可能没有预置该特定量化版本,我们需要从能够访问的模型仓库拉取。执行以下命令:

ollama run qwen2.5:1.8b-instruct-q4_K_M

请注意:模型名称 qwen2.5:1.8b-instruct-q4_K_M 是一个示例。你需要根据你能实际获取到的、正确的通义千问1.5/1.8B的GPTQ-Int4格式的模型名称进行替换。模型社区(如Hugging Face)常有用户分享转换好的模型,你可以搜索类似 Qwen1.5-1.8B-Chat-GPTQ-Int4 的标签,并找到对应的Ollama Modelfile或GGUF文件进行转换和加载。

首次运行会从网络下载模型文件,耗时取决于你的网速。下载完成后,会自动进入一个简单的对话界面,你可以输入 Hi 测试一下,按 Ctrl+D 退出。

第二步,部署WebUI界面(可选但推荐)。 命令行对话不够友好。我们可以使用Open WebUI(原名Ollama WebUI)这个开源项目来搭建图形界面。

使用Docker部署是最快的方式。确保你已安装Docker Desktop并启动。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

这条命令做了几件事:在后台 (-d) 运行一个容器,将容器的8080端口映射到你本机的3000端口 (-p 3000:8080),创建了一个数据卷用于持久化存储,并设置了容器自动重启。

等待镜像拉取和容器启动完成后,打开你的浏览器,访问 http://localhost:3000

2.4 配置WebUI连接Ollama

首次访问Open WebUI,你需要创建一个管理员账户。 注册登录后,进入设置(Settings),找到“连接Ollama”的相关选项。 在“Ollama基础URL”中,填入 http://host.docker.internal:11434。这个地址让容器内的WebUI能访问到你主机上运行的Ollama服务。 保存设置后,回到主界面,你应该能在模型选择下拉菜单中,看到之前通过Ollama拉取的 qwen2.5:1.8b-instruct-q4_K_M(或你自定义的名称)模型。选择它,就可以开始使用了。

3. 实战:用AI辅助编写SolidWorks宏脚本

现在,我们进入最核心的环节。假设你是一个需要处理大量标准件出图的工程师,我们将通过一个完整案例,展示如何与AI协作。

3.1 场景定义:批量导出装配体中的所有零件为STEP文件

这是一个非常普遍且耗时的需求。手动操作需要在每个零件文件中点击“另存为”,选择格式,容易遗漏且效率极低。

你的提示词(输入给AI): “我需要一个SolidWorks VBA宏脚本。功能是:遍历当前打开的装配体文档中的每一个零件(不包括子装配体),将每个零件单独保存为一个STEP(.step)文件。保存路径我希望弹出一个文件夹选择对话框让用户指定,所有零件都保存在那个文件夹里。请给出完整的VBA代码,并加上关键步骤的注释。”

3.2 AI生成的代码框架与分析

模型会根据你的描述,生成类似下面的代码。请注意,AI生成的代码是很好的起点,但可能无法直接完美运行,需要你根据实际SolidWorks API进行微调。

Option Explicit

Sub ExportAllPartsToSTEP()
    ' 声明SolidWorks应用程序对象
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swAssy As SldWorks.AssemblyDoc
    Dim swComp As SldWorks.Component2
    Dim vComponents As Variant
    Dim i As Long
    
    Dim saveFolder As String
    Dim fd As FileDialog
    
    ' 获取当前SolidWorks应用程序实例
    Set swApp = Application.SldWorks
    ' 获取当前活动文档(假设是一个装配体)
    Set swModel = swApp.ActiveDoc
    
    If swModel Is Nothing Then
        MsgBox "请先打开一个装配体文档!", vbExclamation
        Exit Sub
    End If
    
    If swModel.GetType <> swDocumentTypes_e.swDocASSEMBLY Then
        MsgBox "当前文档不是装配体!", vbExclamation
        Exit Sub
    End If
    
    Set swAssy = swModel
    
    ' 让用户选择保存STEP文件的文件夹
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    fd.Title = "请选择保存STEP文件的文件夹"
    If fd.Show <> -1 Then ' 用户取消了选择
        Exit Sub
    End If
    saveFolder = fd.SelectedItems(1)
    If Right(saveFolder, 1) <> "\" Then saveFolder = saveFolder & "\"
    
    ' 获取装配体中的所有零部件
    vComponents = swAssy.GetComponents(False) ' False表示获取所有层级的组件
    
    If Not IsEmpty(vComponents) Then
        For i = 0 To UBound(vComponents)
            Set swComp = vComponents(i)
            
            ' 检查组件是否为零件(排除装配体、草图等)
            If swComp.GetType = swComponentTypes_e.swDocPART Then
                Dim partModel As SldWorks.ModelDoc2
                Dim partPath As String
                Dim stepFilePath As String
                
                ' 获取零件文档对象
                Set partModel = swComp.GetModelDoc2
                If Not partModel Is Nothing Then
                    partPath = partModel.GetPathName
                    If partPath <> "" Then
                        ' 构建STEP文件保存路径:用户选择文件夹 + 零件名 + .step
                        stepFilePath = saveFolder & partModel.GetTitle & ".step"
                        
                        ' 保存为STEP格式
                        ' 注意:这里使用了SaveAs3方法,参数需要根据你的SolidWorks版本调整
                        ' 返回值是长整型,通常成功返回0
                        Dim saveStatus As Long
                        Dim saveOptions As Long
                        saveOptions = 0 ' 可以设置保存选项,0通常为默认
                        
                        ' 关键:设置保存版本和格式参数。swSaveAsCurrentVersion表示当前版本,swSaveAsOptions_e.swSaveAsOptions_Silent可静默保存。
                        saveStatus = partModel.SaveAs3(stepFilePath, swSaveAsCurrentVersion, swSaveAsOptions_Silent)
                        
                        If saveStatus = 0 Then
                            Debug.Print "已保存: " & stepFilePath
                        Else
                            Debug.Print "保存失败: " & partModel.GetTitle
                        End If
                    End If
                End If
            End If
        Next i
    End If
    
    MsgBox "STEP文件导出完成!", vbInformation
End Sub

3.3 关键逻辑解释与调试要点

AI生成的代码已经搭建了完整的逻辑骨架。作为SolidWorks用户,你需要理解并可能调整以下几个关键点:

  1. 对象模型遍历:代码通过 swAssy.GetComponents(False) 获取所有组件,并通过 swComp.GetType 过滤出零件。这是SolidWorks API的标准操作。
  2. 文件保存路径:代码使用了 FileDialog 让用户交互式选择文件夹,这是一个友好的设计。
  3. 最关键的SaveAs3方法:这是最容易出错的点。AI生成的 swSaveAsCurrentVersionswSaveAsOptions_Silent 是枚举常量,你需要确保它们在你的VBA工程引用中正确存在。更稳妥的做法是直接使用它们的数值,或者提前在代码中定义这些常量。
    • 如何查找正确的参数?你可以在SolidWorks中按 Alt+F11 进入VBA编辑器,打开“对象浏览器”(F2),搜索 SaveAs3 方法,查看其详细的参数说明和枚举值。例如,STEP格式的保存格式代码可能是 swSaveAsVersion_e.swSaveAsCurrentVersionswSaveAsOptions_e.swSaveAsOptions_Silent,有时直接使用 0 作为版本参数代表当前版本。
  4. 错误处理:当前代码只有基本的成功/失败打印。在实际使用中,你应该增强错误处理,例如使用 On Error Resume NextErr 对象来捕获并提示具体错误信息,避免宏意外停止。
  5. 性能考虑:如果装配体零件数量巨大,频繁切换活动文档和保存操作可能较慢。你可以考虑在保存前使用 swApp.DocumentVisible(False, partModel) 隐藏非活动文档,保存后再显示,以提升速度。

如何与AI迭代调试:当你将代码粘贴到SolidWorks VBA编辑器运行遇到错误时,可以将错误信息(如“编译错误:未定义类型...”或运行时错误号)反馈给AI。例如,你可以问:“我在运行宏时提示‘用户定义类型未定义:SldWorks’,该怎么办?” AI会指导你添加对 SolidWorks xxxx Type Library 的引用。

4. 扩展应用场景与提示词技巧

掌握了基本方法后,你可以将AI助手应用到更多自动化场景中。

4.1 其他实用宏脚本场景

  • 批量更新自定义属性:为成百上千个零件写入或修改“材料”、“供应商”、“版本号”等属性。
    • 提示词示例:“写一个宏,读取Excel表格(第一列是零件文件名,后续列是属性名和值),批量打开这些SolidWorks零件文件并更新对应的自定义属性。”
  • 自动生成工程图三视图并导出PDF:为一系列零件自动创建标准三视图图纸并打印或导出。
    • 提示词示例:“创建一个宏,遍历指定文件夹中的所有.sldprt零件文件,为每个零件自动新建一个工程图,添加标准的三视图(前视、上视、右视),并自动导出为PDF到另一个文件夹。”
  • 检查干涉与间隙分析:在大型装配体中自动运行干涉检查,并将结果输出到报告文件。
    • 提示词示例:“编写宏,对当前顶级装配体进行干涉检查,忽略小于0.1mm的干涉,然后将所有检测到的干涉详细信息(组件1、组件2、干涉体积)写入到一个CSV文件中。”

4.2 编写高效提示词的技巧

要让AI生成更精准的代码,你的描述越清晰越好:

  1. 明确输入与输出:说清楚操作对象是什么(当前文档?指定文件夹?),最终想要什么结果(生成文件?修改属性?弹出报告?)。
  2. 指定关键API或方法:如果你知道特定的SolidWorks API函数名,可以直接告诉AI,它能更好地围绕此函数构建代码。例如,“请使用 ModelDoc2::GetCustomInfoSetCustomInfo 方法”。
  3. 描述异常处理需求:比如“如果零件文件已打开,则跳过它”,或者“如果保存失败,记录下文件名并继续下一个”。
  4. 分步请求:对于复杂任务,可以先让AI生成主体框架,再针对某个具体函数(如遍历装配体、保存特定格式)请求更详细的代码片段。

5. 总结与后续建议

通过本指南,你已经成功在本地部署了一个专属于你的SolidWorks宏脚本AI助手。从环境准备到WebUI搭建,再到实际的代码生成案例,整个过程旨在降低技术门槛,让AI能力直接服务于你的具体工程问题。

实际使用下来,这个方案的性价比很高。模型响应速度快,在本地环境下几乎没有延迟,对于生成几十行到上百行的VBA脚本框架来说完全够用。它虽然不能替代你深入学习SolidWorks API,但极大地缓解了“从零开始”的焦虑,将你的角色从“码农”转变为“代码审查者和调试者”,专注于逻辑正确性和效率优化。

刚开始使用时,建议从简单的、单一功能的宏开始尝试,比如批量重命名特征或者导出BOM表。熟悉了与AI对话生成代码、在SolidWorks VBA环境中调试的流程后,再逐步挑战更复杂的自动化任务。记得,AI生成的代码始终是一个强大的起点和参考,最终能否在生产环境中稳定运行,离不开你作为工程师的审核与调试。

随着你对提示词掌握的越来越熟练,你会发现这个工具能帮你探索许多以前因为怕麻烦而放弃的自动化可能性,真正把重复性工作交给程序,把创造力留给自己。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐