Seth Hillbrand
f7cb970a02
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
2020-01-16 19:57:38 -08:00
Seth Hillbrand
eb3d32f967
SHAPE_LINE_CHAIN: Unify constructors
...
Keeps the multi element SHAPE_LINE_CHAIN constructors in a single
routine using std::vector and implicit construction.
2019-12-12 13:54:48 +00:00
Seth Hillbrand
c4d853c1e8
SHAPE_LINE_CHAIN: Remove element access
...
This is the first step to allowing non-segments in the line chain.
External routines cannot be allowed to change the line chain without
going through the internal routines. To accomplish this, we remove the
Vertex() and Point() access routines and only leave the const versions.
Transformations are given for both points as well as the chain itself.
2019-12-12 13:54:48 +00:00
Seth Hillbrand
c6f5df134c
Minor speed cleanup
...
This adjusts iterators to use const reference when only used for
copy. It also ensures pre-allocation of vectors when size is known
ahead of time.
2019-12-05 14:20:59 -08:00
Seth Hillbrand
a2edf9c442
Unified update to C++14 std::make_unique
...
This update replaces the existing uses of unique pointer creation with
the C++14 std::make_unique call that provides proper memory release in
event of an exception.
2019-12-05 10:43:55 -08:00
Seth Hillbrand
0035445456
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
(cherry picked from commit 3b3165ad51
)
2019-06-09 13:03:08 -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
jean-pierre charras
77249d9b2d
Minor fixes: remove a few useless includes and move a few others to the right file. Remove a few coverity warnings about not initialized members.
...
Minor bug fix: Zone duplicate zone in legacy mode: duplicate a zone to the same layer (and therefore the same location) is no more allowed.
2015-05-15 14:49:11 +02:00
Maciej Suminski
721949b50e
Fix memory leak in pns_node and pns_line_placer. Fix coverity uninitialized warnings.
2015-03-10 15:38:27 +01:00
Maciej Suminski
4fb9bce354
Code formatting.
2015-02-18 17:53:46 +01:00
Tomasz Włostowski
112adccbcb
router: differential pairs & length tuning support
2015-02-18 01:29:54 +01:00
Maciej Suminski
9245b90392
Code formatting.
2014-11-14 20:19:00 +01:00
Tomasz Wlostowski
4e67de5c15
P&S router bugfixes
...
- fixed walkaround bug causing unwanted overlap/clearance violation when the first segment of trace being laid intersects the obstacle's hull at the same point twice (ie. goes in, turns around and goes out).
- fixed placer bug not splitting the start segment after toggling via placement or changing trace width
2014-11-14 19:17:01 +01:00
Tomasz Wlostowski
80adf9d85b
router: multiple changes
...
- re-worked PNS_LINE_PLACER and PNS_ROUTER classes a bit, removing duplicate class members
- cleaned up Andrew's blind/buried via fixes
- fixed 'custom via width' dialog bug updating the width even when closed/cancelled
- fixed incorrect radius of drawn microvias
2014-11-14 19:15:58 +01:00
Andrew Zonenberg
45a8e4da74
pns_router: Support for blind/buried vias.
2014-09-30 16:46:19 +02:00
Maciej Suminski
327f307a7f
FIx layer switching after via placement in PNS router.
2014-07-09 16:50:31 +02:00
Maciej Suminski
81ad03cf91
Code formatting.
2014-07-09 16:25:50 +02:00
Maciej Suminski
fb0045a898
Bugfix: Bottom layer not correctly handled in (PNS) Interactive router.
2014-07-07 10:48:47 +02:00
Maciej Suminski
3480c41caa
PNS router handles net class settings (dependent on the selected start item).
2014-06-03 16:09:27 +02:00
Maciej Suminski
2619ceae03
PNS formatting code.
2014-05-31 16:04:25 +02:00
Maciej Suminski
b9246dd463
bugfix #1323135 : PNS creates vias with giant holes.
2014-05-28 13:16:15 +02:00
Maciej Suminski
ad1b138f28
Reformatted PNS code to conform the coding policy.
2014-05-16 13:37:31 +02:00
Tomasz Włostowski
061660e9e4
Long-awaited new version of the P&S router
2014-05-14 15:53:54 +02:00
unknown
b436924380
Warning removal, patches from Camille 019
2014-03-16 18:40:23 +01:00
Povilas Kanapickas
7f12513c7e
Remove some uses of using namespace std.
2013-12-13 10:27:30 -06:00
Maciej Suminski
bc305859b2
Mainly case changes.
2013-10-14 20:40:36 +02:00
Maciej Suminski
0ac3e1fbf2
Namespace KiGfx->KIGFX.
...
template<> -> template <>
Some more reformatting according to uncrustify results.
2013-10-14 16:13:35 +02:00
Maciej Suminski
22045b61ea
Converted tabs to spaces. Removed trailing whitespaces.
2013-10-14 13:43:57 +02:00
Maciej Sumiński
5598acb617
Uncrustifying push&shove router
2013-09-26 23:53:54 +02:00
tomasz.wlostowski@cern.ch
db62d672d2
Initial version of the P&S router. Buggy and crappy.
2013-09-18 19:55:16 +02:00