Ian McInerney
e6632bb983
Rename PCB IO classes/files
2023-12-24 01:22:21 +00:00
Ian McInerney
d8b47d18d3
Initial rename of file plugin infrastructure components to IO
2023-12-24 01:22:21 +00:00
Jeff Young
687389224e
Do a more complete search for a coupled net.
...
In particular, don't bail out if the starting seg is part
of a tuning pattern meander or a user-authored non-coupled
segment to get to a via or something).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16380
2023-12-23 23:43:12 +00:00
Jeff Young
ee0fff97f9
Cleanup formatting and remove dead code.
2023-12-21 22:06:59 +00:00
Jon Evans
c1eef79119
Fix off-by-one error in setting depth
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16421
2023-12-21 08:31:47 -05:00
Jeff Young
d155870275
Sometimes use grid (instead of clearance) for slop radius.
...
This is particularly important both when very large grids
are in use, and when the router hasn't been initialized
with a net yet (ie: in hover mode) and the board clearance
is set to 0.
https://forum.kicad.info/t/new-track-start-position-problem-on-kicad-7-0-10-rc1/47006
2023-12-21 12:58:58 +00:00
Jon Evans
76d1cc8150
Cleanup
2023-12-19 22:43:15 -05:00
Jon Evans
1c895fe18c
Improve rendering of tuning status popup
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16304
Add dedicated UI rendering layers
Switch to screen-space rendering to avoid blurriness
Fix a bug in OpenGL GAL that causes layer
ordering to be broken when using Scale
Fix some issues with VIEW_GROUP layer ordering
2023-12-19 22:38:21 -05:00
Jeff Young
24846d3f44
Repair earlier fix for VVIAs.
2023-12-19 16:48:01 +00:00
Jeff Young
c7facfd4d4
remove unused variables
2023-12-18 18:54:47 +00:00
Jeff Young
1c73d3d967
nullptr safety
2023-12-18 18:36:14 +00:00
Jeff Young
e4baf877c8
performance efficiencies
2023-12-18 18:36:02 +00:00
Jeff Young
3b36307425
Remove shadowed variable.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16363
2023-12-18 14:24:04 +00:00
Alex Shvartzkop
c5ac2337e4
PNS mitering: construct arcs from start, end, angle.
...
Previously, arc endpoint and expected miter endpoint could differ,
causing very small loops later on.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16360
2023-12-17 05:47:07 +03:00
Jeff Young
de070a1d62
Watch out for VVIAs.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16339
2023-12-12 15:45:13 +00:00
Jon Evans
47ab6f8d03
Set default netclass for newly-added no-net PNS items
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16144
2023-12-10 22:59:36 -05:00
Jeff Young
931cec862e
Non-plated slots are effectively edges.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16267
2023-12-09 21:06:40 +00:00
Jeff Young
e0a34efcb7
Use a more self-documenting API for router preview item flags.
...
Also fixes a bug where rule areas were drawn with solid fills.
2023-12-08 16:02:15 +00:00
Mike Williams
2795fa9ca3
EE/PCB_Actions: convert to generic Finish
...
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16079
2023-12-06 10:33:17 -05:00
Jeff Young
a1b514bcba
Update message panel after switching layers.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16247
2023-12-03 17:07:08 +00:00
Jeff Young
ff9d834e31
Don't use epsilon when calculating pushout force in dp placer.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16210
2023-12-03 16:58:41 +00:00
Jeff Young
b13590f4c0
Use preview items instead of highlightNets & status popup
...
The router preview item can be specific to the part that is being
tuned, rather than the whole net. It's also less visually noisy as
it doesn't dim/undim the rest of the board.
Using kigfx preview items for the status keeps us from having a bunch
of focus issues with the status popup window.
2023-12-02 16:15:43 +00:00
Alex Shvartzkop
2d9eee93e2
Fixes for length tuning patterns.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16198
2023-12-01 08:44:10 +03:00
Alex Shvartzkop
7eb98a9863
Fixes for tuning patterns and router.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16160
2023-11-28 20:55:39 +03:00
Seth Hillbrand
e1b428609d
Rewrite followTrivialPath as iterative
...
Remove the recursion that causes stack crash and add an
additional check for if we have already seen either the
current link or the last link before adding them to the line
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16185
2023-11-28 06:57:50 -08:00
jean-pierre charras
15c7f224b3
Protect against null pointer
...
Fixes #16172
https://gitlab.com/kicad/code/kicad/-/issues/16172
2023-11-27 09:52:18 +01:00
Jeff Young
b6501ce632
Report current length on roll-over.
2023-11-23 23:25:49 +00:00
Jeff Young
d437d872ab
Re-enable corner radius of DP meanders.
...
It appears whatever bugs it had have been addressed.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15257
2023-11-22 19:45:56 +00:00
Alex Shvartzkop
05e954ad5d
Fixes for length tuning patterns.
2023-11-12 12:17:08 +03:00
Alex Shvartzkop
7abe2e3ea0
Restore clearance cache usage in PNS::NODE::NearestObstacle.
...
This (and the other commit) restores router performance to pre-7.0.3 levels.
(cherry-picked from commit 5e93814283
)
2023-11-07 23:25:53 +03:00
Seneral
55c44966d9
Added a temporary item cache to improve router performance
...
Some items only used within algorithms were never cached
Because they are hard to manually clean up
But caching them does help the algorithms a lot
So this solution is the best I can think of
(cherry picked from commit d29c07a663
)
2023-11-07 23:23:52 +03:00
Jeff Young
abda3c0d33
Handle various keepout flags independently.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16037
2023-11-07 11:57:23 +00:00
Jeff Young
7f8e397dfb
Behave (or assert) when source or target are null or dirty.
2023-11-01 17:11:42 +00:00
Jeff Young
2ce4adc739
Check physical_clearance rules in the router.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16007
2023-11-01 14:13:16 +00:00
Jeff Young
d93bb464bf
When garbage collecting locally we also need to clear global references.
2023-11-01 12:47:54 +00:00
Wayne Stambaugh
6183a1e4de
Coverity warning fixes.
2023-10-30 09:16:24 -04:00
Jeff Young
0747d35228
Minor formatting fixes.
2023-10-28 17:58:33 +01:00
Jeff Young
a2f19ea6bb
Push m_forceMarkObstaclesMode down into the DRAGGER.
...
The existing flag was never read anyway, and it's only the DRAGGER
that knows that the starting state is already colliding and that we
need to force mark-obstacles mode.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8641
2023-10-28 17:52:15 +01:00
Ian McInerney
171458a27b
Introduce action friendly names
...
Friendly names can be used to display action information that is clearer
in non-hierarchical contexts (e.g. not in menus).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8075
2023-10-27 23:58:29 +01:00
Wayne Stambaugh
6269453416
Coverity warning fixes.
2023-10-27 16:48:14 -04:00
Jeff Young
8d3a3419f8
Honour 90-degree router mode in a few more places.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10421
2023-10-26 14:18:28 +01:00
jean-pierre charras
4ffa013467
Fix minor compil and Coverity warnings (not initialized vars)
2023-10-23 20:13:46 +02:00
Jeff Young
fb84f4592b
Check vias before holes as we assume any hole is non-pushable.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15840
2023-10-22 22:46:19 +01:00
Jeff Young
7c08aa09d5
Don't generate virtual vias when editing a tuning pattern.
2023-10-22 20:35:15 +01:00
Jeff Young
f1efae1e05
We don't want to do collision testing against virtual vias.
...
(Which means they had better not have a hole.)
2023-10-22 20:35:15 +01:00
Jeff Young
5da35d7750
Don't modify dp-tuning when doing skew tuning.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15901
2023-10-22 20:35:14 +01:00
Jeff Young
059a95a2f2
Lock generated tracks when routing.
...
Otherwise they lose their group status when being replaced by the
router (even if they weren't otherwise modified).
2023-10-19 11:39:01 +01:00
Mike Williams
70917a14e7
Route from end: fix crash and snapping bug
...
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/13992
2023-10-18 12:32:32 -04:00
Jeff Young
89011e888c
More modern look & feel for tuning status popup.
...
(Also includes min and max info, and move string processing out
of router.)
2023-10-17 13:30:58 +01:00
Jeff Young
9ed802e951
Support min/max rules in diff pair placer and skew placer.
2023-10-17 13:30:58 +01:00
Wayne Stambaugh
f629898c8b
Coding policy fixes.
2023-10-17 08:07:15 -04:00
Wayne Stambaugh
b5eee9dd7e
Coverity warning fixes.
2023-10-16 17:04:14 -04:00
Jeff Young
2c9d43474d
Formatting.
2023-10-16 13:44:05 +01:00
Jeff Young
64cc8dd6aa
Adjust dashed-box and edit-point locations to be outside meanders.
2023-10-16 13:44:05 +01:00
Jeff Young
d51e058e24
Move diff-pair netname resolution to BOARD.
...
Also adds reporting of dp gap constaints and max uncoupled to track
selections, and max uncoupled during routing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13748
2023-10-15 22:46:23 +01:00
Jeff Young
ccc20348bf
Don't start with MEANDER_SIDE_DEFAULT.
...
It means we get a different default for left-to-right-drawn than we
do when going the other way.
Also fixes bug in PNS::DP_MEANDER_PLACER so that it honours side
specified in settings.
2023-10-15 17:59:11 +01:00
Jeff Young
2450250ae7
Use "tuning pattern" in the GUI.
2023-10-15 17:59:11 +01:00
Jeff Young
5f5113c80a
Pick up current rule values when editing meanders.
2023-10-14 15:04:18 +01:00
Alex Shvartzkop
61bdee027b
Fix a crash when using length tuning tools.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15874
2023-10-14 16:53:28 +03:00
Jeff Young
0a111e9fbb
Hook up layer-toggle command to router.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15812
2023-10-13 21:33:27 +01:00
Jeff Young
62d959ed0e
Don't assume an error location for PAD::GetEffectivePolygon().
...
While ERROR_INSIDE was good for plotting, 3D generation, etc., it's
not good for generating router hulls.
Also reverts part of the change to always use polygons for PNS::SOLIDs. A single shape in a SHAPE_COMPOUND will be faster (and
more accurate).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14898
2023-10-13 13:59:26 +01:00
Jon Evans
96f9f2c658
PNS: Allow for approximation error in hull clearance
...
Also revert to using exact hulls for non-compound shapes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14898
2023-10-12 22:55:34 -04:00
Jeff Young
1b676985f6
Retire length tuning tool in favour of first-class meanders.
2023-10-12 17:54:34 +01:00
Jeff Young
d04641c868
ADDED: support for editing target length in Meander Properties dialog.
...
Also supports overriding the custom rules.
2023-10-12 17:54:34 +01:00
Jeff Young
d916e650f1
Tuning status popup for point editor.
2023-10-10 11:55:57 +01:00
Jeff Young
d10b0b053e
Move meander placer picker tool from item highlighting to net highlighting.
2023-10-09 22:32:32 +01:00
Jeff Young
35d8635a6b
Default skew tuning lenght to diff between N/P, but allow override.
2023-10-09 15:22:41 +01:00
Alex Shvartzkop
a4832dd3c8
ADDED: Interactive meander objects for length tuning.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
455268f45e
Allow to specify meander initial side via meander settings.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
ce8849f8bc
Skip move in meander placers if points match.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
8b21a260c9
Refactor MEANDER_PLACER_BASE::cutTunedLine to SHAPE_LINE_CHAIN::Split.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
546c7ed218
Introduce GENERATOR_TOOL.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
74075fe4d6
Fix target skew not working properly in meander skew placer.
2023-10-07 03:51:26 +03:00
Alex Shvartzkop
e4e769493c
Skip very short segments in MEANDER_SHAPE::forward.
2023-10-07 03:51:18 +03:00
Jeff Young
420cadab34
Separate meander settings from target length/skew.
...
Settings move to Board Setup, while target length is sourced from
the custom rules (or a text-entry dialog if no rules are active for
the track).
Target skew is sourced from the coupled-trace-length minus the
trace-to-be-tuned length.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12075
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15826
2023-10-06 19:46:55 +01:00
Ian McInerney
0876fb0985
Re-implement direct layer switching in the router tool
...
Also add a new framework to allow grouping actions that are similar into
a single context that can then be used for mass comparisons.
2023-10-05 13:34:25 +01:00
Mike Williams
c2d7b26ebd
PCBNew: don't grab the wrong parameter type when placing vias
2023-10-04 12:17:15 -04:00
Jeff Young
9214e47367
Only allow switching to enabled layers.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15779
2023-10-01 15:27:55 +01:00
Jeff Young
be532e96d6
Fix errors in calculating tuning length.
...
Fix mismatched parameter passing in TOPOLOGY::followTrivialPath()
and TOPOLOGY::AssembleTrivialPath().
Fix logic error in PNS::JOINT::IsLineCorner().
Handle VVIAs in PNS::JOINT::IsNonFanoutVia().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10614
2023-09-25 15:50:44 +00:00
Jon Evans
d781d70a09
PNS fix dragging a single footprint
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15693
2023-09-20 11:53:43 -04:00
Jon Evans
5a9c028e85
PNS: Allow dragging more than one footprint
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11312
2023-09-18 22:37:11 -04:00
Marek Roszko
22b733209d
Fail GAL on its header leaking audit
...
Maybe we should rethink directly accessing GAL so much, but at least 600 files didn't need GAL leaked into them due to view_overlay.h
2023-09-18 19:52:27 -04:00
Alex Shvartzkop
06463fd35a
Fixes for Wayland cursor warping:
...
- Emulate the mouse position, since no motion events are sent after warp
- Do not call wl_surface_commit to prevent an assert
- Re-organize code a bit
2023-09-18 12:56:54 +00:00
Jeff Young
ed292e180d
Don't assert on 0-width tracks. Just don't inherit from them.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14558
2023-09-15 19:09:58 +01:00
Jeff Young
408f505b75
Formatting.
2023-09-15 19:09:58 +01:00
Tomasz Wlostowski
a7ae4d8e9a
router: orphaned net is not the same as null net handle
2023-09-12 16:03:55 +02:00
Jeff Young
93f004ff65
Formatting, and a fix for a shadowed variable.
2023-09-12 13:45:28 +01:00
Marek Roszko
3bbf3a61b5
Remove PNS APIEXPORT that never made sense
...
It can't work because all base classes must be APIEXPORTed
2023-09-08 18:44:46 -04:00
Alex Shvartzkop
f211b2cdd0
Remove unused method from router_tool.h
2023-09-07 10:57:02 +03:00
Marek Roszko
67b031adab
Painter base class should just live in gal instead of being in denial
2023-09-06 20:23:19 -04:00
Jeff Young
43862d767e
Don't return separate shapes from a custom-shaped pad.
...
It just confuses the hull generator.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15553
2023-09-03 13:23:53 +01:00
Jeff Young
891583f616
Fix nullptr error.
2023-09-02 12:08:37 +01:00
Jeff Young
9a045af81f
Make all debugging statments use netcode (instead of some using netname).
2023-08-31 15:15:57 +01:00
Jeff Young
05135eed66
Extra debugging info for pns regression tests.
2023-08-31 15:15:57 +01:00
Jeff Young
c049e1e90d
Formatting (no functional changes).
2023-08-31 15:15:57 +01:00
Jeff Young
cf14b3c233
Fix conversion to netnames in PNS_DBG output.
2023-08-31 00:25:20 +01:00
Jeff Young
f24cf2250e
Make sure we have a BOARD when trying to read nets.
...
Also fixes a nullptr bug when trying to write nets when we don't
have a NODE.
2023-08-29 17:30:00 +01:00
Wayne Stambaugh
e4feb8826b
Coverity issue fixes.
2023-08-28 09:29:56 -04:00
Mike Williams
2b78c20a62
PCB: add grid overrides to graphics/router/etc.
2023-08-24 13:58:22 -04:00
Mike Williams
9079df85fd
PCB: check ratsnest for nullptr (segfaults)
2023-08-24 10:51:34 -04:00