Commit Graph

73 Commits

Author SHA1 Message Date
Seth Hillbrand 923dad6ca8 PNS: Modify MarkObstacles logic to select shorter
When routing where we hit multiple obstacles, we choose the shortest
path to allow overlapping hits to choose the shorter path, thus giving a
better chance of returning true for the DRC-compliant path.

Fixes #3773 | https://gitlab.com/kicad/code/kicad/issues/3773

(cherry picked from commit 38f13ef481)
2020-01-16 19:58:19 -08:00
Seth Hillbrand 3b3165ad51 pcbnew: Allow DRC violations when marked
We shouldn't consider any obstacles when we are routing in DRC violation
mode.

Fixes: lp:1826723
* https://bugs.launchpad.net/kicad/+bug/1826723
2019-06-09 13:00:13 -07:00
Tomasz Włostowski 92e2aa31a9 pcbnew: router: fix non-45 degree tail merge in LINE_PLACER
Fixes: lp:1817795
* https://bugs.launchpad.net/kicad/+bug/1817795
2019-03-04 18:33:10 +01:00
Tomasz Włostowski 5d712716e6 router: don't create incorrect non-45 degree connections when routing a track that doesn't have a net assigned
Fixes: lp:1814433
* https://bugs.launchpad.net/kicad/+bug/1814433
2019-02-03 12:37:27 +01:00
Tomasz Włostowski 313ebb9dff router: correct walkaround corner case when both ends of the line lie on the hull edge
Fixes: lp:1810935
* https://bugs.launchpad.net/kicad/+bug/1810935
2019-02-03 11:22:18 +01:00
Tomasz Włostowski a3d8ab911f router: improved snap-to-clearance zone algorithm in highlight collisions mode 2018-12-25 02:29:23 +01:00
Maciej Suminski 4d73cfb8a1 PNS: validate SHAPE_LINE_CHAIN before accessing its segments 2018-11-26 00:01:02 +01:00
Tomasz Wlostowski f6f726acab router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click
Fixes: lp:1777688
* https://bugs.launchpad.net/kicad/+bug/1777688
2018-06-19 19:30:03 +02:00
Jeff Young 7a7da560bc Keep unknown nets at 0 while routing.
Previous algorithm used a static variable which it decremented
for each new unconnected track, but this resulted in the router
marking earlier fixed segments as collisions (because they
would get set to netcode = 0 when "fixed").

Fixes: lp:1762043
* https://bugs.launchpad.net/kicad/+bug/1762043
2018-04-25 10:54:32 +01:00
Jeff Young 900bf0c7a6 Allow connections to no-net items in Highlight Collisions mode.
If the track being routed is unconnected, or the end-point
clicked on is unconnected, allow the connection by changing
the unconnected item to the net of the connected one.

Fixes: lp:1548129
* https://bugs.launchpad.net/kicad/+bug/1548129
2018-04-09 11:05:14 +01:00
Tomasz Włostowski c0b61c19b7 router: fixed use-after-free error occuring when a newly routed segment covered exactly an older one
Fixes: lp:1747973
* https://bugs.launchpad.net/kicad/+bug/1747973
2018-02-08 11:34:31 +01:00
Camille 3168d03fe5 Fix unnecessary copy initialization detected by clang-tidy 2018-01-09 18:22:10 -05:00
Tomasz Włostowski 9932ff32ae refactoring: wrapped boost::optional in OPT<> class for the purpose of easier transition to C++17 in the future 2017-11-03 23:59:02 +01:00
Tomasz Włostowski 2d9ab80b4e Few improvements to the GAL router:
- missing 'break track' functionality
- 'drag 45 degree' and 'drag free angle' context menu shorcuts, both in the router tool and in the default context menu
- bugfix: length tuner tool can now be used again

Fixes: lp:1708386
* https://bugs.launchpad.net/kicad/+bug/1708386

