# Solidworks API

> SolidWorks 2023 API/SDK coding assistant. Covers part modeling, sketches, features (extrude/revolve/cut), patterns, mates, materials, STEP export, and shield machine cutterhead design. Triggers: SolidWorks, SOLIDWORKS, SLDWORKS, ISldWorks, IModelDoc2, IFeatureManager, sketch, extrude, revolve, cut, pattern, mate, cutterhead, 刀盘, PartDoc, AssemblyDoc, VBA macro, C# SolidWorks add-in, Python win32com SolidWorks.

- Skill: `guoleizhen717/solidworks-api` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add guoleizhen717/solidworks-api`
- Raw SKILL.md: https://api.skillmd.com/api/skills/guoleizhen717/solidworks-api/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: guoleizhen717 (https://skillmd.com/u/guoleizhen717)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/guoleizhen717/solidworks-api

---


# SolidWorks 2023 API 编码规范

## 核心规则：永远不要猜测 API 调用

SolidWorks API 方法的参数数量多（通常 10-15 个），参数类型混杂（bool/double/string）。
**每次写 API 调用时必须：**

1. 先用 `grep` 在 `~/Desktop/SW-AI-Project/docs/` 中搜索对应方法
2. 确认方法名、参数顺序、参数类型、返回值
3. 不要假设默认值——明确传递每个参数
4. 使用 `swConst` 枚举值，绝不硬编码整数

## SolidWorks 对象模型

```
SldWorks (Application)
├── IModelDoc2
│   ├── PartDoc → 零件 (.sldprt)
│   ├── AssemblyDoc → 装配体 (.sldasm)
│   └── DrawingDoc → 工程图 (.slddrw)
├── ISketchManager → 草图管理
├── IFeatureManager → 特征管理
├── ISelectionMgr → 选择管理
└── ISketch → 草图对象
```

## 常用 API 方法

### 连接 SolidWorks
```python
# Python (win32com)
import win32com.client
swApp = win32com.client.Dispatch("SldWorks.Application")
swApp.Visible = True
```

### 创建新零件
```python
# VBA/C#
swApp.NewDocument(templatePath, paperSize, width, height)
# 模板路径: "D:\\SW2023\\SOLIDWORKS\\lang\\chinese-simplified\\tutorial\\part.prtdot"
part = swApp.NewPart()  # 直接创建空零件 (VBA)
```

### 草图操作
```python
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)  # 矩形
```

### 特征操作
```python
# 拉伸凸台 (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)

```python
# 文档类型
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)，拉伸厚度 400~800mm
- **辐条/辐臂**: 径向分布，4~8 条，矩形截面
- **滚刀安装座**: 圆周分布，配合阵列
- **切刀/刮刀**: 边缘分布
- **中心刀**: 中心区域
- **出土槽/排渣口**: 贯穿切除
- **搅拌棒**: 背面分布
- **安装法兰**: 中心连接结构

## 单位系统

SolidWorks 内部使用**米**作为长度单位。所有 API 调用中传递的长度值单位都是米：
- 1mm = 0.001m
- 1m = 1.0
- 刀盘直径 6m = 6.0

## 导出格式

```python
# 另存为 STEP
part.SaveAs3(path, 0, 0)  # .sldprt
part.SaveAs3(path + ".STEP", 0, 0)  # 某些版本
```

## 创建基准面

```python
part.FeatureManager.InsertRefPlane(...)
```

## 板厚/壳特征

```python
part.FeatureManager.FeatureShell(thickness, ...)
```

## 已知限制 (COM Late Binding)

使用 IDispatch 晚期绑定时存在以下已知限制：
- `FeatureExtrusion2` 等参数过多（>12个）的方法会失败，需使用 VBA 宏
- `RecordMacro` / `EditMacro` 不可用（SW 2023 IDispatch 不支持）
- `SelectByID2` 的 Callout 参数在 winax (Node.js) 中类型不匹配
- 中文基准面名称：前视基准面 / 上视基准面 / 右视基准面

