OpenClaw_SolidWorks_编程指南
方法优点缺点自动化程度高API 兼容性问题VBA 宏稳定可靠需要手动操作VBS 脚本可双击运行功能有限建议: 对于重要操作使用 VBA 宏,Python 用于快速测试和简单操作。文档创建时间: 2026-03-01作者: OpenClaw AI Assistant。
·
OpenClaw 调用 SolidWorks 画图指南
1. 概述
本文档介绍如何通过 OpenClaw (Python) 调用 SolidWorks 进行自动化绘图。
当前状态:
- ✅ 可以连接 SolidWorks
- ✅ 可以创建草图、绘制圆
- ⚠️ 拉伸(Extrusion)功能存在 API 调用问题
2. 环境准备
2.1 安装依赖
pip install pywin32
2.2 检查 SolidWorks
确认已安装 SolidWorks,版本信息:
- 本机版本:SolidWorks 2024 (v32.3.1)
- 模板路径:
C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\templates\part.prtdot
3. Python 连接 SolidWorks
3.1 基本连接代码
import win32com.client
import pythoncom
import time
# 初始化 COM
pythoncom.CoInitialize()
# 连接 SolidWorks
sw = win32com.client.Dispatch('SldWorks.Application')
sw.Visible = True
# 获取活动文档
doc = sw.ActiveDoc
print('Connected! Document:', doc.GetTitle if doc else 'None')
3.2 完整示例代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
SolidWorks API Python 操作示例
"""
import win32com.client
import pythoncom
import time
def connect_solidworks():
"""连接 SolidWorks"""
pythoncom.CoInitialize()
sw = win32com.client.Dispatch('SldWorks.Application')
sw.Visible = True
return sw
def main():
print('=== SolidWorks Python API Demo ===')
# 连接
sw = connect_solidworks()
print(f'Connected to SolidWorks')
# 获取活动文档
doc = sw.ActiveDoc
if not doc:
print('No active document - please create one first')
return
print('Document:', doc.GetTitle)
# ====== 基本操作 ======
# 1. 开始草图
doc.SketchManager.InsertSketch(True)
# 2. 绘制圆 (圆心x, y, z, 圆周x, y, z)
doc.SketchManager.CreateCircle(0, 0, 0, 0.03, 0, 0) # 30mm半径
# 3. 退出草图
doc.InsertSketch2(False)
print('Circle created')
# 4. 拉伸 (当前存在问题,显示不出实体)
doc.FeatureManager.FeatureExtrusion(
True, # bool 方向1
False, # bool 方向2
False, # bool 封口
0, # int 草图穿透
0, # int 拉伸方向
0.04, # double 深度 (40mm)
0.001, # double 拔模角度
False, False, False, False, # 薄壁参数
0, 0, 0, 0, 0, 0, 0, 0, # 扩展参数
False # bool 合并结果
)
print('Extrusion attempted')
# 5. 重建视图
doc.ForceRebuild3(True)
doc.ViewZoomtofit2()
print('Done!')
if __name__ == '__main__':
main()
4. 可用 API 方法
4.1 SketchManager 方法
| 方法 | 说明 |
|---|---|
InsertSketch(True) |
开始草图 |
CreateCircle(x1, y1, z1, x2, y2, z2) |
画圆 |
CreateLine(...) |
画直线 |
CreateRectangle(...) |
画矩形 |
CreateArc(...) |
画圆弧 |
InsertSketch2(False) |
退出草图 |
4.2 FeatureManager 方法
| 方法 | 说明 | 状态 |
|---|---|---|
FeatureExtrusion(...) |
拉伸凸台 | ⚠️ 有问题 |
FeatureCut(...) |
拉伸切除 | ⚠️ 有问题 |
FeatureRevolve(...) |
旋转 | 未测试 |
FeatureFillet(...) |
圆角 | 未测试 |
FeatureChamfer(...) |
倒角 | 未测试 |
4.3 ModelDoc 常用方法
| 方法 | 说明 |
|---|---|
GetTitle |
获取文档标题 |
ClearSelection2(True) |
清除选择 |
ForceRebuild3(True) |
重建模型 |
ViewZoomtofit2() |
缩放到适合 |
5. VBA 宏方法(推荐)
当 Python API 不稳定时,使用 SolidWorks VBA 宏是更可靠的选择。
5.1 创建 VBA 宏步骤
- 在 SolidWorks 中按 Alt + F8 打开宏
- 点击"新建"创建新宏
- 粘贴代码
- 按 F5 运行
5.2 VBA 示例代码
Sub CreateWaterCup()
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
' 1. 创建杯身
boolstatus = Part.SelectByID2("Top Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.SketchManager.CreateCircle 0, 0, 0, 0.03, 0, 0
Part.InsertSketch2 True
Part.FeatureManager.FeatureExtrusion2 True, False, False, 0, 0, _
0.04, 0.001, False, False, False, False, _
0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0, 0, True, 0
' 2. 创建底部切除
boolstatus = Part.SelectByID2("Face@4", "FACE", 0, 0, 0.04, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.SketchManager.CreateCircle 0, 0, 0, 0.028, 0, 0
Part.InsertSketch2 True
Part.FeatureManager.FeatureCut2 True, False, False, 0, 0, _
0.038, 0.001, False, False, False, False, _
0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0, 0, True, 0
Part.ForceRebuild3 True
Part.ViewZoomtofit2
MsgBox "水杯创建完成!" & vbCrLf & "高度: 40mm" & vbCrLf & "壁厚: 2mm"
End Sub
5.3 VBA 文件位置
已保存到:
C:\Cadence\16_6\Cadence\SPB_Data\.openclaw\workspace\cup.vbsC:\Cadence\16_6\Cadence\SPB_Data\.openclaw\workspace\create_cup.vba
6. 已知问题
6.1 Python API 拉伸问题
问题描述: 使用 FeatureManager.FeatureExtrusion() 方法时,代码执行不报错,但 SolidWorks 中不显示实体。
可能原因:
- win32com 与 SolidWorks 2024 API 兼容性问题
- 参数传递方式不正确
- COM 接口调用方式差异
临时解决方案:
- 使用 VBA 宏代替 Python
- 或手动在 SolidWorks 中操作
6.2 错误排查
# 检查连接
doc = sw.ActiveDoc
if doc:
print('Connected:', doc.GetTitle)
else:
print('No document')
# 检查 SketchManager
skm = doc.SketchManager
print('SketchManager:', skm)
# 检查 FeatureManager
fm = doc.FeatureManager
print('FeatureManager:', fm)
7. VBS 脚本方法
7.1 VBS 代码
' 创建水杯 - 双击运行
Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True
WScript.Sleep 2000
Set Part = swApp.ActiveDoc
If Part Is Nothing Then
WScript.Echo "请先在SolidWorks中打开一个零件文件"
WScript.Quit
End If
' 步骤1: 创建杯身
Part.SelectByID2 "Top Plane", "PLANE", 0, 0, 0, False, 0, 0
Part.SketchManager.InsertSketch True
Part.SketchManager.CreateCircle 0, 0, 0, 0.03, 0, 0
Part.InsertSketch2 True
Part.FeatureManager.FeatureExtrusion2 True, False, False, 0, 0, 0.04, 0.001, False, False, False, False, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0, 0, True, 0
WScript.Sleep 500
' 步骤2: 创建底部
Part.SelectByID2 "Face@4", "FACE", 0, 0, 0.04, False, 0, 0
Part.SketchManager.InsertSketch True
Part.SketchManager.CreateCircle 0, 0, 0, 0.028, 0, 0
Part.InsertSketch2 True
Part.FeatureManager.FeatureCut2 True, False, False, 0, 0, 0.038, 0.001, False, False, False, False, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0, 0, True, 0
Part.ForceRebuild3 True
Part.ViewZoomtofit2
WScript.Echo "完成! 水杯已创建"
7.2 运行方式
cscript create_cup.vbs
8. 扩展阅读
9. 总结
| 方法 | 优点 | 缺点 |
|---|---|---|
| Python + win32com | 自动化程度高 | API 兼容性问题 |
| VBA 宏 | 稳定可靠 | 需要手动操作 |
| VBS 脚本 | 可双击运行 | 功能有限 |
建议: 对于重要操作使用 VBA 宏,Python 用于快速测试和简单操作。
文档创建时间: 2026-03-01
作者: OpenClaw AI Assistant
更多推荐


所有评论(0)