easyeda / easyeda/pro-api-sdk

API 放置器件的焊盘 number 读回为 null(文档重载前);连带 DRC 'Netlist Error' 无结构化明细,headless 流程无法定位/自证

Open
#33 1 comment 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.