You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This fixes a KiCad PCB export bug where duplicate adjacent route points were being written out as real copper segments with zero length.
Motivation
On real boards such as mohan-bee/soil-moisture-sensor-final, this showed up in KiCad DRC as errors like Tracks crossing, where one of the reported tracks had length 0.0000 mm. The visible routing was not the main problem. The exporter was emitting a degenerate ghost segment from a point back to itself, and KiCad then treated that invalid segment as real copper during DRC.
What changed
The PCB trace exporter now skips any segment whose start and end points are identical after coordinate transformation. This keeps duplicate bookkeeping points in route data from becoming invalid KiCad copper.
Result
no more zero-length exported trace segments
no more fake 0.0000 mm tracks in KiCad
fewer downstream false-positive DRC errors such as crossing and clearance violations caused by those ghost segments
A focused repro test was added to confirm that duplicate adjacent route points no longer generate zero-length exported segments.
So, you mean our autorouter result has these duplicate segments of length 0?
@imrishabh18 nice catch, if it is from autorouter this fix is unnecessary, actuallly this needs to fix in autorouter, but before that let me do a repro in the autorouter.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Repro:
use this package for the repro: https://tscircuit.com/mohan-bee/soil-moisture-sensor-final
Export to kicad project
Open in kicad PCB > DRC check
you will find a trace crossing error,
This fixes a KiCad PCB export bug where duplicate adjacent route points were being written out as real copper segments with zero length.
Motivation
On real boards such as mohan-bee/soil-moisture-sensor-final, this showed up in KiCad DRC as errors like Tracks crossing, where one of the reported tracks had length 0.0000 mm. The visible routing was not the main problem. The exporter was emitting a degenerate ghost segment from a point back to itself, and KiCad then treated that invalid segment as real copper during DRC.
What changed
The PCB trace exporter now skips any segment whose start and end points are identical after coordinate transformation. This keeps duplicate bookkeeping points in route data from becoming invalid KiCad copper.
Result
no more zero-length exported trace segments
no more fake 0.0000 mm tracks in KiCad
fewer downstream false-positive DRC errors such as crossing and clearance violations caused by those ghost segments
A focused repro test was added to confirm that duplicate adjacent route points no longer generate zero-length exported segments.