写交接:SolidWorks 装配的接手点 + 本会话成果汇总
用户已在 SolidWorks 里手工把两块板载入同一装配体,刀片尚未摆位。 在 PROGRESS 顶部加「新会话从这里开始」作为唯一入口:当前装配体状态、 下一步(刀片绕 X +90° 竖起 + 平移到槽位)、卡点(CreateTransform 封送)、 本会话七项成果与对应提交、四条待办。 装配体状态快照存 .claude/r2/3d/_sw_assembly_state.json: - 活动文档 D:\DCDC\新建文件夹\3D_BASE-PCB_2026-09-12.SLDASM - 底板包围盒 x 0.01~97.99,变换为单位阵 ⇒ 原点 = 板左下角(可直接套板坐标) - 刀片无旋转、平放,引用 PhoneRail_blade.SLDASM(实体文件) NOTES 两处更正: - §14 二次更正:坐标系取决于插入方式 —— AddComponent4 插的会重心归零, 用户 GUI 手工插的保留板左下角原点。动手前先 GetBox 看一眼,别假设。 - §19 新增:三个磁盘文件各是什么、底板零部件引用的是临时件(一清理就断链), 并写明新会话第一件事不要 CloseAllDocuments。 新建文件夹/(126 MB STEP/SLDASM)加进 .gitignore。 Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_0168Bu6SEx3cXXCJLkdnE6zB
这个提交包含在:
@@ -205,11 +205,16 @@ n = asm.ToolsCheckInterference2(0, EMPTY, False, pcomp, pface)
|
||||
|
||||
## 14. 刀片竖插到底板槽位的变换(纯几何,已算好)
|
||||
|
||||
⛔⛔ **前提作废(2026-09-12 更正)**:下表是按"原点 = 板左下角"算的,
|
||||
而那只在**单独打开导入的装配体**时成立。一旦用 `AddComponent4` 插进总装,
|
||||
实测包围盒变成 **刀片 `x -45~45 / y -34~34 / z -3.2~3.2`、底板 `x -49~49 / y -49~49 / z -9.7~9.7`**
|
||||
—— 两块板都**以各自几何中心为原点**(SolidWorks 插入时做了重心归零)。
|
||||
⇒ 平移量必须按 `GetBox` 读回的**真实包围盒**现算,不能用板坐标直接减。下表仅留作参考。
|
||||
⚠ **坐标系要看插入方式,不能一概而论(2026-09-12 二次更正)**:
|
||||
|
||||
| 插入方式 | 实测包围盒 | 原点在哪 |
|
||||
|---|---|---|
|
||||
| 我用 `AddComponent4(p,'',0,0,0)` | 刀片 `x -45~45`、底板 `x -49~49` | **几何中心**(被重心归零)|
|
||||
| **用户在 GUI 里手工插入** | 底板 `x 0.01~97.99 / y 0.01~97.99` | **板左下角**(与 EDA 板坐标一致)|
|
||||
|
||||
⇒ 下表那套"原点 = 板左下角"的平移量,在**手工插入的装配体里是直接可用的**;
|
||||
在 `AddComponent4` 插出来的装配体里要按 `GetBox` 现算。
|
||||
**动手前先 `GetBox` 读一次,看原点在哪**,别假设。
|
||||
|
||||
(原始推导)坐标系:STEP 原点 = 板左下角
|
||||
(刀片板体包围盒 `x 0.01~89.99 / y 0.01~67.99 / z 0~1.67`,正是 90×68×1.6)。
|
||||
@@ -320,3 +325,49 @@ mu = wc.Dispatch(raw) # → 可用的 IMathUt
|
||||
→ `CloseAllDocuments(True)` 清理。
|
||||
|
||||
**未完成**:① 刀片摆位(§17)② 干涉结果解读(`PComp` 数组解析、限定范围检查 §16)。
|
||||
|
||||
## 19. 📍 当前 SolidWorks 里的装配体(2026-09-12 交接点)
|
||||
|
||||
用户**手工**把两块板载入了同一个装配体(不是脚本做的):
|
||||
|
||||
```
|
||||
活动文档:D:\DCDC\新建文件夹\3D_BASE-PCB_2026-09-12.SLDASM
|
||||
├─ 3D_BASE-PCB_2026-09-12.step-1 底板(用户自己重导的 STEP,不是脚本那份)
|
||||
│ 包围盒 x 0.01~97.99 y 0.01~97.99 z -6.30~13.17 mm
|
||||
│ 变换 = 单位阵 ⇒ **原点 = 板左下角,与 EDA 板坐标一致**
|
||||
│ 引用 %TEMP%\swx32108\IC~~\3D_BASE-PCB_2026-09-12.step.SLDASM ⚠ 临时件
|
||||
└─ PhoneRail_blade-1 刀片
|
||||
包围盒 x -34.57~55.40 y 33.71~101.68 z -2.35~4.02 mm
|
||||
变换 = 无旋转 + 平移 (-34.6, 33.7, 2.4) mm ⇒ **还是平放的,没竖起来**
|
||||
引用 D:\DCDC\新建文件夹\PhoneRail_blade.SLDASM ✅ 实体文件,可用
|
||||
```
|
||||
|
||||
状态快照存在 `.claude/r2/3d/_sw_assembly_state.json`。
|
||||
|
||||
### 磁盘上的文件(`D:\DCDC\新建文件夹\`,126 MB,**未进 git**)
|
||||
|
||||
| 文件 | 是什么 |
|
||||
|---|---|
|
||||
| `3D_BASE-PCB_2026-09-12.SLDASM` 29.97 MB | **装配体本身**(活动文档)|
|
||||
| `3D_BASE-PCB_2026-09-12.step` 53.87 MB | 用户自己重导的底板 STEP |
|
||||
| `PhoneRail_blade.SLDASM` 16.61 MB | 刀片零部件 ✅ 实体,装配体引用的就是它 |
|
||||
| `PhoneRail_blade.step` 31.22 MB | 刀片 STEP |
|
||||
| `~$*.SLDASM`(各 6 B)| SolidWorks 锁文件 ⇒ 这两份**正被打开** |
|
||||
|
||||
⚠⚠ **底板零部件引用的是临时件**(`%TEMP%\swx32108\IC~~D_BASE-PCB_2026-09-12.step.SLDASM`),
|
||||
**不是**上表那个 29.97 MB 的装配体文件(那是装配体自己)。
|
||||
⇒ 只要没 `CloseAllDocuments`、没重启 SolidWorks,引用就还在;
|
||||
**一旦清理或重启,重开装配体时底板零部件会丢引用**。
|
||||
⇒ 要长期可用:在 GUI 里把**底板零部件**也另存到 `新建文件夹\` 下并替换引用
|
||||
(⛔ 别用脚本的 `SaveAs3`,那个写出来是废件,见 §11)。
|
||||
|
||||
⚠ **新会话第一件事**:别急着 `CloseAllDocuments` —— 那会清空临时目录、
|
||||
让当前这个装配体的底板引用断掉。先确认用户是否已把底板另存。
|
||||
|
||||
### 下一步只差摆位
|
||||
|
||||
刀片要**绕 X 轴 +90° 竖起**,再平移到某个槽位。因为底板原点 = 板左下角,
|
||||
§14 那张表的平移量**可以直接用**(`dx = 4.00`、`dy = 槽心 y + 0.8`、`dz = Z0`)。
|
||||
卡点仍是 §17:`CreateTransform` 的 pywin32 封送没解决。
|
||||
|
||||
**绕开的办法**:在 GUI 里手工拖 + 加配合(比解封送快),或者继续攻 §17。
|
||||
|
||||
在新工单中引用
屏蔽一个用户