Thermal reliefs should be removed if they result in unconnected islands

Bug #1741265 reported by Jon Evans
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
KiCad
Fix Released
Medium
Jon Evans

Bug Description

When filling zones, if thermal relief connection is selected, the algorithm will sometimes generate thermals that go nowhere. The only way I could find to prevent this is to place a keepout where I don't want thermals to appear. It would be nice if these were automatically detected and removed as part of the fill algorithm.

https://i.imgur.com/OFxakB9.jpg

Application: pcbnew
Version: (2018-01-03 revision 0945c319f)-master, debug build
Libraries:
    wxWidgets 3.0.3
    libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3
Platform: Linux 4.13.0-21-generic x86_64, 64 bit, Little endian, wxGTK
Build Info:
    wxWidgets: 3.0.3 (wchar_t,wx containers,compatible with 2.8) GTK+ 2.24
    Boost: 1.62.0
    Curl: 7.55.1
    Compiler: GCC 7.2.0 with C++ ABI 1011

Build settings:
    USE_WX_GRAPHICS_CONTEXT=OFF
    USE_WX_OVERLAY=OFF
    KICAD_SCRIPTING=ON
    KICAD_SCRIPTING_MODULES=ON
    KICAD_SCRIPTING_WXPYTHON=ON
    KICAD_SCRIPTING_ACTION_MENU=OFF
    BUILD_GITHUB_PLUGIN=ON
    KICAD_USE_OCE=ON
    KICAD_SPICE=ON

Tags: gal
Jon Evans (craftyjon)
Changed in kicad:
importance: Undecided → Wishlist
tags: added: gal
Revision history for this message
Nick Østergaard (nickoe) wrote :

This is a recent regression, I think it came with the update of the connectivity algorithm.

Changed in kicad:
status: New → Confirmed
Revision history for this message
Nick Østergaard (nickoe) wrote :

I have git bisected this and got this restult:
There are only 'skip'ped commits left to test.
The first bad commit could be any of:
941ebe376c114a115cd6b1985b38cb3de0c370d6
2831268b6098559b0ed4b81dc5a01f02f2944b44
c18b638c177bf4003aaf960d6fd30092f1f6f2d7
eed924fe45e85707a3032466c76fd2289881c325
We cannot bisect more!

I suspect it is eed924f that introduces the bug. The commit description also indicates changes was made for the thermal releif.

The commits skipped could not run.

Revision history for this message
Nick Østergaard (nickoe) wrote :

I am also a bit worried about this warning:

pcbnew/zone_filler.cpp: In member function ‘void ZONE_FILLER::buildUnconnectedThermalStubsPolygonList(SHAPE_POLY_SET&, const ZONE_CONTAINER*, const SHAPE_POLY_SET&, double, double) const’:
pcbnew/zone_filler.cpp:1080:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 for( unsigned ic = 0; ic < spokes.PointCount(); ic++ )
                                       ~~~^~~~~~~~~~~~~~~~~~~~~

Revision history for this message
Chris Pavlina (pavlina-chris) wrote :

The warning is sloppy signedness-mixing but shouldn't reeeeally be an issue, assuming PointCount() never returns negative...

Jon Evans (craftyjon)
Changed in kicad:
importance: Wishlist → Medium
Changed in kicad:
milestone: none → 5.0.0-rc1
Revision history for this message
Wayne Stambaugh (stambaughw) wrote :

I would definitely like to see this fixed before the stable 5 release. Thermals should not be generated that do not connect to anything.

Jon Evans (craftyjon)
Changed in kicad:
assignee: nobody → Jon Evans (craftyjon)
status: Confirmed → Won't Fix
status: Won't Fix → In Progress
Revision history for this message
Nick Østergaard (nickoe) wrote :
Changed in kicad:
status: In Progress → Fix Committed
Revision history for this message
KiCad Janitor (kicad-janitor) wrote :

Fixed in revision 47b8b6dc6a503c6fe57a0fa51de15d106be492eb
https://git.launchpad.net/kicad/patch/?id=47b8b6dc6a503c6fe57a0fa51de15d106be492eb

Changed in kicad:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.