kicad/pcbnew/router
Seth Hillbrand 9e6b56d783 PNS: Detect collisions including newline width
The new line collision search uses BBox() to check for colliding
objects.  BBox in the SHAPE_LINE_CHAIN did not include width as the
chains were assumed to be zero-width.  This is not the case for
PNS::LINE elements.

We mostly don't notice this because DRC checks for SEGMENT collisions
but it becomes obvious/annoying when we cannot place a track for unknown
reasons and the snap-back doesn't take line width into account.

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

(cherry picked from commit fe15511d38)
2020-01-17 11:26:02 -08:00
..
CMakeLists.txt router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-05-01 11:39:15 +01:00
length_tuner_tool.cpp P&S router: length tuning tool: fix a crash after trying to tune a track. 2019-12-12 10:26:27 +01:00
length_tuner_tool.h Prevent creating too many transitions by TOOL_MANAGER 2017-07-31 15:09:19 +02:00
pns_algo_base.cpp
pns_algo_base.h
pns_debug_decorator.h
pns_diff_pair.cpp router: DP_GATEWAYS::FilterByOrientation() should have exactly opposite filtering condition! 2018-10-18 14:29:19 +02:00
pns_diff_pair.h Fix unnecessary value parameter detected by clang-tidy. - Replace value parameter by const reference parameter or move-assignement in some cases 2018-01-09 18:55:51 -05:00
pns_diff_pair_placer.cpp router: Take track width in dp from dp 2019-02-04 03:48:08 +01:00
pns_diff_pair_placer.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_dp_meander_placer.cpp router: don't cross DP lines when length tuning, fix swap pair polarity bug 2018-10-18 13:48:43 +02:00
pns_dp_meander_placer.h router: don't cross DP lines when length tuning, fix swap pair polarity bug 2018-10-18 13:48:43 +02:00
pns_dragger.cpp pcbnew: Do not allow drag to violate DRC without permission 2018-09-27 13:08:22 -07:00
pns_dragger.h Few improvements to the GAL router: 2017-08-07 14:28:46 +02:00
pns_index.cpp router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-05-01 11:39:15 +01:00
pns_index.h router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-05-01 11:39:15 +01:00
pns_item.cpp router: treat negative net indices as always colliding 2018-02-17 18:25:20 +01:00
pns_item.h router: don't create incorrect non-45 degree connections when routing a track that doesn't have a net assigned 2019-02-03 12:37:27 +01:00
pns_itemset.cpp
pns_itemset.h Code cleanup: Fixing assignment operators 2018-09-20 20:15:47 -07:00
pns_joint.h Don't shove stitching vias. 2019-07-21 16:41:56 -06:00
pns_kicad_iface.cpp PNS: Allow snap to temp hidden 2019-12-07 09:49:59 -08:00
pns_kicad_iface.h pcbnew: Remove snapping to hidden items 2019-10-10 09:47:34 -07:00
pns_layerset.h Code cleanup: Fixing assignment operators 2018-09-20 20:15:47 -07:00
pns_line.cpp router: correct walkaround corner case when both ends of the line lie on the hull edge 2019-02-03 11:22:18 +01:00
pns_line.h PNS: Detect collisions including newline width 2020-01-17 11:26:02 -08:00
pns_line_placer.cpp PNS: Modify MarkObstacles logic to select shorter 2020-01-16 19:58:19 -08:00
pns_line_placer.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_logger.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_logger.h Fix unnecessary value parameter detected by clang-tidy. - Replace value parameter by const reference parameter or move-assignement in some cases 2018-01-09 18:55:51 -05:00
pns_meander.cpp Fix a bug in how we check for differential pair tuning. 2018-05-21 13:49:40 +01:00
pns_meander.h
pns_meander_placer.cpp Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_placer.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_placer_base.cpp
pns_meander_placer_base.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_skew_placer.cpp Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_skew_placer.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_node.cpp router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-05-01 11:39:15 +01:00
pns_node.h pcbnew: Set dp clearance based on netclass 2018-06-18 14:23:25 -07:00
pns_optimizer.cpp PNS: Assume the current line is a base before optimizing 2020-01-12 11:13:19 -08:00
pns_optimizer.h Adjusting the breakout optimizer for custom pads 2018-05-04 08:23:20 -07:00
pns_placement_algo.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_router.cpp pcbnew: Show clearance when editing tracks 2019-04-07 21:26:06 -07:00
pns_router.h pcbnew: Remove snapping to hidden items 2019-10-10 09:47:34 -07:00
pns_routing_settings.cpp Few improvements to the GAL router: 2017-08-07 14:28:46 +02:00
pns_routing_settings.h Change "Automatic neckdown" to "Optimize pad connections". 2018-02-15 17:02:44 +01:00
pns_segment.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_shove.cpp Don't shove stitching vias. 2019-07-21 16:41:56 -06:00
pns_shove.h 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
pns_sizes_settings.cpp Honour diff-pair dimension changes while routing. 2018-09-18 20:37:00 +01:00
pns_sizes_settings.h 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
pns_solid.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_solid.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_tool_base.cpp pcbnew: Remove snapping to hidden items 2019-10-10 09:47:34 -07:00
pns_tool_base.h pcbnew: Adjust drag snapping to avoid start 2019-08-15 12:43:19 -07:00
pns_topology.cpp pcbnew: Fix minor miscalculation in dp length 2018-10-09 05:37:48 -07:00
pns_topology.h
pns_tune_status_popup.cpp colors: Add HSL conversion and tune colors 2019-02-11 22:08:41 -08:00
pns_tune_status_popup.h Bring PICKER_TOOL in line with other tools. 2018-08-23 00:58:01 +01:00
pns_utils.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_utils.h Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_via.cpp
pns_via.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_walkaround.cpp router: prevent a very unlikely infinite loop in PNS::LINE::Walkaround() causing an OOM&segfault 2018-05-02 15:06:08 -07:00
pns_walkaround.h
range.h
ranged_num.h
router_preview_item.cpp pcbnew: Make clearance translucent 2019-07-18 10:44:44 -07:00
router_preview_item.h
router_tool.cpp PCBnew: placing a blind/buried via sometimes incorrectly place a through via. 2019-12-08 13:31:21 +01:00
router_tool.h pcbnew: Break track in edit mode 2018-12-14 09:59:25 -08:00
time_limit.cpp
time_limit.h