Fixes: lp:1708402
* https://bugs.launchpad.net/kicad/+bug/1708402
2017-08-07 14:28:46 +02:00
Tomasz Włostowski ba9576b014 router: snap to clearance boundaries in Highlight Collisions mode
Fixes: lp:1655819
* https://bugs.launchpad.net/kicad/+bug/1655819
2017-01-19 17:47:15 +01:00
jean-pierre charras bcfc1e7a3f fix shadowed local variables 2016-11-25 16:00:42 +01:00
Tomasz Wlostowski 03d372a0ec Fixed an assertion triggered upon line simplification (PNS). 2016-09-06 16:40:40 +02:00
decimad 94aaa47583 Add Remove overloads for specific item types, split removal into index-handling and lifetime-handling (not 100% correct yet, since the index is defactor lifetime-owner, it will be later.) 2016-09-06 16:06:06 +02:00
decimad 96a3145543 use unique_ptr at client <-> pns-router border, to document the pns router is taking ownership
add overloads for NODE::Add( ... ) taking pointers to specific item types (retain old private add-Functions, they will come in handy later)
LINE overloads now take by reference, to document their special treatment.
updated code throughout affected by these changes
2016-09-06 16:06:06 +02:00
decimad 2aef1a4568 use unique_ptr to document ownership (PNS::LINE_PLACER) 2016-09-06 16:06:06 +02:00
decimad 4770be0920 Make the segment-ref container a true member of PNS::LINE
improve const correctness
return segment container by ref
change client code accordingly
2016-09-06 16:06:06 +02:00
decimad 6c749e0ba8 Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
decimad 4cf44d9725 Rename pns item kind constants in preparation for renaming pns classes 2016-09-06 16:06:06 +02:00
decimad de6281e977 Move PNS router code into namespace PNS
update copyright messages
2016-09-06 16:06:06 +02:00
Maciej Suminski ca499b80e1 Fixed wxLogTrace() calls in PNS
Fixes: lp:1616702
* https://bugs.launchpad.net/kicad/+bug/1616702
2016-08-25 09:24:55 +02:00
Maciej Suminski 78050c05e2 Changed PNS logging routine to wxLogTrace 2016-08-17 16:00:21 +02:00
Maciej Suminski 0ef866ee74 Code formatting 2016-08-15 17:16:53 +02:00
Tomasz Wlostowski a53ea81794 P&S: factor out Kicad-dependend PNS_ROUTER::SnapToItem() to the PNS_TOOL_BASE class 2016-08-15 17:16:51 +02:00
Christian Gagneraud 7e0caf7abe [pns] Make the placer algo draw debugging stuff by relying on a new PNS_DEBUG_DECORATOR, this removes a reversed dependency b/w PNS_ROUTER and PNS_ALGO Tom: some rework of the patch 2016-08-15 17:16:48 +02:00
Christian Gagneraud e9a2cb0642 [pns] Remove unnecessary includes of KiCad colors.h 2016-08-15 17:16:48 +02:00
Simon Richter 1b2fd6a382 Replace BOOST_FOREACH with C++11 range based for. 2016-06-29 16:07:55 -04:00
Tomasz Wlostowski 72b0593fdb Pcbnew: push and shove router fixes.
* Fix segfault caused by invalidation of the end item by
  PNS_LINE_PLACER::UpdateSizes().
* GAL zone drawing tool updates the ratsnest after zone drawing is complete.
* Fixed performance issue in zones processing using strict simplification
  only for the final filled area.
2015-11-18 09:35:17 -05:00
Thomasz Wlostowski 6e470ece1d Pcbnew: fix push and shove router segfault bug. 2015-11-03 11:19:42 -05:00
Tomasz Wlostowski cd0031be47 router: fix segfault when placing a via with failed shove of head trace 2015-10-12 10:02:03 +02:00
Maciej Suminski 2607497b37 Code formatting. 2015-10-05 18:28:41 +02:00
Tomasz Wlostowski 5bbf980ec7 router: fixes for disappearing segments after shoving & assertion in PNS_NODE destructor 2015-09-14 18:40:29 +02:00
Tomasz Wlostowski 2b70aeafba fix rare segfault when head line had unsimplified segments 2015-08-20 15:11:16 +02:00
Tomasz Wlostowski a96299d456 router: improvements to shove algorithm 2015-08-19 18:07:16 +02:00
Maciej Suminski 0fbf31ef38 P&S: memory mgr & disappearing trace fixes. Still a bit buggy, though... 2015-08-03 21:11:51 +02:00
Maciej Suminski b16ade0805 PNS code formatting. 2015-07-22 10:46:56 +02:00
Jan Dubiec 7f1f436a4e Proper OPT_OBSTACLE casting. 2015-07-22 10:46:45 +02:00
Maciej Suminski c9370ae5e6 Fixed a PNS assert. 2015-07-10 23:42:13 +02:00
Maciej Suminski a530ffad50 Code formatting. 2015-07-10 23:42:05 +02:00
Maciej Suminski 8e98008f67 PNS: prevent placing multiple vias in the same spot. 2015-07-07 18:36:43 +02:00
Maciej Suminski e7626a8592 PNS: hide preview via when disabled. 2015-07-07 18:36:41 +02:00
Maciej Suminski 66778e1b00 PNS code formatting. 2015-07-07 18:36:38 +02:00
Maciej Suminski 766da1e494 Code formatting. 2015-07-02 16:11:15 +02:00
Tomasz Wlostowski a180f70086 router: compute (and display) DP gap dynamically when tuning length 2015-07-02 16:10:49 +02:00
Tomasz Wlostowski a86fda1d37 tools: added TOOL_SETTINGS class for storing persistent tool settings in config file (just a wrapper for wxConfigBase) router: free angle mode (mark obstacles only) & persistent settings 2015-07-02 16:09:51 +02:00
Tomasz Wlostowski f96c65254c router: allow for insertion of a via without leading trace (e.g. in the middle of already existing trace) 2015-07-02 16:09:24 +02:00