Skip to content

Commit 1300a7d

Browse files
authored
Merge pull request #785 from eyal0/tighten_nearly_connected
fix: Tighten merge_near_points distance threshold.
2 parents 27d0f57 + 36046e9 commit 1300a7d

27 files changed

Lines changed: 16874 additions & 16732 deletions

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,5 @@ testing/gerbv_example/*/*.svg
7979

8080
#gerberimporter_tests outputs
8181
/*.gbr.png
82+
.clangd
83+
.vscode/c_cpp_properties.json

gerberimporter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -692,7 +692,7 @@ bool layers_equivalent(const gerbv_layer_t* const layer1, const gerbv_layer_t* c
692692
mp_pair paths_to_shapes(const coordinate_type_fp& diameter, const multi_linestring_type_fp& paths, bool fill_closed_lines) {
693693
multi_linestring_type_fp new_paths(paths);
694694
if (fill_closed_lines) {
695-
if (merge_near_points(new_paths, diameter) > 0) {
695+
if (merge_near_points(new_paths, 0.0001) > 0) {
696696
cerr << "Some nearly-connected lines in the gerber input have been adjusted to properly connect" << endl;
697697
}
698698
}

merge_near_points.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ size_t merge_near_points(std::map<point_type_fp, point_type_fp>& points, const c
1313
// Merge points that are near one another. This doesn't do a
1414
// great job but it's fast enough.
1515
size_t points_merged = 0;
16-
const auto distance_2 = distance * distance;
16+
const auto distance_2 = bg::comparable_distance(point_type_fp(0,0), point_type_fp(0, distance));
1717
for (auto i = points.begin(); i != points.end(); i++) {
1818
for (auto j = i;
1919
j != points.upper_bound(point_type_fp(i->second.x()+distance,

testing/gerbv_example/edge-cuts-broken-loop/expected/outline.ngc

Lines changed: 151 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -27,145 +27,168 @@ G01 Z-0.00512 F50.00000 ( plunge. )
2727
G04 P0 ( dwell for no time -- G64 should not smooth over this point )
2828
G01 F100.00000
2929
G01 X4.55000 Y-4.15000
30-
G01 X4.74999 Y-4.15120
31-
G01 X4.74974 Y-4.15719
32-
G01 X4.74913 Y-4.16315
33-
G01 X4.74817 Y-4.16907
34-
G01 X4.74685 Y-4.17492
35-
G01 X4.74518 Y-4.18067
36-
G01 X4.74317 Y-4.18632
37-
G01 X4.74083 Y-4.19184
38-
G01 X4.73816 Y-4.19721
39-
G01 X4.73517 Y-4.20240
40-
G01 X4.73188 Y-4.20741
41-
G01 X4.72829 Y-4.21221
42-
G01 X4.72442 Y-4.21679
43-
G01 X4.72028 Y-4.22113
44-
G01 X4.71590 Y-4.22522
45-
G01 X4.71127 Y-4.22903
30+
G01 X4.75000 Y-4.15000
31+
G01 X4.74977 Y-4.15679
32+
G01 X4.74908 Y-4.16355
33+
G01 X4.74793 Y-4.17024
34+
G01 X4.74622 Y-4.17723
35+
G01 X4.74415 Y-4.18370
36+
G01 X4.74148 Y-4.19038
37+
G01 X4.73853 Y-4.19650
38+
G01 X4.73496 Y-4.20274
39+
G01 X4.73095 Y-4.20871
40+
G01 X4.72677 Y-4.21407
41+
G01 X4.72225 Y-4.21914
42+
G01 X4.71739 Y-4.22389
43+
G01 X4.71190 Y-4.22854
4644
G01 X4.70643 Y-4.23256
47-
G01 X4.70138 Y-4.23579
48-
G01 X4.69614 Y-4.23872
49-
G01 X4.69075 Y-4.24132
50-
G01 X4.68520 Y-4.24360
51-
G01 X4.67953 Y-4.24554
52-
G01 X4.67375 Y-4.24714
53-
G01 X4.66789 Y-4.24839
45+
G01 X4.70069 Y-4.23620
46+
G01 X4.69472 Y-4.23944
47+
G01 X4.69038 Y-4.24148
48+
G01 X4.68595 Y-4.24331
49+
G01 X4.68105 Y-4.24506
50+
G01 X4.67646 Y-4.24643
51+
G01 X4.67181 Y-4.24759
52+
G01 X4.66671 Y-4.24859
5453
G01 X4.66196 Y-4.24928
55-
G01 X4.65599 Y-4.24982
54+
G01 X4.65719 Y-4.24974
5655
G01 X4.65000 Y-4.25000
5756
G01 X4.55000 Y-4.25000
5857
G04 P0 ( dwell for no time -- G64 should not smooth over this point )
5958
G00 Z0.08000 ( retract )
6059

61-
G00 X4.60000 Y-3.95020 ( rapid move to begin. )
60+
G00 X4.60000 Y-3.94980 ( rapid move to begin. )
6261
G01 Z-0.00512 F50.00000 ( plunge. )
6362
G04 P0 ( dwell for no time -- G64 should not smooth over this point )
6463
G01 F100.00000
65-
G01 X4.60017 Y-3.94420
66-
G01 X4.60069 Y-3.93823
67-
G01 X4.60158 Y-3.93230
68-
G01 X4.60282 Y-3.92643
69-
G01 X4.60441 Y-3.92064
70-
G01 X4.60634 Y-3.91496
71-
G01 X4.60861 Y-3.90941
72-
G01 X4.61120 Y-3.90401
73-
G01 X4.61412 Y-3.89876
74-
G01 X4.61735 Y-3.89371
75-
G01 X4.62087 Y-3.88885
76-
G01 X4.62468 Y-3.88422
77-
G01 X4.62876 Y-3.87982
78-
G01 X4.63310 Y-3.87568
79-
G01 X4.63767 Y-3.87180
80-
G01 X4.64247 Y-3.86820
81-
G01 X4.64748 Y-3.86490
82-
G01 X4.65268 Y-3.86191
83-
G01 X4.65805 Y-3.85923
84-
G01 X4.66356 Y-3.85687
85-
G01 X4.66921 Y-3.85486
86-
G01 X4.67497 Y-3.85318
87-
G01 X4.68082 Y-3.85186
88-
G01 X4.68674 Y-3.85088
89-
G01 X4.69271 Y-3.85027
90-
G01 X4.69870 Y-3.85001
91-
G01 X4.70470 Y-3.85011
92-
G01 X4.71068 Y-3.85057
93-
G01 X4.71662 Y-3.85139
94-
G01 X4.72250 Y-3.85256
95-
G01 X4.72830 Y-3.85409
96-
G01 X4.73400 Y-3.85596
97-
G01 X4.73958 Y-3.85817
98-
G01 X4.74502 Y-3.86070
99-
G01 X4.75029 Y-3.86356
100-
G01 X4.75538 Y-3.86673
101-
G01 X4.76027 Y-3.87020
102-
G01 X4.76495 Y-3.87396
103-
G01 X4.76939 Y-3.87799
104-
G01 X4.77358 Y-3.88228
105-
G01 X4.77751 Y-3.88682
106-
G01 X4.78116 Y-3.89158
107-
G01 X4.78452 Y-3.89655
108-
G01 X4.78757 Y-3.90171
109-
G01 X4.79031 Y-3.90705
110-
G01 X4.79272 Y-3.91254
111-
G01 X4.79480 Y-3.91817
112-
G01 X4.79654 Y-3.92391
113-
G01 X4.79793 Y-3.92974
114-
G01 X4.79896 Y-3.93565
115-
G01 X4.79965 Y-3.94161
116-
G01 X4.79997 Y-3.94760
117-
G01 X4.79968 Y-3.95799
118-
G01 X4.79902 Y-3.96395
119-
G01 X4.79801 Y-3.96986
120-
G01 X4.79664 Y-3.97570
121-
G01 X4.79492 Y-3.98145
122-
G01 X4.79287 Y-3.98709
123-
G01 X4.79048 Y-3.99259
124-
G01 X4.78776 Y-3.99794
125-
G01 X4.78473 Y-4.00311
126-
G01 X4.78139 Y-4.00810
127-
G01 X4.77776 Y-4.01287
128-
G01 X4.77385 Y-4.01742
129-
G01 X4.76968 Y-4.02173
130-
G01 X4.76525 Y-4.02578
131-
G01 X4.76059 Y-4.02955
132-
G01 X4.75571 Y-4.03304
133-
G01 X4.75063 Y-4.03623
134-
G01 X4.74537 Y-4.03911
135-
G01 X4.73995 Y-4.04167
136-
G01 X4.73438 Y-4.04390
137-
G01 X4.72869 Y-4.04580
138-
G01 X4.72289 Y-4.04734
139-
G01 X4.71701 Y-4.04854
140-
G01 X4.71108 Y-4.04938
141-
G01 X4.70510 Y-4.04987
142-
G01 X4.69910 Y-4.05000
143-
G01 X4.69311 Y-4.04976
144-
G01 X4.68714 Y-4.04917
145-
G01 X4.68121 Y-4.04822
146-
G01 X4.67536 Y-4.04692
147-
G01 X4.66959 Y-4.04526
148-
G01 X4.66394 Y-4.04327
149-
G01 X4.65841 Y-4.04094
150-
G01 X4.65303 Y-4.03828
151-
G01 X4.64782 Y-4.03531
152-
G01 X4.64280 Y-4.03203
153-
G01 X4.63799 Y-4.02845
154-
G01 X4.63339 Y-4.02459
155-
G01 X4.62904 Y-4.02046
156-
G01 X4.62495 Y-4.01608
157-
G01 X4.62112 Y-4.01146
158-
G01 X4.61758 Y-4.00662
64+
G01 X4.60012 Y-3.95500
65+
G01 X4.60048 Y-3.95978
66+
G01 X4.60106 Y-3.96455
67+
G01 X4.60187 Y-3.96928
68+
G01 X4.60301 Y-3.97435
69+
G01 X4.60429 Y-3.97897
70+
G01 X4.60579 Y-3.98353
71+
G01 X4.60766 Y-3.98838
72+
G01 X4.60961 Y-3.99277
73+
G01 X4.61195 Y-3.99741
15974
G01 X4.61433 Y-4.00158
160-
G01 X4.61139 Y-3.99635
161-
G01 X4.60877 Y-3.99095
162-
G01 X4.60648 Y-3.98541
163-
G01 X4.60452 Y-3.97974
164-
G01 X4.60291 Y-3.97396
165-
G01 X4.60165 Y-3.96810
166-
G01 X4.60074 Y-3.96217
167-
G01 X4.60019 Y-3.95620
168-
G01 X4.60000 Y-3.95020
75+
G01 X4.61690 Y-4.00563
76+
G01 X4.61967 Y-4.00955
77+
G01 X4.62261 Y-4.01334
78+
G01 X4.62601 Y-4.01727
79+
G01 X4.62932 Y-4.02075
80+
G01 X4.63310 Y-4.02432
81+
G01 X4.63674 Y-4.02745
82+
G01 X4.64053 Y-4.03039
83+
G01 X4.64445 Y-4.03315
84+
G01 X4.64851 Y-4.03572
85+
G01 X4.65303 Y-4.03828
86+
G01 X4.65732 Y-4.04043
87+
G01 X4.66171 Y-4.04238
88+
G01 X4.66618 Y-4.04411
89+
G01 X4.67074 Y-4.04562
90+
G01 X4.67575 Y-4.04701
91+
G01 X4.68043 Y-4.04807
92+
G01 X4.68516 Y-4.04889
93+
G01 X4.69032 Y-4.04953
94+
G01 X4.69510 Y-4.04988
95+
G01 X4.69990 Y-4.05000
96+
G01 X4.70470 Y-4.04989
97+
G01 X4.70948 Y-4.04955
98+
G01 X4.71425 Y-4.04898
99+
G01 X4.71937 Y-4.04810
100+
G01 X4.72445 Y-4.04697
101+
G01 X4.72907 Y-4.04568
102+
G01 X4.73363 Y-4.04418
103+
G01 X4.73811 Y-4.04245
104+
G01 X4.74250 Y-4.04052
105+
G01 X4.74679 Y-4.03838
106+
G01 X4.75098 Y-4.03603
107+
G01 X4.75538 Y-4.03326
108+
G01 X4.75931 Y-4.03051
109+
G01 X4.76342 Y-4.02732
110+
G01 X4.76705 Y-4.02419
111+
G01 X4.77053 Y-4.02089
112+
G01 X4.77358 Y-4.01772
113+
G01 X4.77675 Y-4.01411
114+
G01 X4.77998 Y-4.01003
115+
G01 X4.78276 Y-4.00613
116+
G01 X4.78557 Y-4.00175
117+
G01 X4.78795 Y-3.99758
118+
G01 X4.79013 Y-3.99331
119+
G01 X4.79226 Y-3.98857
120+
G01 X4.79401 Y-3.98410
121+
G01 X4.79565 Y-3.97917
122+
G01 X4.79694 Y-3.97454
123+
G01 X4.79801 Y-3.96986
124+
G01 X4.79891 Y-3.96474
125+
G01 X4.79950 Y-3.95998
126+
G01 X4.79988 Y-3.95480
127+
G01 X4.80000 Y-3.95000
128+
G01 X4.79988 Y-3.94520
129+
G01 X4.79950 Y-3.94002
130+
G01 X4.79891 Y-3.93526
131+
G01 X4.79809 Y-3.93053
132+
G01 X4.79704 Y-3.92584
133+
G01 X4.79577 Y-3.92122
134+
G01 X4.79414 Y-3.91628
135+
G01 X4.79242 Y-3.91180
136+
G01 X4.79048 Y-3.90741
137+
G01 X4.78833 Y-3.90312
138+
G01 X4.78598 Y-3.89893
139+
G01 X4.78321 Y-3.89454
140+
G01 X4.78045 Y-3.89061
141+
G01 X4.77726 Y-3.88651
142+
G01 X4.77412 Y-3.88287
143+
G01 X4.77082 Y-3.87940
144+
G01 X4.76705 Y-3.87581
145+
G01 X4.76342 Y-3.87268
146+
G01 X4.75963 Y-3.86972
147+
G01 X4.75571 Y-3.86696
148+
G01 X4.75166 Y-3.86438
149+
G01 X4.74714 Y-3.86181
150+
G01 X4.74286 Y-3.85965
151+
G01 X4.73848 Y-3.85770
152+
G01 X4.73400 Y-3.85596
153+
G01 X4.72945 Y-3.85444
154+
G01 X4.72483 Y-3.85313
155+
G01 X4.72016 Y-3.85205
156+
G01 X4.71544 Y-3.85120
157+
G01 X4.71028 Y-3.85053
158+
G01 X4.70510 Y-3.85013
159+
G01 X4.70030 Y-3.85000
160+
G01 X4.69510 Y-3.85012
161+
G01 X4.69032 Y-3.85047
162+
G01 X4.68516 Y-3.85111
163+
G01 X4.68043 Y-3.85193
164+
G01 X4.67575 Y-3.85298
165+
G01 X4.67074 Y-3.85438
166+
G01 X4.66618 Y-3.85589
167+
G01 X4.66171 Y-3.85762
168+
G01 X4.65732 Y-3.85956
169+
G01 X4.65303 Y-3.86172
170+
G01 X4.64851 Y-3.86428
171+
G01 X4.64445 Y-3.86685
172+
G01 X4.64053 Y-3.86961
173+
G01 X4.63674 Y-3.87255
174+
G01 X4.63310 Y-3.87568
175+
G01 X4.62932 Y-3.87925
176+
G01 X4.62601 Y-3.88273
177+
G01 X4.62261 Y-3.88666
178+
G01 X4.61967 Y-3.89045
179+
G01 X4.61690 Y-3.89437
180+
G01 X4.61433 Y-3.89842
181+
G01 X4.61195 Y-3.90259
182+
G01 X4.60961 Y-3.90723
183+
G01 X4.60766 Y-3.91162
184+
G01 X4.60579 Y-3.91647
185+
G01 X4.60429 Y-3.92103
186+
G01 X4.60301 Y-3.92565
187+
G01 X4.60195 Y-3.93033
188+
G01 X4.60106 Y-3.93545
189+
G01 X4.60048 Y-3.94022
190+
G01 X4.60012 Y-3.94500
191+
G01 X4.60000 Y-3.94980
169192

170193
G04 P0 ( dwell for no time -- G64 should not smooth over this point )
171194
G00 Z1.000000 ( retract )

testing/gerbv_example/edge-cuts-broken-loop/expected/outp0_original_outline.svg

Lines changed: 2 additions & 2 deletions
Loading

0 commit comments

Comments
 (0)