Mailing list archives : pcb-rnd

ID:3843
From:ge...@igor2.repo.hu
Date:Mon, 16 Mar 2020 05:46:10 +0100 (CET)
Subject:Re: [pcb-rnd] connectivity bug -> fullpoly again
in-reply-to:3838 from Britton Kerin <br...@gmail.com>
replies: 3900 from ge...@igor2.repo.hu , 3907 from Britton Kerin <br...@gmail.com>
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
 
--0-385430316-1584333970=:2358
Content-Type: TEXT/PLAIN; charset=US-ASCII
 
Hi Britton,
 
On Sun, 15 Mar 2020, Britton Kerin wrote:
 
>Stitched polygons are probably the culprit as usual, but I have no
>idea how.  Somehow adding one trace in one place (the big fat one
>above the 2x3 header near the middle of the board) causes connectivity
>to be missed elsewhere.  I've attached screenshots showing
>connectivity ok and missed, and .pcb files (pcb format) also.
>
>pcb version 4.2.0 exhibits the same behavior.
 
Thanks, managed to narrow it down.
 
Attached is the minimal test case that causes the problem, which is 
clearly caused by the legacy "full poly" setting. Do a {c f} on the thick 
line segment on the top and/or the top side of the poly - there will be no 
connection. 
 
The reason is simple: a known limitation of the code which turns into a 
rendering bug that is called the "fullpoly setting". When doing a 
connectivity walk of the data, you can take it as a normal search 
algorithm on a graph. Nodes of the graph are board objects, e.g. lines or 
polygons, edges are whether they overlap geometrically in our 2.5d space 
or not. 
 
In this graph a node is either marked (as galvanically connected) or not. 
There are no split nodes that are marked partly, e.g. through all edges 
going out to a specific direction of the node but not through other edges. 
The same, speaking in the geometry domain: a board object is either 
connected or not, there's no object that can have multiple parts, some 
parts connected, others not.
 
And that's where the full poly troll comes in: if you cut your polygon in 
half, like you did on your board with the thick line, you create two 
disconnected islands. Those should be handled as separate connectivity 
nodes in the graph, while they are really the very same object. This 
causes a lot of trouble.
 
Now we have two independent bugs about this:
 
bug#1: if you {c f} on either half of the cut polygon in my example 
file, you sill see the other half is marked too. This is clearly wrong, as 
there's no connection between the two parts. But we can't do that, because 
the whole polygon is a single object, a single node in the above graph. 
This is not something we want to fix, we rather want to get rid of the 
fullpoly flag, because in its current form it's just a bad idea (see 
below at section V).
 
bug#2: there's always a 'first island', which is the only island for the 
non-fullpoly polygon (which is the largest area island in that case). In 
the fullpoly case, there may be further islands. Most of the code, like 
the connectivity code will unfortunately look only for the first islandd 
(which can be considered as a bug we want to fix).
 
Ok, the bright side now:
 
I. Quick workaround on the sepcific case
 
1. Go over the poly at 90mm;49mm
 
2. Right click, edit flags
 
3. untick the full polygon flag
 
4. draw a new polygon on the now removed upper section
 
(Of course with this you will have the same problem again when you cut 
another polygon of yours in half - since all your polygons seem to have 
the full poly flag)
 
II. Quick workaround, generic, CLI
 
1. execute this action to select all affected polygons:
 
query(select, @.p.flag.fullpoly == 1)
 
2. remove the fullpoly flag from all selected objects at once using the 
following action:
 
propset(selection, p/flags/fullpoly, 0)
 
3. draw new polygons to patch the gaps
 
III. Quick workaround, generic, GUI
 
1. use the advanced search from the menu or pressing {s s} 
 
2. click on the 'E' button of the first expression (labelled <edit me>)
 
3. in the tree, open the flag subtree on the bottom, select fullpoly, then 
'==' the middle and '1' on the right
 
4. click ok, the expr edit dialog closes and you get back the advanced 
search dialog with the expresison of II/1 filled in and action combo box 
set to 'select'. Click on 'apply' and it will execute the expression.
 
