API 放置器件的焊盘 number 读回为 null(文档重载前);连带 DRC 'Netlist Error' 无结构化明细,headless 流程无法定位/自证
- Dominant language
- TypeScript
- Stars
- 64
- Forks
- 26
- PR merge metrics
- No merged PRs in 30d
Description
### 环境
- EasyEDA Pro `3.2.149.88089769`(macOS),扩展 API
### 现象 1:API 放置的器件焊盘 number 读回为 null
通过 API 放置封装(`eda.pcb_Component.create` 路径,即 importChanges 之外的程序化放置),放置后立即(以及**保存后**)读回该器件的 pads,`number` 字段全为 `null`;**只有整个文档关闭重开后**才能读到真实编号(A6/B7/1/2…)。
```js
// 放置一个 USB-C 16P 封装后:
const comp = /* 该器件 primitive */;
const pads = await comp.getPads?.() /* 或经 getAllPrimitives 过滤 */;
pads.map(p => p.getState_Number?.() ?? p.number); // → 全部 null,直到文档重载
```
### 现象 2:连带 DRC "Netlist Error" 无法程序化定位
上述板子的 DRC 恒报 1 条:
> `Netlist Error — PCB and schematic netlist does not match. You can click on the rule name "Import Changes" to view the difference.`
该项是聚合对象,`check(false,false,true)` 的明细里**没有任何字段说明是哪个器件/引脚不匹配**,只能在 UI 点 "Import Changes" 目视。我们把两侧网表逐网 degree 机械比对(考虑 EPAD 在原理图 1 pin ↔ PCB 9 pads 的正常拆分)结果 **100% 一致**,高度怀疑就是现象 1 的 number 缺失导致比对失败——即这是个**假阳性且无法程序化澄清**的报错。
### 期望
1. API 放置的器件,焊盘 number 创建即写入、可立即读回(与 UI 放置一致);
2. `Netlist Error` 在 verbose 明细里给出结构化 diff(器件位号 + 引脚 + 两侧网络名),不依赖 UI。
### 影响
headless/自动化流程中 DRC 永远差最后一条无法归零,也无法自证是否为真问题;目前只能靠自建的网表比对脚本旁证。
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.