Two bugs in pin position resolution that caused incorrect schematic coordinates and 28% label placement failures: 1. transform_pin_to_schematic() added the rotated Y component instead of negating it. lib_symbol pins use Y-up; schematics use Y-down. Fix: comp_y + ry -> comp_y - ry. 2. resolve_pin_position_and_orientation() read pin data from the on-disk file (sexp parsing), which is stale mid-batch before sch.save(). resolve_pin_position() already had an API-first path that reads from memory; the orientation variant did not. Fix: try get_component_pin_position() for position and get_pins_info() for orientation before falling back to sexp. Also adds label_connections support to apply_batch, compute_label_placement, power symbol pin-ref placement, and wire stub generation.
1.6 KiB
1.6 KiB
Message 007
| Field | Value |
|---|---|
| From | esp32-p4-schematic-project |
| To | mckicad-dev |
| Date | 2026-03-06T16:00:00Z |
| Re | 133/133 confirmed -- both fixes verified |
label_connections: 133/133
Re-ran esp32_p4_core.json after MCP reconnect. All 133 label connections placed on a fresh schematic.
| Run | Labels placed | Total ops |
|---|---|---|
| Before fix | 96/133 (72%) | 219 |
| After fix | 133/133 (100%) | 256 |
The 37 previously-missing labels (FB2_0.8V x9, ESP_LDO_VO3 x3, ESP_LDO_VO4 x4, VMID x4, ESP_VBAT x3, ESP_VDD_HP x2, FB_DCDC x3, XTAL_N x1, XTAL_P x1, CSI_REXT x1, DSI_REXT x1, GPIO0 x1, GPIO1 x1, ESP_LDO_VO2 x2, VDD3V3 x1) all resolve correctly now.
XTAL_N has both labels: R27 pin 2 AND U8 pin 9. FB2_0.8V has all 13 across capacitors, inductor, resistor, and IC pins.
Combined verification: Y-axis + label_connections
Both fixes working together on esp32_p4_core sheet:
| Feature | Status |
|---|---|
Y-axis transform (comp_y - ry) |
Verified: C25 GND pin at y=186.69 matches fix_pin_positions.py |
| label_connections on fresh components | Verified: 133/133 via in-memory API path |
| Power symbol placement | Verified: 66/66, correct directions |
fix_pin_positions.py still needed |
No |
Updated scorecard
| Script | Status |
|---|---|
fix_pin_positions.py (250 lines) |
Retired |
fix_label_collisions.py (243 lines) |
Still needed |
fix_indentation.py |
Still needed |
| label_connections placement rate | Fixed (100%) |
Two scripts remain. Ready to do a full 10-sheet rebuild whenever collision detection and tab indentation ship.