5. execute the propedit action; this will bring up an aggregated list of 
properties of all selected objects
 
6. navigate to p/flags/fullpoly in the tree on the left, this will show 
the current value on the right (checkbox ticked in)
 
7. untick the checkbox on the right and click 'apply' -> this will unify 
the fullpoly flag on all currently selected object to false. You should 
see the result immediately both in the propedit dialog and on your board.
 
8. just like II/3.: draw missing polys to patch the gaps.
 
(8 steps... Sorry, the CLI is always more efficient than the GUI, hehe)
 
IV. long term solution, user side
 
Do not ever use the fullpoly flag. That simple. That feature is and always 
has been just broken b design. A typical feature that leaked in over the 
decades and looked like a good idea first but caused a lot of trouble 
later. The guy who implemented it probably didn't really think over all 
consequences in all parts of the code, but focused on how it was possible 
in the poly code. So the result is that the poly code and rendering 
handles it properly but pretty much everything else breaks on it. 
 
Plus if any user wants to write an user script dealing with board data, 
there's a 99% chance he will forget about multi-island full-polys. So it's 
hardwired in the system that we will just have more and more of bugs like 
these.
 
Your top layer is already a patchwork of polygons. You have 40 polygons 
just on that onbe layer already. A few extra polygons after removing 
fullpoly won't really make a diff.
 
 
V. long temr solution, developer side
 
The fullpoly flag is a dangerous thing that should not be used by users 
and should be removed from the code. In fact I should just remove it 
imediately - except that I can't because it would break compatibility with 
the obsolete pcb format....
 
So the plan is this:
 
1. I will code an extended object, probably called pour, that will take 
over the role of the fullpoly flag. It will be somewhat similar to the 
full poly thing, except that it will really create and maintain separate 
polygon objects for the islands, removing a huge complication from the 
code (by allowing all parts of the code to assume one object is one 
object). With this, you will get about the same functionality as with full 
poly today, except it won't suffer from bug#1 or bug#2
 
2. I also have plans about a minor data model upgrade to support 
polygon-side clearance values; this would help us a lot in compatibility 
to EDA tools that really matter on the market (eagle and kicad) as it 
would help us reproduce their global or "zone" based clearance mechanism. 
I already know how to do this cheap and without breaking any compatibility 
with our current data model.
 
3. In the same time I will mark the fullpoly flag deprecated. This means 
whenever pcb-rnd meets it, a warning will be thrown and a link to 'how to 
switch to the pour extended object' will be included.
 
4. independently of the above effort, I will look at whether I canfix 
bug#2 for cheap. If yes, I will probably do that. But since I absolutely 
do not want to fix bug#1 because of the simpler plans on the pour 
extended object, the outcome of bug#2 decision will not affect the above 
3.
 
(I am going to add this plan to the feature deprecation page)
 
Best regards,
 
Igor2
 
--0-385430316-1584333970=:2358
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=fullpoly.lht
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.DEB.2.00.2003160546100.2358@igor2priv>
Content-Description: 
Content-Disposition: attachment; filename=fullpoly.lht
 
