V3.2.186: clearRouting('all') 挂起超过 120 秒,走线未清除
- Dominant language
- TypeScript
- Stars
- 64
- Forks
- 26
- PR merge metrics
- No merged PRs in 30d
Description
在最小 PCB 上,自动布线可以成功完成,但随后调用
`eda.pcb_Document.clearRouting('all')` 超过 120 秒仍不返回,走线也未清除。
## 环境
- 嘉立创EDA专业版桌面客户端 V3.2.186,macOS,半离线模式。
- 错误堆栈所引用的 API 适配层:`0.3.18.0bc12bb0`。
- 新建独立工程测试,与实际设计工程分开。
- 测试日期:2026-09-05。
## 最小复现
1. 新建空白 PCB 并将输入焦点置于该 PCB。
2. 在扩展的异步执行上下文运行下面代码,使用原生 `eda` 和枚举。它只在没有焊盘、走线的 PCB 上创建矩形板框、4 个顶层焊盘和两个网络。
```javascript
const doc = await eda.dmt_SelectControl.getCurrentDocumentInfo();
if (doc?.documentType !== EDMT_EditorDocumentType.PCB) {
throw new Error('Focus an empty test PCB first');
}
if ((await eda.pcb_PrimitivePad.getAllPrimitiveId()).length ||
(await eda.pcb_PrimitiveLine.getAllPrimitiveId()).length) {
throw new Error('Use an empty test PCB');
}
const outline = eda.pcb_MathPolygon.createPolygon([
0, 0, 'L', 1200, 0, 1200, 600, 0, 600, 0, 0
]);
if (!outline || !await eda.pcb_PrimitivePolyline.create(
'', EPCB_LayerId.BOARD_OUTLINE, outline, 1
)) throw new Error('Could not create outline');
for (const [number, x, y, net] of [
['1', 150, 150, 'ROUTE_A'], ['2', 1050, 150, 'ROUTE_A'],
['3', 150, 450, 'ROUTE_B'], ['4', 1050, 450, 'ROUTE_B']
]) {
const pad = await eda.pcb_PrimitivePad.create(
EPCB_LayerId.TOP, number, x, y, 0, ['ELLIPSE', 60, 60], net, null
);
if (!pad) throw new Error('Could not create test pad');
}
await eda.pcb_Document.save();
return await eda.pcb_Document.autoRouting({
RoutingNets: ['ROUTE_A', 'ROUTE_B']
});
```
3. 自动布线返回后,保持相同 PCB 焦点,单独调用:
```javascript
return await eda.pcb_Document.clearRouting('all');
```
4. 在另一个执行请求中独立查询走线数量:
```javascript
return (await eda.pcb_PrimitiveLine.getAllPrimitiveId()).length;
```
## 预期与实际
预期:清除两条走线并返回 `true`;若不支持或失败,返回 `false`
或抛出可诊断的异常。
实际:原生 Promise 超过 120 秒仍未完成。独立 API 查询仍可以返回,
走线数量仍为 2。本次运行没有发现清除布线的确认对话框。
清除前自动布线的真实返回为:
```json
{"success":true,"totalNetsCount":2,"successNetsCount":2,"failedNets":[],"duration":198}
```
这不只是 HTTP 等待超时:测试 Bridge 保留异步任务,独立轮询仍显示
原生调用未完成;随后继续查询画布,走线仍在。结束测试前已保存测试板,
再重启测试客户端清理挂起的执行环境,没有自动重试清除操作。
公开 API 适配层将这个调用转发到
`extensionApi.PCB_Document.clearRouting` RPC。现有观察无法确定该 RPC
未完成的内部原因,请协助确认其处理逻辑及半离线桌面模式的支持情况。
另外,当前公开自动布线接口只返回最终结果,未提供百分比进度或取消回调。
调用侧已增加任务阶段、耗时及未响应提示,但无法据此取消仍未完成的原生调用。
## 相关贡献
- 网关任务诊断 PR:https://github.com/easyeda/eext-run-api-gateway/pull/2
- Bridge 异步任务补丁:https://github.com/easyeda/easyeda-api-skill/issues/16
这两份改动改善任务追踪和诊断,不声称修复本 Issue 中的原生清除布线挂起。
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.