SolidWorks 2023 API 编码规范
核心规则:永远不要猜测 API 调用
SolidWorks API 方法的参数数量多(通常 10-15 个),参数类型混杂(bool/double/string)。 每次写 API 调用时必须:
- 先用
grep在~/Desktop/SW-AI-Project/docs/中搜索对应方法 - 确认方法名、参数顺序、参数类型、返回值
- 不要假设默认值——明确传递每个参数
- 使用
swConst枚举值,绝不硬编码整数
SolidWorks 对象模型
SldWorks (Application)
├── IModelDoc2
│ ├── PartDoc → 零件 (.sldprt)
│ ├── AssemblyDoc → 装配体 (.sldasm)
│ └── DrawingDoc → 工程图 (.slddrw)
├── ISketchManager → 草图管理
├── IFeatureManager → 特征管理
├── ISelectionMgr → 选择管理
└── ISketch → 草图对象
常用 API 方法
连接 SolidWorks
# Python (win32com)
import win32com.client
swApp = win32com.client.Dispatch("SldWorks.Application")
swApp.Visible = True
创建新零件
# VBA/C#
swApp.NewDocument(templatePath, paperSize, width, height)
# 模板路径: "D:\\SW2023\\SOLIDWORKS\\lang\\chinese-simplified\\tutorial\\part.prtdot"
part = swApp.NewPart() # 直接创建空零件 (VBA)
草图操作
part.InsertSketch2(True) # 插入草图
part.SketchManager.CreateCircle(x, y, z, radius) # 画圆
part.SketchManager.CreateLine(x1,y1,z1, x2,y2,z2) # 画线
part.SketchManager.CreateCornerRectangle(x1,y1,z1, x2,y2,z2) # 矩形
特征操作
# 拉伸凸台 (Extrude)
part.FeatureManager.FeatureExtrusion2(
sd, flip, dir, t1, t2, d1, d2, dchk1, dchk2,
ddir1, ddir2, dang1, dang2, offsetReversal1, offsetReversal2,
merge, useFeatScope, useAutoSelect, t0, startOffset, startFlip
)
# 关键参数: sd=True(单向), d1=厚度(m), dir=True(正向)
# 旋转凸台 (Revolve)
part.FeatureManager.FeatureRevolve2(
angle, reverseDir, angle2, revType, merge, useFeatScope, useAutoSelect
)
# 拉伸切除 (ExtrudeCut)
part.FeatureManager.FeatureCut4(
sd, flip, dir, t1, t2, d1, d2, dchk1, dchk2,
ddir1, ddir2, dang1, dang2, offsetReversal1, offsetReversal2,
flipCut, ...
)
# 圆角
part.FeatureManager.FeatureFillet3(radius, ...)
# 倒角
part.FeatureManager.FeatureChamfer3(...)
# 圆周阵列
part.FeatureManager.FeatureCircularPattern4(
numInstances, spacing, equalSpacing, ...
)
# 线性阵列
part.FeatureManager.FeatureLinearPattern4(...)
# 镜像
part.FeatureManager.FeatureMirror2(...)
SolidWorks 常量 (swConst)
# 文档类型
swDocPART = 1 # 零件
swDocASSEMBLY = 2 # 装配体
swDocDRAWING = 3 # 工程图
# 拉伸终止条件
swEndCondBlind = 1 # 给定深度
swEndCondThroughAll = 2 # 完全贯穿
swEndCondMidPlane = 6 # 两侧对称
# 草图平面
swPlaneTop = 1 # 上视基准面
swPlaneFront = 2 # 前视基准面
swPlaneRight = 3 # 右视基准面
# 单位转换 (SolidWorks 内部使用米)
METERS_TO_MM = 1000
MM_TO_METERS = 0.001
# 选择类型
swSelFACES = 2
swSelEDGES = 4
swSelSKETCHES = 16
刀盘建模常用参数
盾构机刀盘建模需要的典型特征:
- 刀盘面板: 大直径圆盘 (φ6
15m),拉伸厚度 400800mm - 辐条/辐臂: 径向分布,4~8 条,矩形截面
- 滚刀安装座: 圆周分布,配合阵列
- 切刀/刮刀: 边缘分布
- 中心刀: 中心区域
- 出土槽/排渣口: 贯穿切除
- 搅拌棒: 背面分布
- 安装法兰: 中心连接结构
单位系统
SolidWorks 内部使用米作为长度单位。所有 API 调用中传递的长度值单位都是米:
- 1mm = 0.001m
- 1m = 1.0
- 刀盘直径 6m = 6.0
导出格式
# 另存为 STEP
part.SaveAs3(path, 0, 0) # .sldprt
part.SaveAs3(path + ".STEP", 0, 0) # 某些版本
创建基准面
part.FeatureManager.InsertRefPlane(...)
板厚/壳特征
part.FeatureManager.FeatureShell(thickness, ...)
已知限制 (COM Late Binding)
使用 IDispatch 晚期绑定时存在以下已知限制:
FeatureExtrusion2等参数过多(>12个)的方法会失败,需使用 VBA 宏RecordMacro/EditMacro不可用(SW 2023 IDispatch 不支持)SelectByID2的 Callout 参数在 winax (Node.js) 中类型不匹配- 中文基准面名称:前视基准面 / 上视基准面 / 右视基准面