aGE6cGNiLXJuZC1ib2FyZC12NiB7DQoNCiBsaTpzdHlsZXMgew0KICAgaGE6
U2lnbmFsIHsNCiAgICBkaWFtZXRlciA9IDIuMG1tDQogICAgdGV4dF9zY2Fs
ZSA9IDANCiAgICB0ZXh0X3RoaWNrID0gMC4wDQogICAgdGhpY2tuZXNzID0g
MTAuMG1pbA0KICAgIGhvbGUgPSAzMS41bWlsDQogICAgY2xlYXJhbmNlID0g
MjAuMG1pbA0KICAgfQ0KICAgaGE6UG93ZXIgew0KICAgIGRpYW1ldGVyID0g
Mi4ybW0NCiAgICB0ZXh0X3NjYWxlID0gMA0KICAgIHRleHRfdGhpY2sgPSAw
LjANCiAgICB0aGlja25lc3MgPSAyMC4wbWlsDQogICAgaG9sZSA9IDEuMG1t
DQogICAgY2xlYXJhbmNlID0gMjAuMG1pbA0KICAgfQ0KICAgaGE6RmF0IHsN
CiAgICBkaWFtZXRlciA9IDEzNy44bWlsDQogICAgdGV4dF9zY2FsZSA9IDAN
CiAgICB0ZXh0X3RoaWNrID0gMC4wDQogICAgdGhpY2tuZXNzID0gODAuMG1p
bA0KICAgIGhvbGUgPSA0Ny4yNG1pbA0KICAgIGNsZWFyYW5jZSA9IDI1LjBt
aWwNCiAgIH0NCiAgIGhhOlNpZy10aWdodCB7DQogICAgZGlhbWV0ZXIgPSA2
NC4wbWlsDQogICAgdGV4dF9zY2FsZSA9IDANCiAgICB0ZXh0X3RoaWNrID0g
MC4wDQogICAgdGhpY2tuZXNzID0gMTAuMG1pbA0KICAgIGhvbGUgPSAzMS41
bWlsDQogICAgY2xlYXJhbmNlID0gMTIuMG1pbA0KICAgfQ0KIH0NCg0KIGhh
Om1ldGEgew0KICAgaGE6c2l6ZSB7DQogICAgdGhlcm1hbF9zY2FsZSA9IDAu
NTAwMDAwDQogICAgeCA9IDc3NS4wbWlsDQogICAgeSA9IDEuOWluDQogICB9
DQogICBoYTpncmlkIHsNCiAgICBzcGFjaW5nID0gMjUuMG1pbA0KICAgIG9m
ZnNfeCA9IDAuMA0KICAgIG9mZnNfeSA9IDAuMA0KICAgfQ0KIH0NCg0KIGhh
OmRhdGEgew0KICBsaTpwYWRzdGFja19wcm90b3R5cGVzIHsNCiAgfQ0KDQog
ICBsaTpvYmplY3RzIHsNCiAgIH0NCiAgIGxpOmxheWVycyB7DQoNCiAgICBo
YTp0b3Atc2lnIHsNCiAgICAgbGlkPTANCiAgICAgZ3JvdXA9Mw0KICAgICBo
YTpjb21iaW5pbmcgeyAgICAgfQ0KDQogICAgICBoYTphdHRyaWJ1dGVzIHsN
CiAgICAgICAge3BjYi1ybmQ6OmtleTo6dmlzfT17PEtleT5sOyBTaGlmdDxL
ZXk+dH0NCiAgICAgICAge3BjYi1ybmQ6OmtleTo6c2VsZWN0fT17PEtleT5s
OyA8S2V5PnR9DQogICAgICB9DQoNCiAgICAgIGxpOm9iamVjdHMgew0KICAg
ICAgIGhhOmxpbmUuMTAgew0KICAgICAgICB4MT03NS4wbWlsOyB5MT0xMDAw
LjBtaWw7IHgyPTcwMC4wbWlsOyB5Mj0xMDAwLjBtaWw7IHRoaWNrbmVzcz0x
MC4wbWlsOyBjbGVhcmFuY2U9NDAuMG1pbDsNCiAgICAgICAgaGE6ZmxhZ3Mg
ew0KICAgICAgICAgY2xlYXJsaW5lPTENCiAgICAgICAgfQ0KICAgICAgIH0N
CiAgICAgICBoYTpsaW5lLjEzIHsNCiAgICAgICAgeDE9MzUwLjBtaWw7IHkx
PTM3NS4wbWlsOyB4Mj0zNTAuMG1pbDsgeTI9MTAwLjBtaWw7IHRoaWNrbmVz
cz04MC4wbWlsOyBjbGVhcmFuY2U9NTAuMG1pbDsNCiAgICAgICB9DQogICAg
ICAgaGE6cG9seWdvbi41IHsgY2xlYXJhbmNlPTQwLjBtaWw7DQogICAgICAg
IGxpOmdlb21ldHJ5IHsNCiAgICAgICAgICB0YTpjb250b3VyIHsNCiAgICAg
ICAgICAgeyAxNTAuMG1pbDsgMzAwLjBtaWwgfQ0KICAgICAgICAgICB7IDUw
MC4wbWlsOyAzMDAuMG1pbCB9DQogICAgICAgICAgIHsgNTAwLjBtaWw7IDQ2
Ljk5bW0gfQ0KICAgICAgICAgICB7IDE1MC4wbWlsOyA0Ni45OW1tIH0NCiAg
ICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBoYTpmbGFncyB7DQog
ICAgICAgICBmdWxscG9seT0xDQogICAgICAgICBjbGVhcnBvbHk9MQ0KICAg
ICAgICB9DQogICAgICAgfQ0KICAgICAgfQ0KICAgICAgY29sb3IgPSB7Izhi
MjMyM30NCiAgICB9DQoNCiAgICBoYTpib3R0b20tc2lnIHsNCiAgICAgbGlk
PTENCiAgICAgZ3JvdXA9MTANCiAgICAgaGE6Y29tYmluaW5nIHsgICAgIH0N
Cg0KICAgICAgaGE6YXR0cmlidXRlcyB7DQogICAgICAgIHtwY2Itcm5kOjpr
ZXk6OnZpc309ezxLZXk+bDsgU2hpZnQ8S2V5PmJ9DQogICAgICAgIHtwY2It
cm5kOjprZXk6OnNlbGVjdH09ezxLZXk+bDsgPEtleT5ifQ0KICAgICAgfQ0K
DQogICAgICBsaTpvYmplY3RzIHsNCiAgICAgIH0NCiAgICAgIGNvbG9yID0g
eyMzYTVmY2R9DQogICAgfQ0KDQogICAgaGE6dG9wLWduZCB7DQogICAgIGxp
ZD0yDQogICAgIGdyb3VwPTMNCiAgICAgaGE6Y29tYmluaW5nIHsgICAgIH0N
Cg0KICAgICAgbGk6b2JqZWN0cyB7DQogICAgICB9DQogICAgICBjb2xvciA9
IHsjMTA0ZThifQ0KICAgIH0NCg0KICAgIGhhOmJvdHRvbS1nbmQgew0KICAg
ICBsaWQ9Mw0KICAgICBncm91cD0xMA0KICAgICBoYTpjb21iaW5pbmcgeyAg
ICAgfQ0KDQogICAgICBsaTpvYmplY3RzIHsNCiAgICAgIH0NCiAgICAgIGNv
bG9yID0geyNjZDM3MDB9DQogICAgfQ0KDQogICAgaGE6aW50LXNpZzIgew0K
ICAgICBsaWQ9NA0KICAgICBncm91cD03DQogICAgIGhhOmNvbWJpbmluZyB7
ICAgICB9DQoNCiAgICAgIGhhOmF0dHJpYnV0ZXMgew0KICAgICAgICB7cGNi
LXJuZDo6a2V5Ojp2aXN9PXs8S2V5Pmw7IFNoaWZ0PEtleT5pfQ0KICAgICAg
ICB7cGNiLXJuZDo6a2V5OjpzZWxlY3R9PXs8S2V5Pmw7IDxLZXk+aX0NCiAg
ICAgIH0NCg0KICAgICAgbGk6b2JqZWN0cyB7DQogICAgICB9DQogICAgICBj
b2xvciA9IHsjNTQ4YjU0fQ0KICAgIH0NCg0KICAgIGhhOmludC1zaWcxIHsN
CiAgICAgbGlkPTUNCiAgICAgZ3JvdXA9NQ0KICAgICBoYTpjb21iaW5pbmcg
eyAgICAgfQ0KDQogICAgICBoYTphdHRyaWJ1dGVzIHsNCiAgICAgICAge3Bj
Yi1ybmQ6OmtleTo6dmlzfT17PEtleT5sOyBTaGlmdDxLZXk+b30NCiAgICAg
ICAge3BjYi1ybmQ6OmtleTo6c2VsZWN0fT17PEtleT5sOyA8S2V5Pm99DQog
ICAgICB9DQoNCiAgICAgIGxpOm9iamVjdHMgew0KICAgICAgfQ0KICAgICAg
Y29sb3IgPSB7IzhiNzM1NX0NCiAgICB9DQoNCiAgICBoYTpvdXRsaW5lIHsN
CiAgICAgbGlkPTYNCiAgICAgZ3JvdXA9OQ0KICAgICBoYTpjb21iaW5pbmcg
eyAgICAgfQ0KDQogICAgICBsaTpvYmplY3RzIHsNCiAgICAgIH0NCiAgICAg
IGNvbG9yID0geyMwMDg2OGJ9DQogICAgfQ0KDQogICAgaGE6Ym90dG9tLXNp
bGsgew0KICAgICBsaWQ9Nw0KICAgICBncm91cD0xMg0KICAgICBoYTpjb21i
aW5pbmcgeyBhdXRvPTE7ICAgICB9DQoNCiAgICAgIGhhOmF0dHJpYnV0ZXMg
ew0KICAgICAgICB7cGNiLXJuZDo6a2V5Ojp2aXN9PXs8S2V5Pmw7IFNoaWZ0
PEtleT54fQ0KICAgICAgICB7cGNiLXJuZDo6a2V5OjpzZWxlY3R9PXs8S2V5
Pmw7IDxLZXk+eH0NCiAgICAgIH0NCg0KICAgICAgbGk6b2JqZWN0cyB7DQog
ICAgICB9DQogICAgICBjb2xvciA9IHsjMDAwMDAwfQ0KICAgIH0NCg0KICAg
IGhhOnRvcC1zaWxrIHsNCiAgICAgbGlkPTgNCiAgICAgZ3JvdXA9MQ0KICAg
ICBoYTpjb21iaW5pbmcgeyBhdXRvPTE7ICAgICB9DQoNCiAgICAgIGhhOmF0
dHJpYnV0ZXMgew0KICAgICAgICB7cGNiLXJuZDo6a2V5Ojp2aXN9PXs8S2V5
Pmw7IFNoaWZ0PEtleT5zfQ0KICAgICAgICB7cGNiLXJuZDo6a2V5OjpzZWxl
Y3R9PXs8S2V5Pmw7IDxLZXk+c30NCiAgICAgIH0NCg0KICAgICAgbGk6b2Jq
ZWN0cyB7DQogICAgICB9DQogICAgICBjb2xvciA9IHsjMDAwMDAwfQ0KICAg
IH0NCg0KICAgIGhhOnRvcC1wYXN0ZSB7DQogICAgIGxpZD05DQogICAgIGdy
b3VwPTANCiAgICAgaGE6Y29tYmluaW5nIHsgYXV0bz0xOyAgICAgfQ0KDQog
ICAgICBsaTpvYmplY3RzIHsNCiAgICAgIH0NCiAgICAgIGNvbG9yID0geyNj
ZDAwY2R9DQogICAgfQ0KDQogICAgaGE6dG9wLW1hc2sgew0KICAgICBsaWQ9
MTANCiAgICAgZ3JvdXA9Mg0KICAgICBoYTpjb21iaW5pbmcgeyBzdWI9MTsg
YXV0bz0xOyAgICAgfQ0KDQogICAgICBsaTpvYmplY3RzIHsNCiAgICAgIH0N
CiAgICAgIGNvbG9yID0geyNmZjAwMDB9DQogICAgfQ0KDQogICAgaGE6Ym90
dG9tLW1hc2sgew0KICAgICBsaWQ9MTENCiAgICAgZ3JvdXA9MTENCiAgICAg
aGE6Y29tYmluaW5nIHsgc3ViPTE7IGF1dG89MTsgICAgIH0NCg0KICAgICAg
bGk6b2JqZWN0cyB7DQogICAgICB9DQogICAgICBjb2xvciA9IHsjZmYwMDAw
fQ0KICAgIH0NCg0KICAgIGhhOmJvdHRvbS1wYXN0ZSB7DQogICAgIGxpZD0x
Mg0KICAgICBncm91cD0xMw0KICAgICBoYTpjb21iaW5pbmcgeyBhdXRvPTE7
ICAgICB9DQoNCiAgICAgIGxpOm9iamVjdHMgew0KICAgICAgfQ0KICAgICAg
Y29sb3IgPSB7I2NkMDBjZH0NCiAgICB9DQoNCiAgICBoYTpzbG90LXBsYXRl
ZCB7DQogICAgIGxpZD0xMw0KICAgICBncm91cD0xNA0KICAgICBoYTpjb21i
aW5pbmcgeyBhdXRvPTE7ICAgICB9DQoNCiAgICAgIGxpOm9iamVjdHMgew0K
ICAgICAgfQ0KICAgICAgY29sb3IgPSB7IzhiNzM1NX0NCiAgICB9DQoNCiAg
ICBoYTpzbG90LXVucGxhdGVkIHsNCiAgICAgbGlkPTE0DQogICAgIGdyb3Vw
PTE1DQogICAgIGhhOmNvbWJpbmluZyB7IGF1dG89MTsgICAgIH0NCg0KICAg
ICAgbGk6b2JqZWN0cyB7DQogICAgICB9DQogICAgICBjb2xvciA9IHsjMDA4
NjhifQ0KICAgIH0NCg0KICAgIGhhOnRvcC1hc3N5IHsNCiAgICAgbGlkPTE1
DQogICAgIGdyb3VwPTE2DQogICAgIGhhOmNvbWJpbmluZyB7ICAgICB9DQoN
CiAgICAgIGxpOm9iamVjdHMgew0KICAgICAgfQ0KICAgICAgY29sb3IgPSB7
IzQ0NDQ0NH0NCiAgICB9DQoNCiAgICBoYTpib3QtYXNzeSB7DQogICAgIGxp
ZD0xNg0KICAgICBncm91cD0xNw0KICAgICBoYTpjb21iaW5pbmcgeyAgICAg
fQ0KDQogICAgICBsaTpvYmplY3RzIHsNCiAgICAgIH0NCiAgICAgIGNvbG9y
ID0geyM0NDQ0NDR9DQogICAgfQ0KDQogICAgaGE6ZmFiIHsNCiAgICAgbGlk
PTE3DQogICAgIGdyb3VwPTE4DQogICAgIGhhOmNvbWJpbmluZyB7IGF1dG89
MTsgICAgIH0NCg0KICAgICAgbGk6b2JqZWN0cyB7DQogICAgICB9DQogICAg
ICBjb2xvciA9IHsjMjIyMjIyfQ0KICAgIH0NCiAgIH0NCiB9DQogaGE6bGF5
ZXJfc3RhY2sgew0KICBsaTpncm91cHMgew0KICAgaGE6MCB7DQogICAgbmFt
ZSA9IHRvcF9wYXN0ZQ0KICAgIGhhOnR5cGUgeyB0b3A9MTsgcGFzdGU9MTsg
ICAgfQ0KICAgIGxpOmxheWVycyB7IDk7ICAgIH0NCiAgIH0NCiAgIGhhOjEg
ew0KICAgIG5hbWUgPSB0b3Bfc2lsaw0KICAgIGhhOnR5cGUgeyBzaWxrPTE7
IHRvcD0xOyAgICB9DQogICAgbGk6bGF5ZXJzIHsgODsgICAgfQ0KICAgfQ0K
ICAgaGE6MiB7DQogICAgbmFtZSA9IHRvcF9tYXNrDQogICAgaGE6dHlwZSB7
IHRvcD0xOyBtYXNrPTE7ICAgIH0NCiAgICBsaTpsYXllcnMgeyAxMDsgICAg
fQ0KICAgfQ0KICAgaGE6MyB7DQogICAgbmFtZSA9IHRvcF9jb3BwZXINCiAg
ICBoYTp0eXBlIHsgY29wcGVyPTE7IHRvcD0xOyAgICB9DQogICAgbGk6bGF5
ZXJzIHsgMDsgMjsgICAgfQ0KICAgfQ0KICAgaGE6NCB7DQogICAgbmFtZSA9
IGdycF80DQogICAgaGE6dHlwZSB7IHN1YnN0cmF0ZT0xOyBpbnRlcm49MTsg
ICAgfQ0KICAgIGxpOmxheWVycyB7ICAgIH0NCiAgICBoYTphdHRyaWJ1dGVz
IHsNCiAgICAgdGhpY2tuZXNzPXswLjczNzVtbSB9DQogICAgfQ0KICAgfQ0K
ICAgaGE6NSB7DQogICAgbmFtZSA9IEludGVybg0KICAgIGhhOnR5cGUgeyBj
b3BwZXI9MTsgaW50ZXJuPTE7ICAgIH0NCiAgICBsaTpsYXllcnMgeyA1OyAg
ICB9DQogICB9DQogICBoYTo2IHsNCiAgICBuYW1lID0gZ3JwXzYNCiAgICBo
YTp0eXBlIHsgc3Vic3RyYXRlPTE7IGludGVybj0xOyAgICB9DQogICAgbGk6
bGF5ZXJzIHsgICAgfQ0KICAgIGhhOmF0dHJpYnV0ZXMgew0KICAgICB0aGlj
a25lc3M9ezAuMTI1bW0gfQ0KICAgIH0NCiAgIH0NCiAgIGhhOjcgew0KICAg
IG5hbWUgPSBJbnRlcm4NCiAgICBoYTp0eXBlIHsgY29wcGVyPTE7IGludGVy
bj0xOyAgICB9DQogICAgbGk6bGF5ZXJzIHsgNDsgICAgfQ0KICAgfQ0KICAg
aGE6OCB7DQogICAgbmFtZSA9IGdycF84DQogICAgaGE6dHlwZSB7IHN1YnN0
cmF0ZT0xOyBpbnRlcm49MTsgICAgfQ0KICAgIGxpOmxheWVycyB7ICAgIH0N
CiAgICBoYTphdHRyaWJ1dGVzIHsNCiAgICAgdGhpY2tuZXNzPXswLjczNzVt
bSB9DQogICAgfQ0KICAgfQ0KICAgaGE6OSB7DQogICAgbmFtZSA9IGdsb2Jh
bF9vdXRsaW5lDQogICAgaGE6dHlwZSB7IGJvdW5kYXJ5PTE7ICAgIH0NCiAg
ICBsaTpsYXllcnMgeyA2OyAgICB9DQogICAgcHVycG9zZSA9IHVyb3V0ZQ0K
ICAgfQ0KICAgaGE6MTAgew0KICAgIG5hbWUgPSBib3R0b21fY29wcGVyDQog
ICAgaGE6dHlwZSB7IGJvdHRvbT0xOyBjb3BwZXI9MTsgICAgfQ0KICAgIGxp
OmxheWVycyB7IDE7IDM7ICAgIH0NCiAgIH0NCiAgIGhhOjExIHsNCiAgICBu
YW1lID0gYm90dG9tX21hc2sNCiAgICBoYTp0eXBlIHsgYm90dG9tPTE7IG1h
c2s9MTsgICAgfQ0KICAgIGxpOmxheWVycyB7IDExOyAgICB9DQogICB9DQog
ICBoYToxMiB7DQogICAgbmFtZSA9IGJvdHRvbV9zaWxrDQogICAgaGE6dHlw
ZSB7IHNpbGs9MTsgYm90dG9tPTE7ICAgIH0NCiAgICBsaTpsYXllcnMgeyA3
OyAgICB9DQogICB9DQogICBoYToxMyB7DQogICAgbmFtZSA9IGJvdHRvbV9w
YXN0ZQ0KICAgIGhhOnR5cGUgeyBib3R0b209MTsgcGFzdGU9MTsgICAgfQ0K
ICAgIGxpOmxheWVycyB7IDEyOyAgICB9DQogICB9DQogICBoYToxNCB7DQog
ICAgbmFtZSA9IHBtZWNoDQogICAgaGE6dHlwZSB7IG1lY2g9MTsgICAgfQ0K
ICAgIGxpOmxheWVycyB7IDEzOyAgICB9DQogICAgcHVycG9zZSA9IHByb3V0
ZQ0KICAgfQ0KICAgaGE6MTUgew0KICAgIG5hbWUgPSB1bWVjaA0KICAgIGhh
OnR5cGUgeyBtZWNoPTE7ICAgIH0NCiAgICBsaTpsYXllcnMgeyAxNDsgICAg
fQ0KICAgIHB1cnBvc2UgPSB1cm91dGUNCiAgIH0NCiAgIGhhOjE2IHsNCiAg
ICBuYW1lID0gdG9wX2Fzc3kNCiAgICBoYTp0eXBlIHsgdG9wPTE7IGRvYz0x
OyAgICB9DQogICAgbGk6bGF5ZXJzIHsgMTU7ICAgIH0NCiAgICBoYTphdHRy
aWJ1dGVzIHsNCiAgICAgaW5pdC1pbnZpcz0xDQogICAgfQ0KICAgIHB1cnBv
c2UgPSBhc3N5DQogICB9DQogICBoYToxNyB7DQogICAgbmFtZSA9IGJvdF9h
c3N5DQogICAgaGE6dHlwZSB7IGJvdHRvbT0xOyBkb2M9MTsgICAgfQ0KICAg
IGxpOmxheWVycyB7IDE2OyAgICB9DQogICAgaGE6YXR0cmlidXRlcyB7DQog
ICAgIGluaXQtaW52aXM9MQ0KICAgIH0NCiAgICBwdXJwb3NlID0gYXNzeQ0K
ICAgfQ0KICAgaGE6MTggew0KICAgIG5hbWUgPSBmYWINCiAgICBoYTp0eXBl
IHsgdG9wPTE7IGRvYz0xOyAgICB9DQogICAgbGk6bGF5ZXJzIHsgMTc7ICAg
IH0NCiAgICBoYTphdHRyaWJ1dGVzIHsNCiAgICAgaW5pdC1pbnZpcz0xDQog
ICAgfQ0KICAgIHB1cnBvc2UgPSBmYWINCiAgIH0NCiAgfQ0KIH0NCiBsaTpw
Y2Itcm5kLWNvbmYtdjEgew0KICBoYTpvdmVyd3JpdGUgew0KICAgaGE6ZGVz
aWduIHsNCiAgICB0ZXh0X2ZvbnRfaWQgPSAwDQogICAgdGV4dF9zY2FsZSA9
IDEwMA0KICAgIHZpYV90aGlja25lc3MgPSAxMzcuODAgbWlsDQogICAgdmlh
X2RyaWxsaW5nX2hvbGUgPSA0Ny4yNCBtaWwNCiAgICB0ZXh0X3RoaWNrbmVz
cyA9IDANCiAgICBsaW5lX3RoaWNrbmVzcyA9IDgwLjAwIG1pbA0KICAgIGNs
ZWFyYW5jZSA9IDI1LjAwIG1pbA0KICAgfQ0KICAgaGE6ZWRpdG9yIHsNCiAg
IH0NCiAgfQ0KIH0NCn0NCg==
 
--0-385430316-1584333970=:2358--
 

Reply subtree:
3843 Re: [pcb-rnd] connectivity bug -> fullpoly again from ge...@igor2.repo.hu
  3900 Re: [pcb-rnd] connectivity bug -> fullpoly again from ge...@igor2.repo.hu
  3907 Re: [pcb-rnd] connectivity bug -> fullpoly again from Britton Kerin <br...@gmail.com>
    3911 Re: [pcb-rnd] connectivity bug -> fullpoly again from ge...@igor2.repo.hu