ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

AI驱动SolidWorks自动化建模与2D工程图生成实战

AI驱动SolidWorks自动化建模与2D工程图生成实战 1. 这套工作流到底在解决什么问题先说结论这套东西的核心不是让AI替你画图而是让AI替你操作SolidWorks。你依然用SolidWorks只不过以前是你手动点菜单、拉草图、标尺寸现在变成你用自然语言告诉AI“帮我建一个模数为2、齿数20的直齿轮”AI通过MCP协议调用SolidWorks的API把这一系列操作自动完成最后连2D工程图一起出好。我最初接触这个方向是在去年底当时看到MCP这个概念——Model Context Protocol模型上下文协议说白了就是给大语言模型装了一双能操作外部软件的手。以前AI只能跟你聊天、写代码它碰不到你电脑上的软件。MCP出现之后AI可以通过标准协议去调用本地的工具和服务SolidWorks就是其中一个被接入的对象。这套方案适合什么人我梳理了一下机械设计工程师每天跟SolidWorks打交道重复性建模工作多想提效但不想学复杂的二次开发产品结构设计师需要快速出方案草图、验证外形用AI加速迭代自动化方向的开发者想把AI Agent和CAD工具链打通做更上层的自动化流程在校学生或刚入行的新人想了解AICAD这个交叉方向到底怎么落地不适合什么人如果你连SolidWorks的基本操作都不熟草图约束、特征建模这些概念还没搞明白那这套东西对你来说就是空中楼阁。AI能帮你操作软件但它没法替你理解“为什么这个特征要这样建”。基础功还是要有的。整个链路大致是这样的你在一端输入自然语言指令AI模型理解你的意图通过MCP协议把意图翻译成SolidWorks能执行的API调用SolidWorks执行建模操作完成后AI再把结果反馈给你。如果需要出2D图纸AI继续调用工程图相关的API自动生成视图、标注尺寸。听起来很美好对吧但实际操作中坑不少。下面我把整个流程拆开从环境搭建到实际建模再到出图一步步说清楚。2. 环境搭建与工具选型别急着上手先把地基打好2.1 SolidWorks版本选择与安装避坑SolidWorks的版本选择直接决定了API的可用范围和稳定性。我实测下来SolidWorks 2023和2024这两个版本对API的支持最完善尤其是涉及到工程图自动标注的部分2024版的API覆盖面明显更广。为什么不推荐更老的版本2019以前的版本很多API接口要么缺失要么行为不一致AI调用的时候容易报错。而且老版本在Windows 11上的兼容性也有问题我遇到过SolidWorks 2018在Win11上频繁崩溃的情况排查了半天发现是显卡驱动和旧版OpenGL的兼容问题。安装过程中最常见的几个坑Error 1714这个错误基本每个人都遇到过。原因是之前安装过SolidWorks的某个组件注册表里残留了旧版本的CEFChromium Embedded Framework信息。解决方法不是简单卸载重装而是要彻底清理注册表。具体操作打开注册表编辑器定位到HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks和HKEY_CURRENT_USER\SOFTWARE\SolidWorks把这两个键值整个删掉然后重启再安装。如果还不行用Registry Finder搜索所有含“SolidWorks”和“CEF”的键值逐一清理。CEF for SolidWorks 错误1772这个跟1714是兄弟问题本质都是CEF组件版本冲突。除了清注册表还要检查C:\Program Files\Common Files\eDrawings目录下是否有残留文件有的话一并删掉。未获得SolidWorks Visualize许可证这个不影响建模和API调用只是Visualize渲染模块的授权问题。如果你不需要做照片级渲染可以直接忽略。如果确实需要检查你的许可证服务器配置或者用离线激活方式重新激活。注意安装SolidWorks之前务必关闭所有杀毒软件和Windows Defender的实时保护。我遇到过多次因为杀毒软件拦截了某个DLL注册导致安装完成后API无法调用的情况。2.2 MCP服务端的部署与配置MCP是整套方案的核心枢纽。你需要一个MCP Server来充当AI和SolidWorks之间的翻译层。目前社区里有几种方案方案优点缺点适用场景自建Python MCP Server灵活可控想加什么功能加什么需要写代码维护成本高有开发能力的团队社区开源MCP SolidWorks桥接开箱即用配置简单功能受限于作者更新个人快速验证商业CAD自动化平台稳定有技术支持贵按年收费企业级部署我选的是自建Python MCP Server的方案因为需要定制一些特定的建模逻辑。核心依赖是pywin32库通过COM接口调用SolidWorks的API。Python版本建议用3.10或3.11太新的版本pywin32兼容性还没跟上。MCP Server的基本结构是这样的import win32com.client from mcp.server import Server, NotificationOptions from mcp.server.models import InitializationOptions # 连接SolidWorks sw_app win32com.client.Dispatch(SldWorks.Application) sw_app.Visible True # 定义MCP工具 server.tool() async def create_sketch(plane: str, shapes: list) - str: 在指定基准面上创建草图 # 调用SolidWorks API创建草图 ...这里有个关键点SolidWorks的COM接口是单线程的。如果你的MCP Server用了异步框架必须确保所有对SolidWorks的调用都在同一个线程里执行否则会出现莫名其妙的崩溃。我的做法是用一个专门的线程来跑SolidWorks操作MCP的异步接口通过队列把任务丢给这个线程。2.3 AI模型端的选择与接入AI模型这块选择比较多。核心要求是模型要支持Function Calling或者Tool Use能力因为MCP本质上就是一套工具调用协议。我测试过几个方案Claude系列对MCP的原生支持最好工具调用的准确率最高但成本也最高GPT-4系列Function Calling很成熟但需要自己写适配层把MCP协议转成OpenAI的function格式国产大模型部分模型已经支持MCP协议成本低但在复杂建模指令的理解上还有差距实际使用中我发现一个关键技巧不要指望AI一次就能理解复杂的建模指令。比如你说“建一个带法兰的圆柱体法兰上有6个均布的螺栓孔”AI可能会漏掉某些细节。更好的做法是把复杂指令拆成多个步骤让AI一步步执行每一步都确认结果。另外提示词的设计非常重要。我在系统提示词里明确告诉AI你是一个SolidWorks建模助手。你可以调用以下工具来操作SolidWorks。每次操作前先确认当前文档状态。创建特征时确保草图完全定义。如果操作失败先检查上一步是否成功再重试。这段提示词看起来简单但能显著降低AI“胡乱操作”的概率。3. 核心建模流程拆解从一句话到三维模型3.1 自然语言到建模指令的翻译逻辑这是整个流程中最关键也最难的部分。用户说“画一个齿轮”AI需要理解什么类型的齿轮模数多少齿数多少压力角多少宽度多少这些参数如果用户没说AI要么追问要么用默认值。我的做法是在MCP Server里预定义一套参数模板。比如对于齿轮模板包含模数、齿数、压力角、齿宽、孔径等参数每个参数都有默认值。AI调用create_gear工具时只需要提供用户明确说出的参数其余用默认值填充。server.tool() async def create_gear( module: float 2.0, teeth: int 20, pressure_angle: float 20.0, face_width: float 20.0, bore_diameter: float 10.0 ) - str: 创建一个直齿圆柱齿轮 # 参数校验 if teeth 6: return 齿数不能小于6 # 调用SolidWorks API生成齿轮 ...这样做的好处是AI不需要理解齿轮的几何生成算法它只需要把用户说的参数映射到工具参数上。几何生成的具体逻辑由MCP Server里的代码来完成。那齿轮的齿廓曲线怎么生成SolidWorks本身没有直接的“画齿轮”API需要用渐开线方程生成齿廓点然后通过样条曲线拟合。渐开线的参数方程x r_b * (cos(t) t * sin(t)) y r_b * (sin(t) - t * cos(t))其中r_b是基圆半径t是展开角。我在Python里计算出足够多的点一般每个齿廓取50个点然后通过CreateSplineAPI生成样条曲线再镜像、阵列最后拉伸成三维实体。3.2 草图自动化的关键技巧草图是建模的基础也是AI最容易出错的地方。我总结了几个关键技巧第一始终从基准面开始。AI有时候会试图在已有特征的面上创建草图但如果那个面的引用丢失了整个特征树就崩了。我的做法是在工具层面强制要求指定基准面前视、上视、右视三个基准面作为首选。第二草图必须完全定义。SolidWorks的草图如果欠定义后续特征操作可能会出问题。我在MCP Server里加了一个检查步骤草图创建完成后调用Sketch.GetConstrainedStatus()检查约束状态如果是欠定义自动添加尺寸约束和几何关系。第三善用草图图片和DXF导入。对于复杂的2D轮廓与其让AI一点点画不如让用户提供DXF文件或者草图图片AI只需要调用导入API就行了。这在做非标零件的时候特别有用。server.tool() async def import_dxf_to_sketch(dxf_path: str, plane: str Front) - str: 将DXF文件导入为草图 # 选择基准面 # 插入DXF # 检查草图状态 ...3.3 特征建模的自动化实现特征建模是AI操作SolidWorks的核心环节。常用的特征操作包括拉伸、旋转、扫描、放样、倒角、圆角、抽壳、阵列等。每个操作对应一组API调用。以拉伸为例基本流程是选择草图调用FeatureManager.FeatureExtrusion3()创建拉伸特征设置拉伸方向、深度、拔模角等参数确认特征创建成功这里有个坑FeatureExtrusion3的参数非常多有将近20个参数而且不同SolidWorks版本参数顺序可能不一样。我的做法是封装一个简化版的拉伸函数只暴露最常用的参数def extrude_sketch(sw_app, sketch_name, depth, directionblind, draft_angle0): 简化版拉伸 sw_model sw_app.ActiveDoc sw_model.Extension.SelectByID2(sketch_name, SKETCH, 0, 0, 0, False, 0, None, 0) sw_feat_mgr sw_model.FeatureManager # 参数顺序参考SolidWorks 2024 API文档 feature sw_feat_mgr.FeatureExtrusion3( True, False, False, # 单方向、不反向、不薄壁 0, 0, # 起始条件、终止条件 depth, 0, # 深度、深度2 False, False, False, False, # 拔模相关 draft_angle, 0, # 拔模角 False, False, False, False, # 偏移相关 True, True, True, # 合并、使用特征范围 0, 0, False # 其他参数 ) return feature对于阵列操作SolidWorks提供了FeatureCircularPattern4和FeatureLinearPattern4等API。做齿轮的齿阵列时我用的是圆周阵列需要指定阵列轴、阵列数量、角度间距。实操心得阵列操作最容易出问题的地方是阵列方向。如果阵列轴选错了整个特征就飞了。我的做法是在阵列之前先让AI确认阵列轴的方向向量确保方向正确再执行。3.4 参数化设计的实现思路参数化是AI驱动建模的真正价值所在。传统建模方式下改一个参数可能要重新走一遍特征树。参数化之后改参数就是改一个变量的事。SolidWorks本身支持方程式驱动的参数化通过EquationMgr接口可以管理全局变量和方程式。我在MCP Server里封装了参数管理工具server.tool() async def set_parameter(name: str, value: float, unit: str mm) - str: 设置全局参数 sw_model sw_app.ActiveDoc eq_mgr sw_model.GetEquationMgr() # 查找或创建参数 ...这样AI就可以在建模过程中动态设置参数。比如用户说“把齿数改成30”AI调用set_parameter(teeth, 30)SolidWorks自动更新模型。更进一步可以把常用的零件做成模板库。每个模板包含参数定义、特征树结构、工程图模板。AI只需要选择合适的模板填入参数就能快速生成新零件。这在做系列化产品设计的时候效率提升非常明显。4. 2D工程图自动生成从三维到二维的最后一公里4.1 工程图模板的创建与配置2D工程图的自动化前提是要有一个规范的工程图模板。模板里定义了图框、标题栏、比例、投影视角、尺寸标注样式等。SolidWorks的工程图模板文件是.drwdot格式放在模板目录下。创建模板的要点图框和标题栏按照公司标准或国标制作标题栏里的属性要跟三维模型的属性关联这样出图的时候能自动填充投影视角国内用第一视角欧美用第三视角模板里要设置好尺寸标注样式字体、箭头大小、公差显示方式都要在模板里预设图层设置不同线型粗实线、细实线、中心线、虚线放在不同图层方便后续管理我建议至少准备三套模板A4横版、A3横版、A2横版。小零件用A4中等零件用A3大装配体用A2。4.2 视图自动生成与布局工程图视图的自动生成核心API是CreateDrawViewFromModelView3和CreateUnfoldedViewAt3。基本流程新建工程图文档加载模板插入模型视图主视图基于主视图投影生成俯视图、左视图、轴测图调整视图位置和比例server.tool() async def create_drawing_views( model_path: str, template_path: str, views: list [Front, Top, Right, Isometric] ) - str: 自动生成工程图视图 # 新建工程图 sw_draw sw_app.NewDocument(template_path, 0, 0, 0) # 插入主视图 sw_draw.CreateDrawViewFromModelView3(model_path, *Front, 0.1, 0.15, 0) # 投影其他视图 ...视图布局有个经验法则主视图放在左上角俯视图在主视图正下方左视图在主视图正右方。轴测图放在右下角。视图之间的间距要均匀一般留30-50mm。比例的选择也很关键。SolidWorks会自动计算合适的比例但有时候自动算出来的比例不是标准比例比如1:1.5需要手动调整为1:1、1:2、1:5这类标准值。4.3 尺寸标注与公差自动添加尺寸标注是工程图自动化里最复杂的部分。SolidWorks提供了AddDimension2API可以自动标注尺寸但前提是模型里已经有对应的尺寸信息。我的做法是分两步走第一步在三维模型里通过ModelDocExtension.AddDimension预埋尺寸信息。这些尺寸在建模阶段就标注好出图的时候可以直接引用。第二步在工程图里通过AutoDimension或者手动调用AddDimension2把尺寸显示出来。SolidWorks 2024的AutoDimension功能已经比较智能了能自动识别需要标注的尺寸但复杂零件还是需要人工干预。公差标注通过Dimension.Tolerance属性设置。常用的公差类型包括公差类型API常量适用场景无公差swTolNone非配合尺寸基本尺寸swTolBASIC理论正确尺寸双边公差swTolBILAT一般配合极限公差swTolLIMIT需要控制极限值配合公差swTolFIT孔轴配合注意自动标注的尺寸往往比较乱需要人工整理。我的做法是让AI先生成所有尺寸然后按照“先大后小、先外后内”的原则自动排列最后人工微调。4.4 BOM表与技术要求自动填写装配体的工程图还需要BOM表物料清单。SolidWorks的BOM表通过InsertBomTable4API插入数据来源是装配体的属性。BOM表自动化的关键是把零件属性填完整。每个零件都要有零件号、名称、材料、数量、备注。这些属性在建模阶段就通过自定义属性写入出图的时候BOM表自动读取。技术要求一般是固定的几条比如“未注圆角R2”、“未注公差按GB/T 1804-m”、“表面处理阳极氧化”等。这些可以做成文本块AI根据零件类型自动选择合适的技术要求模板插入。5. 实操中踩过的坑与排查技巧5.1 SolidWorks崩溃与连接丢失这是最常见的问题。AI连续调用API操作SolidWorks的时候如果某个操作耗时过长或者内存占用过大SolidWorks可能会无响应甚至崩溃。排查思路检查是不是某个特定操作导致的崩溃。我遇到过FeatureExtrusion3在拉伸深度超过500mm时崩溃的情况后来发现是显卡驱动的问题更新驱动后解决。检查内存占用。SolidWorks是32位程序虽然2024版有64位版本内存超过2GB就容易出问题。建议在MCP Server里加一个内存监控超过阈值就提醒保存并重启。检查COM连接状态。如果SolidWorks崩溃了MCP Server里的COM对象就失效了需要重新连接。我的做法是每次操作前都检查sw_app.ActiveDoc是否有效无效就重新Dispatch。def ensure_connection(): global sw_app try: _ sw_app.ActiveDoc except: sw_app win32com.client.Dispatch(SldWorks.Application) sw_app.Visible True return sw_app5.2 API调用返回错误但无详细信息SolidWorks的API有时候返回False或者None但不告诉你为什么。这种情况最让人抓狂。我的排查方法开启SolidWorks的API日志。在注册表里设置HKEY_CURRENT_USER\SOFTWARE\SolidWorks\API\LogLevel为3SolidWorks会把所有API调用记录到日志文件里。用sw_app.GetLastError()获取错误码然后查SolidWorks API文档里的错误码对照表。分步执行。把一个大操作拆成多个小操作逐步执行看哪一步返回了错误。5.3 常见问题速查表问题现象可能原因解决方法MCP Server启动报错Python版本不兼容换用Python 3.10/3.11AI调用工具无响应MCP连接断开检查MCP Server日志重启服务草图创建失败基准面引用无效改用标准基准面拉伸特征失败草图未完全定义检查草图约束状态工程图视图空白模型路径错误确认模型文件存在且未加密尺寸标注乱跑视图比例不对调整视图比例后重新标注BOM表数据缺失零件属性未填写补全自定义属性SolidWorks频繁崩溃内存不足或驱动问题升级内存更新显卡驱动5.4 性能优化的几个实用技巧批量操作代替单步操作。比如创建10个螺栓孔不要一个一个创建用阵列一次搞定。API调用次数越少整体耗时越短。关闭不必要的显示更新。在批量操作前设置sw_app.Visible False操作完成后再设为True。这样能减少图形渲染的开销速度提升明显。使用轻化模式打开装配体。对于大型装配体用轻化模式打开可以大幅减少加载时间。API里通过OpenDoc6的swOpenDocOptions_Lightweight选项设置。定期保存。AI操作过程中如果崩溃没保存的工作就全丢了。我的做法是每完成一个特征就自动保存一次虽然会稍微慢一点但安全。6. 这套方案还能怎么扩展6.1 与Altium Designer的联动有人可能会问机械和电子怎么联动其实在机电一体化产品里PCB板和结构件的配合是个大问题。通过MCP把Altium Designer也接进来AI可以同时操作两个软件自动检查PCB和外壳的干涉情况。具体做法是从Altium Designer导出PCB的3D模型STEP格式导入SolidWorks然后用InterferenceDetectionAPI检查干涉。如果发现干涉AI自动调整外壳的安装柱位置。6.2 与Unity/Unreal的模型流转SolidWorks模型导入Unity或Unreal做可视化展示这个流程也可以自动化。SolidWorks导出FBX或OBJ格式然后通过MCP调用Unity/Unreal的API导入模型、设置材质、配置光照。我试过把一套行星齿轮箱的SolidWorks模型导入Unreal 5用MCP自动设置材质和旋转动画整个过程不到5分钟。以前手动做的话光调材质和动画就要半天。6.3 多AI协作的建模流水线单个AI模型的能力有限但多个AI协作可以覆盖更复杂的场景。比如AI-A负责理解用户需求拆解建模步骤AI-B负责执行SolidWorks操作AI-C负责检查模型质量发现问题反馈给AI-A这三个AI通过MCP协议互相通信形成一个闭环。我实测下来这种多AI协作的方式在处理复杂装配体的时候出错率比单AI低很多。6.4 参数化零件库的持续积累这套方案最大的价值不在于单次建模而在于积累。每次用AI建好的模型都可以把参数和特征树保存为模板。下次遇到类似的零件直接调模板改参数就行。我现在已经积累了齿轮、轴承座、法兰、支架、壳体等十几个常用模板。新项目里80%的零件都能从模板库直接生成只有20%的非标件需要从头建模。这个效率提升是实实在在的。最后分享一个小技巧在MCP Server里加一个操作录制功能把AI的每一步操作都记录下来。这样如果某个操作序列效果特别好可以直接保存为“宏”下次一键执行。我靠这个功能把几个常用建模流程固化下来现在建一个标准齿轮箱只要3分钟。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表