PcbNew: Can't fill zones unless already connected to a net

Bug #1041734 reported by Nathan Silver
30
This bug affects 6 people
Affects Status Importance Assigned to Milestone
KiCad
Expired
Wishlist
Unassigned

Bug Description

I was attempting to create a ground plane and fill it before routing any of my other connections. When creating a zone attached to a net, the user is unable to fill the zone unless that zone is already connected to another component that is already bound to that net. In my case, once I manually routed a trace from the ground pad of a capacitor and placed a via, presto, the zone would fill. Maybe this is a design feature, and maybe we can chalk this up to me being a rookie at board layouts. Regardless, I would have liked a message box explaining why the software did not carry out the command I asked it to.

I ended up figuring this out after binding the zone to "no net", and seeing the zone filled immediately after after the fill command.

Suggested resolutions:

1) A message box explaining what happened.

2) Fill the zone anyway, because it's what the user wanted. If it really is important to guard against this, please give a dialog box allowing the user to acknowledge what's going on, and allow the option to override.

Tags: pcbnew zones
Changed in kicad:
importance: Undecided → Wishlist
Revision history for this message
Mario Ribeiro (msribeiro) wrote :

+1

Revision history for this message
Chris Fryer (chrisf1874) wrote :

+1

Just not filling the area leaves (especially new) users not knowing what's going on. It took me a good few hours this evening to find this bug report and get the fill to work properly.

Ideally, starting a fill zone would attach the new area to the chosen net and show as such in the rats nest for later connection.

Martin Errenst (imp-d)
tags: added: pcbnew zones
Revision history for this message
Nick Østergaard (nickoe) wrote :

Is this bug still present in the latest product? Also it seems that #1406273 is a duplicate, is that right? I cannot reproduce.

Changed in kicad:
status: New → Incomplete
Revision history for this message
Sean Greenslade (o-sean) wrote :

I think the issue here is that a zone will not fill if there are no existing node _centerpoints_ within the bounds of the zone. So if you draw a zone that touches a pad's copper but does not encompass the centerpoint of that pad, the zone will not fill.

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

I am not sure I understand the failure case. I can easily add a footprint, then add a zone touching the pad (not over the center) and fill it. Also I can make a zone fill without anything in it. Theese zones was connected to <no net>.

Can you provide a minimal example board?

Revision history for this message
Sean Greenslade (o-sean) wrote :

Attached a small demo. There are two pins in the same net, and three zones. One is not touching anything, and does not fill. One is touching the copper of the two pins, but not the centerpoints, and does not fill. One is touching the center point of one pin, and does fill.

Tested with bzr-5410.

Revision history for this message
Tim Brooks (morphit2k) wrote :

I think I see the same issue in BZR 4027 (from the ubuntu repos).

   Zones on <no net> can be filled at any time.
   Zones on a named net can be filled if they have a footprint on that net within them.
   Zones on a named net without any connections to that net cannot be filled.

A work-around is to fill the zone with it set to <no net>, then change back to the intended net before connecting traces etc.

Revision history for this message
jean-pierre charras (jp-charras) wrote :

Asking for keeping copper areas on a named net (i.e. which should be connected) when they are unconnected has just *no sense*.
Copper areas which are not connected to something are just floating areas, not grounded or connected areas.
They are therefore removed.

Do not waste you time to explain me removing floating copper area which should be connected to something is a bug.

Keeping floating copper areas it is a bug (unless the basic rules of electronics has recently changed, but I am not aware of).

Revision history for this message
Sean Greenslade (o-sean) wrote :

I think the issue is that it is not immediately obvious _why_ the zone will not fill. Intuitively, the zone touches the copper, therefore it is connected in the designer's mind. But Kicad doesn't consider it connected unless it touches the center point of the pad.

I don't know how feasible it would be to augment the "is connected" logic to scan the whole copper area, not just the center point, but that seems like the ideal fix.

Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for KiCad because there has been no activity for 60 days.]

Changed in kicad:
status: Incomplete → Expired
Revision history for this message
Stephen (steejb) wrote :

This has troubled me also. I created a set of zones to act a solder-bridges. They have nets assigned, but will not fill.

I understand that I have to "wire" the zone to a "pad" somewhere *first* to allow the fill.

Accepted - I would eventually "wire the zone to a pad" anyway.

However:
   Why is this "work-flow/sequence" enforced? It does not appear to be a useful restriction. Why can I not fill a zone first, and later tie it to a pad?

Revision history for this message
Jan-Åke Larsson (jalar) wrote :

Aha, now I understand. It is not enough to have the zone touch a pad of the net in question. The zone must contain the reference point (the center) of the pad.

This really is counterintuitive.

Why not simply have a fill button that fills the outline created from the available space around the point selected. Include copper traces and pads of the selected net in the "available space", and of course make sure that the net in question already is present near the zone.

The copper fill function could really be improved.

Revision history for this message
Jan-Åke Larsson (jalar) wrote :

Alternatively select a trace segment and have the possibility of doing "expand to fill", filling the surrounding area.

Revision history for this message
Jan-Åke Larsson (jalar) wrote :

(I am making friendly suggestions for a faster workflow, dont take this as criticism.)

Revision history for this message
Jan-Åke Larsson (jalar) wrote :

Or create one large not-connected zone, and right-click the small part-zones that appear between the traces, and select a nearby net for that.

Revision history for this message
Jan-Åke Larsson (jalar) wrote :

Or have an easy interface to split the board into polygonal zones, and mark each zone individually: no fill, not connected zone, or specific net.

This would make it impossible to make overlapping zones, I just tried to create zones to VSS and VDD and had an unintended overlap-

Revision history for this message
Jan-Åke Larsson (jalar) wrote :

...and it works differently in legacy mode. In legacy mode I can drag corners of zones, and there is an error message if no pad is in the zone.

Please make this consistent across the whole UI.

Revision history for this message
Jan-Åke Larsson (jalar) wrote :

No, the error message tells me when I have intersecting zones. Useful, but makes for a complicated workflow.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Bug attachments

Remote bug watches

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