Jeff Young
75032f3acd
Use the more-constrained layer when running rules.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7639
2021-02-25 22:58:07 +00:00
Tomasz Wlostowski
87ea540953
Fix whitespace errors
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
c79610e132
router: post-rebase fixes
2021-02-25 17:18:23 +01:00
Marek Roszko
6948cdd8ef
router: Fix return type within pointInside2
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
9bdfc13155
router: improve locality of post-shove optimization
...
Fixes : #4359
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
e1d4bb777c
router: use new LINE::Walkaround in the walkaround algo
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
045d02f818
router: add strict/loose area restriction constraint. WIP
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
24574aa2f5
router: first insert intersections, then build graph in Walkaround()
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
61e75a838b
router: replace large stack variables with std::array
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
028f209126
router: more robust LINE::Walkaround() implementation
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
e9c55cd0e3
router: if the drag anchor is not reachable by the mouse, use the closest point on dragged trace for optimizer restriction
...
Fixes : #4056
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
a141ed3444
router: feed view size change events to the router engine
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
12dfb541fc
router: expose current view area to the router algorithms so that the optimizer could know not to mess with traces/vias not currently visible to the user (wip)
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
2831c7d24c
router: fix compile error in DRAGGER
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
b67e5768a6
router: feature to save debug event log & board dump for easier recreation of router bugs and misbehaviours
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
ebdc68ac1d
router: correctly handle line width in PREVIEW_ITEMs
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
34c037684b
router: partially migrate SHOVE algorithm to use new DEBUG_DECORATOR
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
0e6cf3f56e
router: fix board edge clearance queries
...
Fixes : #7254
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
4574f52eac
router: DRAGGER::CurrentNode() should always return non-null value
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
e221b11e3b
GRID_HELPER: fixed arithmetic issue in segment snap distance check disguised as 'excessive optimization' by the dragger in the router
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
325300bd76
router: don't use compound pad shapes if pad contains a single primitive shape
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
a4bd2ad8c6
router: drag in walkaround mode now works
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
f84836f51e
router: factor out POSTURE_SOLVER to more generic MOUSE_TRAIL_TRACER class
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
af95235f47
router: report debug log events from DRAGGER
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
0306d16748
router: make post-drag optimization less intrusive
...
Fixes : #5918
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
14ce7a0ad7
router: implement area constraint in optimizer
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
64cf593ee9
router: debug points now have variable size
2021-02-25 17:18:23 +01:00
Jeff Young
caa18c8e16
Fix bugs in diffPair hole-to-hole logic and add rule resolution.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7697
2021-02-25 14:23:02 +00:00
Jeff Young
fa89263c8f
Push hole-to-hole min processing down a level.
...
Also removes adding the track width to the via gap, which was
never right.
Fixes https://gitlab.com/kicad/code/kicad/issues/7173
2021-02-24 21:42:00 +00:00
Jeff Young
7f892669cc
Consistent punctuation.
2021-02-23 12:46:27 +00:00
Marek Roszko
c12666ec43
Fix arg type of NODE::followLine
2021-02-20 11:58:55 -05:00
Marek Roszko
6fce39607e
Fix return type within pointInside2
2021-02-20 11:58:55 -05:00
jean-pierre charras
d0b91b1106
Router, place via: fix issue created by 45b2bc: cancelling via must be made
...
only when the select layer is called.
Fixes #7606
https://gitlab.com/kicad/code/kicad/issues/7606
2021-02-19 17:28:20 +01:00
Seth Hillbrand
54282dffe3
Move preview items using FP orientation
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7600
2021-02-18 16:32:40 -08:00
Jeff Young
45b2bce698
Cancel placement of via if user cancels layer selection.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7578
2021-02-18 11:53:36 +00:00
jean-pierre charras
5d2dc0b50e
Fix a few (minor) issues:
...
- Make DIALOG_SHIM::SetPosition working)
- rename PCB_BASE_FRAME::SelectLayer() to PCB_BASE_FRAME::SelectOneLayer()
- PCB_BASE_FRAME::SelectOneLayer(): make dismiss dialog by escape key working.
Fixes #7578
https://gitlab.com/kicad/code/kicad/issues/7578
2021-02-17 20:56:43 +01:00
Jon Evans
0198d5a3bd
PNS: don't lose track of pad offset when dragging footprints
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7500
2021-02-16 19:47:52 -05:00
Seth Hillbrand
9212197c26
Grammar
2021-02-15 15:18:13 -08:00
Jeff Young
e2f8b1a4b1
Interpreting wxDialog::ShowModal()'s retval as bool is never what you want.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7454
2021-02-08 17:40:57 +00:00
Jeff Young
6272b48481
Make sure layer gets passed in to rules evaluation.
2021-02-08 14:53:49 +00:00
Jeff Young
7aa7e3fd43
Push undo/redo blocking down a level in LengthTuner tool.
...
This way it's active only while tuning a single line, rather than
while the tool is selected.
Fixes https://gitlab.com/kicad/code/kicad/issues/7462
2021-02-08 14:15:46 +00:00
Seth Hillbrand
792904557e
Remember Parent data when routing
...
Keeps parent information such as UUID and pad removal options for
elements that are just updated in routing rather than created fresh or
fully destroyed.
Fixes https://gitlab.com/kicad/code/kicad/issues/7460
2021-02-07 17:08:43 -08:00
Jon Evans
721bf82603
Handle malformed lines in dragCornerInternal
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7398
2021-02-03 20:55:22 -05:00
Jeff Young
d7ddc62d7e
Fix mouse warping and dialog placement for layer switcher.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/2607
2021-02-02 17:20:01 +00:00
Marek Roszko
dc4b73fcef
Correct m_board check location in PNS_KICAD_IFACE_BASE::SyncWorld
2021-02-01 11:58:22 -05:00
Seth Hillbrand
73886aecb1
Ensure partially triangulated polys are not valid
...
Moves rule area triangulation outside of layer iterator and keeps the
triangulation_valid flag false until the triangulation has been
completed.
Fixes https://gitlab.com/kicad/code/kicad/issues/7032
2021-01-29 16:33:57 -08:00
Wayne Stambaugh
6a39b81647
Fix the last of broken Doxygen comment specifiers.
2021-01-27 17:39:44 -05:00
Mikołaj Wielgus
3e42ba18a9
Show dragging tools in context selection menu for components
...
Show the dragging tools in the context selection menu when a single
component is selected. Prevent the dragging tools from appearing when
more than one object is selected, as they will not activate anyway.
Fixes https://gitlab.com/kicad/code/kicad/issues/7258
2021-01-27 19:55:42 +00:00
Jon Evans
b96bcc86b1
Don't restrict start item to same layer if snapping is enabled
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7276
2021-01-25 21:19:26 -05:00
Jeff Young
3fcd0860c1
Make 'E' go straight to Custom Track Width dialog.
...
Also fixes some mouse capture issues.
Fixes https://gitlab.com/kicad/code/kicad/issues/7198
2021-01-20 18:19:55 +00:00
Jon Evans
330d717c69
Fix typo
2021-01-18 21:50:26 -05:00
Ian McInerney
44655b98de
Initialize variables properly
2021-01-18 18:35:10 +00:00
Jeff Young
68efdb2fff
Push shared parts of GRID_HELPERs into common.
2021-01-16 23:18:10 +00:00
Jeff Young
02ccd5fbdb
Make sure properties commands don't go to other tools during routing.
...
Brings up the track widths (or diff pairs) context menu instead,
which seems to be the closest parallel.
Fixes https://gitlab.com/kicad/code/kicad/issues/7099
2021-01-14 15:19:09 +00:00
Dominik Wernberger
dc02ec9758
Remove a few const_cast
2021-01-12 20:51:31 +00:00
Jon Evans
111fa99f9f
PNS: Use last-segment posture optimization always
...
Also when auto-posture is enabled, don't flutter
until area threshold has been met.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6935
2021-01-07 20:12:31 -05:00
hoijui
6ca9a42251
Removes 3 other instances of a potential encoding problem
...
Signed-off-by: hoijui <hoijui.quaero@gmail.com>
2021-01-07 17:36:49 +00:00
Jeff Young
e41c06304b
Don't show a leading ratline to a NPTH.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6960
2021-01-07 12:25:04 +00:00
Jeff Young
f702b64b8d
Minor improvements to formatting & SNR.
2021-01-07 12:25:04 +00:00
Jon Evans
0234b7278a
PNS: Make DIRECTION_45 North be up everywhere
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6935
2021-01-06 21:47:06 -05:00
Jon Evans
46c4727783
Make MSVC happy again
2021-01-05 20:56:37 -05:00
Jon Evans
e7b047660c
PNS: Correctly assemble lines with reversed arcs
2021-01-05 17:57:21 -05:00
Jon Evans
feda03f69b
PNS: Fix arc orientation when assembling lines with backwards arcs
2021-01-05 17:57:21 -05:00
Jon Evans
7431d5c985
PNS: First pass at updating meander placers for arcs
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6464
2021-01-05 17:57:21 -05:00
Jon Evans
8619086cf2
PNS: re-enable optimization of colinear segs in lines with arcs
2021-01-05 17:57:21 -05:00
Jon Evans
8901e71fc8
PNS: Fix loop removal, make walkaround less broken for arcs
2021-01-05 17:57:21 -05:00
Jeff Young
02cd8c99cd
Better error messages when routing can't be started.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6541
2021-01-05 18:47:58 +00:00
Jeff Young
88d42724e6
Remove diff-pair-gap handling from single-line-router.
...
We can't really support it until we do min/max/opt shoving and
dragging.
Fixes https://gitlab.com/kicad/code/kicad/issues/6932
2021-01-05 16:54:52 +00:00
Jeff Young
d975f2f6aa
Commenting and naming for clarity.
2021-01-05 16:54:52 +00:00
Jeff Young
f7b20611c1
Enforce hole-to-hole min when placing diffpair vias.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6931
2021-01-05 00:26:49 +00:00
Jeff Young
93bd2171ab
Formatting.
2021-01-05 00:26:49 +00:00
Jeff Young
d24b034cbc
Cleanup (and a minor performance improvement).
2021-01-04 22:32:29 +00:00
Jeff Young
2ea6bc5529
Formatting.
2021-01-04 19:19:55 +00:00
Jeff Young
648c42f643
Show collisions preventing routing from starting.
...
Also introduces a callback to the infobar so that the view can be
cleaned up when the timer expires.
Fixes https://gitlab.com/kicad/code/kicad/issues/6930
2021-01-04 19:19:55 +00:00
Jeff Young
71215bcab3
Make sure TH pads get collision layer highlighted.
...
Also cleans it up to centralise all the decision-making.
Fixes https://gitlab.com/kicad/code/kicad/issues/6925
2021-01-03 21:16:09 +00:00
Jon Evans
f01297fedd
Convert an annoying message box to an infobar
2021-01-02 22:14:10 -05:00
Jeff Young
8b849b1c49
Fix several bugs in hull push-back with vias.
...
1) take hole plating thickness into account
2) build hulls specifically for via so pushing back to the hull doesn't
have to try and figure out how much extra to push back for the via
and/or hole
3) clear MK_HOLE flags when colliding with the pad itself so that we
don't get stuck in HOLE mode
4) move flag setting/clearing to updateNearest() so that it will keep
track of the state of the nearest collision
Fixes https://gitlab.com/kicad/code/kicad/issues/6913
2021-01-02 19:14:44 +00:00
Jeff Young
13094fdc28
Formatting.
2021-01-02 18:38:17 +00:00
Jeff Young
85e42890c4
Distinction between via and via hole probably not useful.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6913
2021-01-02 16:41:09 +00:00
Jeff Young
068af7d328
When routing don't give NPTH holes a copper clearance.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6903
2021-01-02 16:33:51 +00:00
Jon Evans
eba7cb222c
PNS: Fix initial posture guess for pads
2021-01-02 10:32:15 -05:00
Jeff Young
6b6694f55f
Fix typo.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6913
2021-01-02 15:04:30 +00:00
Jeff Young
42c114f6ed
Record status of via dragging in Walkaround mode.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/3967
2021-01-02 00:31:02 +00:00
Jeff Young
8a049cf290
Make sure bounding boxes get cached on rule areas.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6898
2021-01-01 23:17:49 +00:00
Jeff Young
018c17399d
SNR.
2021-01-01 23:17:49 +00:00
Jeff Young
fc1b0ec11f
Improve feedback when routing in highlight collisions mode.
...
In particular, when Allow DRC violations is NOT turned on and we
bump in to an obstacle.
2021-01-01 17:25:37 +00:00
Jeff Young
3ba17e0a16
Formatting.
2021-01-01 01:02:06 +00:00
Jeff Young
ecc0e861d3
Implement hole clearance and hole-to-hole clearance in router.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6882
2021-01-01 00:31:36 +00:00
Jeff Young
5d8e6020d1
Improve clarity.
2021-01-01 00:31:36 +00:00
Jeff Young
0e3c9de684
Formatting.
2021-01-01 00:31:36 +00:00
Jeff Young
1b93663627
Formatting.
2021-01-01 00:31:36 +00:00
Jon Evans
9a0f685a75
PNS: Consider arcs when searching for lines between joints
2020-12-31 13:05:43 -05:00
Jon Evans
73248ab219
PNS: correct initial segment direction for posture solver
2020-12-31 13:05:43 -05:00
Jon Evans
60fd7fdbb2
Fix comment
2020-12-30 18:52:56 -05:00
Jon Evans
510db66f0e
PNS: Fix rollback for arc traces
...
PNS: Update posture solver after rollback
2020-12-30 18:23:24 -05:00
Jon Evans
6105ac50da
ADDED: Default hotkey of CTRL+/ for switch corner rounding
2020-12-30 18:23:24 -05:00
Jon Evans
b5b64a55ad
PNS: Only run optimization if lastNode is valid
2020-12-30 18:23:24 -05:00
Jon Evans
79502a0d88
PNS: A new approach to arc placement
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6334
2020-12-30 18:23:24 -05:00
Jon Evans
bf9501e1d4
PNS: Fix auto-posture when placing via
2020-12-29 21:14:36 -05:00
Jon Evans
689da3794d
PNS: Merge co-linear segments during placement
2020-12-29 21:14:36 -05:00
Jon Evans
4c0aa6db1a
PNS: Disable smart pads optimization for vias
...
There is not much point with the current algorithm and it
breaks auto-posture.
2020-12-29 21:14:36 -05:00
Jon Evans
81d4e06f00
PNS: Consider pad orientation when routing
...
PNS: Skip smart pads when posture was manually forced
This allows a more-correct pad breakout to be chosen when
smart pads is off.
2020-12-29 01:06:46 -05:00
Jon Evans
96d49d1473
PNS: Improved auto-posture when starting from a segment
...
The previous auto-posture algorithm worked great for pads
but not so great when starting routing from a segment.
Now we can optimize the posture based on the starting
segment if one exists, to maximize the "obtuseness" of the
posture.
2020-12-28 23:51:13 -05:00
Jon Evans
3adff647a7
PNS: Preserve nearest vertex when dragging in shove mode
2020-12-28 19:44:39 -05:00
Jon Evans
be294dabce
PNS: Snap back to last valid point when committing a drag
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6651
2020-12-28 16:36:42 -05:00
Jon Evans
3c87e67753
PNS: Allow committing routes even when cursor moves beyond valid solution
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6651
2020-12-27 17:14:38 -05:00
Jon Evans
2cdf9875b9
PNS: fix off-by-one in dragCorner45
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6644
2020-12-27 15:58:36 -05:00
Jon Evans
c615b7a49b
PNS: make initial direction behavior consistent with fix-all enabled
2020-12-27 15:21:55 -05:00
Peter Montgomery
1c79e3174c
Pcbnew: Prevent footprint jumping when starting to drag it
...
CHANGED: When dragging a footprint, if the mouse isn't directly over the
footprint anchor when 'D' is pressed, the footprint center will jump to
the mouse position when dragging begins. This MR uses the current
mouse position instead of the footprint anchor as the inital reference
point when starting to drag.
Fixes https://gitlab.com/kicad/code/kicad/issues/6813
2020-12-27 17:43:52 +00:00
Jon Evans
8ad89ae457
PNS: fix manual posture mode
2020-12-24 17:31:54 -05:00
Jon Evans
8a2667c4c3
PNS: Fix all segments by default (and make optional)
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5920
2020-12-23 21:55:43 -05:00
Jon Evans
8c247fc97c
PNS: Add a setting to disable posture solver
...
PNS: Prevent autoposture flutter when trail has little area
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6797
2020-12-23 21:02:17 -05:00
Jon Evans
912657dd23
Component dragger: make relaxed segment pickup work for PTH pads
2020-12-22 22:43:44 -05:00
Jon Evans
70c6314c67
Component dragger: be more generous about picking up tracks
...
We now pick up tracks that end anywhere in the pad, not just
at the pad anchor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5945
2020-12-22 22:28:24 -05:00
Jon Evans
70c397a9b4
Implement free vias fully
...
CHANGED: manually-placed (stitching) vias won't have their nets automatically updated
(unless the via is placed directly on a track segment)
CHANGED: stitching vias can be placed on footprint pads and pick up their nets
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5484
2020-12-20 16:29:50 -05:00
Jeff Young
cd162a8f58
Honour m_placingVia when avoiding collisions.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/3773
2020-12-20 20:36:19 +00:00
Jon Evans
e8f38e3c18
Snap to footprint origin when dragging
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6633
2020-12-20 15:15:48 -05:00
Jon Evans
ac793618f9
Set start item for inline dragging so that snapping works properly
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6796
2020-12-20 11:13:09 -05:00
Jeff Young
46314f6483
Only compare collision-corrected routes when looking for shortest.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6511
2020-12-19 23:20:27 +00:00
Jeff Young
acfbcb4beb
Make distinction between PCBNew-wide tools and Board-specific tools.
...
The old names were really hard to keep straight (even for me, who named
many of them).
2020-12-16 13:32:46 +00:00
Jeff Young
5f9ed2583c
Don't put up double lock confirmation dialogs.
...
Also removes EditToolSelectionFilter which was misused in more places
than it was used correctly. The original point of the client filter
was to move the logic to the point of use, which the
EditToolSelectionFilter sort of obviated anyway.
Fixes https://gitlab.com/kicad/code/kicad/issues/6751
2020-12-15 22:34:24 +00:00
Jeff Young
c0a9742b3a
Apply 0ef63aca47
to diff pairs.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6314
2020-12-12 03:43:41 +00:00
Wayne Stambaugh
dd4298bb94
Coverity fixes: 280374, 313611, 313648, 313649, and 314720.
2020-12-11 13:29:52 -05:00
Jeff Young
0ef63aca47
Don't reset tail when changing track width/via sizes.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6314
2020-12-11 17:58:36 +00:00
Jeff Young
7cb2d19814
Honour alt-means-disable-grid-snapping in router.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6679
2020-12-11 13:11:47 +00:00
Jeff Young
d304f12284
Formatting.
2020-12-11 12:48:04 +00:00
Jeff Young
73b7b104cd
Fix some issues with Infobar sizing.
...
This also commits to the new strategy as it wasn't really compatible
with if-def-ing anymore.
2020-12-11 12:39:40 +00:00
Ian McInerney
be4b6ec06a
Cleanup compiler warnings
2020-12-09 23:13:33 +00:00
Jeff Young
b1f0bf7334
More consistent naming.
2020-12-08 13:05:39 +00:00
Jeff Young
aa3e29ee7c
Don't re-enter router on subsequent X key.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6656
Fixes https://gitlab.com/kicad/code/kicad/issues/4504
2020-12-08 00:13:29 +00:00
Jeff Young
f09ca9ceee
Pass unhandled events when dragging in the router tool.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6630
2020-12-06 12:30:29 +00:00
Jeff Young
7b347d793b
Change gears on no-connect net generation. See bug rpt.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6534
Fixes https://gitlab.com/kicad/code/kicad/issues/6615
2020-12-04 18:25:48 +00:00
Jeff Young
00edc85f4f
Allow layer switching when routing from pad.
...
Additionally, don't process layer events from both main loop and
transitions -- it makes for a mess.
Fixes https://gitlab.com/kicad/code/kicad/issues/4832
2020-12-02 21:17:56 +00:00
Jeff Young
f2ac6fcd44
Treat net 0 items as each being in their own net.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6534
2020-12-02 20:05:47 +00:00
Jeff Young
d06d35a74d
Formatting.
2020-12-02 20:05:47 +00:00
Jeff Young
288ab7ed6f
Minor formatting cleanup.
2020-12-01 14:04:01 +00:00
Jeff Young
06b9439dbf
Edge Cuts shapes have zero width.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6517
2020-11-26 17:42:46 +00:00
Jeff Young
9c7c05c161
Mostly formatting cleanup but a few type-casting cleanups too.
2020-11-24 22:16:41 +00:00
jean-pierre charras
976c6262f4
French translation update (fix also trailing spaces in a few sentences)
2020-11-23 11:42:25 +01:00
qu1ck
b32c2a6c90
Refactor EDA_TEXT::TransformToSegmentList() to return a vector of points
...
This allows reading text object as it is rendered through python API.
2020-11-23 07:50:54 +00:00
Jeff Young
ff3bd7e72a
Fix a crash bug in DRC, and equate Margin to Edge.Cuts.
2020-11-20 21:22:27 +00:00
Jeff Young
9e9946628a
Go back to arrow cursor on a cancel (or finish).
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6421
2020-11-19 20:09:28 +00:00
Dominik Wernberger
99da663e82
Remove unused variables plus some more fixes from CppCheck
...
Remove unused variables plus a few more fixes from CppCheck
Remove unused variables plus a few more fixes from CppCheck
2020-11-19 02:28:47 +00:00
Werni
0e44f5128c
Add const specifiers
2020-11-18 19:50:36 +00:00
Jeff Young
795e45836d
Fix assert in DRC.
2020-11-17 17:41:57 +00:00
Jeff Young
7bd31d5237
Naming conventions.
2020-11-14 18:26:03 +00:00
Jeff Young
ec020dd19f
First-class support for filled shapes.
2020-11-14 01:40:32 +00:00
Jeff Young
bdbb68f813
MODULE -> FOOTPRINT.
2020-11-13 16:04:03 +00:00
Jeff Young
3451ac3088
PCB_MODULE_T -> PCB_FOOTPRINT_T
2020-11-13 15:16:24 +00:00
Jeff Young
52a46341db
More module -> footprint.
2020-11-13 15:16:24 +00:00
Jeff Young
f5443de7f9
D_PAD -> PAD.
2020-11-13 15:16:24 +00:00
Jeff Young
84dd5108ba
Remove some "class_" prefixes from files.
2020-11-13 15:16:23 +00:00
Jeff Young
f7333ad64a
Update some classnames including archaic zone names.
2020-11-12 10:31:25 +00:00
Jeff Young
da5cfb5df1
Improve commenting.
2020-11-11 17:52:15 +00:00
Jeff Young
5e569e81e7
Performance enhancements for PNS.
2020-11-11 15:32:30 +00:00
Ian McInerney
d88eaaf477
Fix various compiler and Coverity warnings
2020-11-11 00:41:02 +00:00
Jeff Young
ce3b2921bd
Sort potential start candidates by distance from cursor.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/1926
2020-11-10 23:50:57 +00:00
Jeff Young
bd63c018c9
Don't snap synthetic priming event.
...
We need to let the consumer of the event do snapping (so that, for
instance, it can also snap to tracks, pads, etc.)
Fixes https://gitlab.com/kicad/code/kicad/issues/4365
2020-11-09 17:21:47 +00:00
Jeff Young
64876a2761
PNS_DRAGGER should report its layers.
...
Also, don't use ViewGetLayers() for visibility checking. For some
things (like vias) it deals with synthetic layers, not board layers.
Fixes https://gitlab.com/kicad/code/kicad/issues/6328
2020-11-08 17:19:37 +00:00
Jeff Young
81ea71fb80
More safety when fetching via sizes.
2020-11-07 18:50:30 +00:00
Jeff Young
ae9afdd169
SNR. (Mostly for progammers, but a little for user messages.)
2020-11-02 16:20:00 +00:00
Jeff Young
76ac8b5acf
Preflight routing so we can give a warning if it's not going to work.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4975
2020-11-02 00:10:21 +00:00
Jeff Young
8bfb255c96
Put a warning when routing can't start due to DRC violation.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4975
2020-11-01 23:46:42 +00:00
Jeff Young
409cd9d4ee
Formatting.
2020-11-01 20:25:36 +00:00
Jeff Young
f6c92ab1ea
DRAGGER needs to report it's nets.
...
Otherwise things like snapping don't work.
Fixes https://gitlab.com/kicad/code/kicad/issues/4147
2020-11-01 19:57:42 +00:00
Jeff Young
a95e2184da
A more generic error message when route start pt violates DRC.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/1812
2020-11-01 18:23:07 +00:00
Jeff Young
2c1b6e42e0
Repair ARC copy constructor.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6176
2020-11-01 00:10:08 +00:00
Jeff Young
fab87fb97b
Handle proxy items for the second PNS_ITEM as well.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6193
2020-10-31 23:23:54 +00:00
Jeff Young
843974b0bf
Cleanup and formtting.
2020-10-31 15:50:06 +00:00
Jeff Young
ba4d711356
I should have known better than to use a global....
...
When the board is closed and reopened the dummy items belong to a
freed board.
2020-10-31 15:50:06 +00:00
Jeff Young
c17ceb5875
Make sure proxy items at least get the right net for clearance lines.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5980
2020-10-30 23:37:35 +00:00
Werni
a7d5d1f091
Add more consts all over the place
2020-10-27 11:03:35 +00:00
Ian McInerney
31e626f279
Cleanup creation of all our smart pointers
2020-10-26 23:52:44 +00:00
Marek Roszko
a785f70ea1
msgpanel is a widget, shove it to the right folder.
2020-10-25 20:01:12 -04:00
jean-pierre charras
d6f91c810f
Fix a few compil and Coverity warnings.
2020-10-25 10:02:07 +01:00
Marek Roszko
81a7afc76e
Use kicad_algo directly rather than common.h
2020-10-24 08:53:11 -04:00
Marek Roszko
8d7feb3d72
Nip some common.h from headers
2020-10-24 08:28:03 -04:00
Seth Hillbrand
4085757aeb
Remove beginning/ending spaces in translations
...
Adding space padding makes translations more difficult by increasing
string counts
2020-10-20 12:08:04 -07:00
Jeff Young
3045dbd6e8
Minor code clean-up.
2020-10-20 13:38:09 +01:00
Jeff Young
d7ea70ba02
Don't assume a valid constraint.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6059
2020-10-18 20:58:53 +01:00
Jeff Young
02cbcb99df
Fix broken logic in ImportSizes().
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6049
2020-10-18 12:08:16 +01:00
Jeff Young
827699bed2
Just because we have a startItem doesn't mean it can find a width.
...
For instance, a pad with no other tracks attached will return 0.
Fixes https://gitlab.com/kicad/code/kicad/issues/6019
2020-10-17 13:57:07 +01:00
Jeff Young
23d9e2e74a
New rules engine needs non-connected items as well.
2020-10-17 13:52:18 +01:00
Jeff Young
1ee3df61c9
Improve robustness of infobar button handling.
2020-10-16 17:07:59 +01:00
Jeff Young
eea7957e16
Inform user of bad DRC rules when filling zones.
...
ADDED: facility for hypertext links in infobar.
Also made use of this for via constraint errors when routing.
Fixes https://gitlab.com/kicad/code/kicad/issues/5800
2020-10-16 12:44:20 +01:00
Marek Roszko
9656bd310b
Remove eda_item and gr_basic from eda_text.h
2020-10-13 22:46:39 -04:00
Jon Evans
cea73fe510
Restore net highlighting to router tool
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5962
2020-10-13 20:30:38 -04:00
Jon Evans
fd4b9f0efa
PNS: ratlines need to not be debug graphics
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5995
2020-10-13 20:04:47 -04:00
Tomasz Wlostowski
ac8b072284
router: fix assertion failure when starting a route on an empty board
2020-10-13 19:36:36 +02:00
Jeff Young
44dbe3577b
Create proxy items for PNS when needing to query clearances.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5929
2020-10-12 20:59:19 +01:00
Michael Kavanagh
c40483d18a
Cleanup: Move KiCad files into plugins folder
2020-10-12 16:36:08 +00:00
Jeff Young
b92cb5c930
Hook up PNS via command to new rule system.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5951
2020-10-12 00:14:32 +01:00
Jeff Young
bcebb19665
Add implied diffpair netclass rules.
2020-10-11 13:19:23 +01:00
Jeff Young
79f91481f3
Fix missing break stmt.
2020-10-11 01:11:55 +01:00
Jeff Young
f680ff17d6
Need an item to pick a netclass value.
2020-10-11 00:14:42 +01:00
Jeff Young
22cde88ba9
Allow chamfering/filleting of zone/board edge intersections.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5947
2020-10-10 23:09:43 +01:00
Jeff Young
04c4012ee6
Make track/via sizes UI more predictable and compatible with DRC.
...
Two main changes: netclass values need to go through the DRC engine
so they can interact with other rules. They're also now dependent
on the layer being routed as well as the start object.
Also make the controls adjust to each other better. For instance,
copy-track-width needs to turn off when you select a particular
track width, and a particular track width needs to zero out when
you choose copy-track-width.
Fixes https://gitlab.com/kicad/code/kicad/issues/5951
2020-10-10 19:32:30 +01:00
jean-pierre charras
c5f01501c1
PnS, router/router_preview_item: fix incorrect size of SH_RECT shape when drawing it.
...
The width of the rectangle was used instead of the width of outline (usualy 0) to
draw the shape (when dragging the pad for instance)
Fixes #5944
https://gitlab.com/kicad/code/kicad/issues/5944
2020-10-10 10:03:23 +02:00
Jeff Young
b31470012a
Previous check didn't account for router dragging.
2020-10-09 14:30:55 +01:00
Jeff Young
2ca819a627
Don't assume a DRC_CONSTRAINT has a parent rule.
...
It will still have a name, though.
2020-10-09 14:26:09 +01:00
Jeff Young
1cb0cbff2e
Fix crash when router gets notifed but has no current m_placer.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5935
2020-10-09 14:26:04 +01:00
Jon Evans
966730710e
Partial fix for routing with no start item
2020-10-08 20:38:08 -04:00
Tomasz Wlostowski
38cef95da9
router: initial support for V6 Design Rules (width/clearance/diff pair width/diff pair gap). Still a lot of work to do!
2020-10-09 00:01:26 +02:00
Tomasz Wlostowski
9bef95418e
router: wip on less intrusive dragged trace optimization
2020-10-09 00:01:26 +02:00
Tomasz Wlostowski
5e4fb46aef
MINOPTMAX: added OptThenMin() method as syntax sugar
2020-10-09 00:01:26 +02:00
Marek Roszko
f5e0754f65
Use the setCursor lambda pattern and fix up the initial cursor states
2020-10-07 23:26:14 -04:00
Mark Roszko
d9485129c8
Implement more context specific cursors using both stock and custom cursors.
2020-10-08 00:50:28 +00:00
Tomasz Wlostowski
eb8287ded8
router: bring back legacy GetEffectivePolygon() for complex pad shapes (more info in comments)
2020-10-07 16:36:37 +02:00
Jeff Young
d23d5510e7
Restore a side-effect that the router appears to depend on.
2020-10-06 00:07:34 +01:00
Jeff Young
35fa857fd8
Make sure router tool passes events it doesn't handle.
...
Fixes undo/redo when router tool is active but not routing.
2020-10-05 23:16:37 +01:00
Jeff Young
18a3c4c1db
Fix some fairly catastrophic bugs in shape collision optimization.
...
I did a little too much copy & paste last time around....
2020-10-05 22:32:07 +01:00
Jeff Young
6d50c9749c
Mark the colliding shape so we know which one to highlight.
...
Also checks the nets when checking for a pad being flashed on a particular
layer (so we don't end up thinking the currently-routing-collided track
is a connection).
2020-10-05 22:32:07 +01:00
Jeff Young
d063c56971
Move PNS pad solids to COMPOUND_SHAPE.
...
Also fixes plated holes solids to include plating thickness.
2020-10-05 22:32:07 +01:00
Jeff Young
37906511f5
Class renaming.
...
DRAWSEGMENT -> PCB_SHAPE
EDGE_MODULE -> FP_SHAPE
TEXTE_PCB -> PCB_TEXT
TEXTE_MODULE -> FP_TEXT
2020-10-05 11:55:33 +01:00
Mark Roszko
a28a0e14ba
Fix conversion warnings
2020-10-05 10:41:14 +00:00
Jeff Young
7a4900b8dc
PCB_LINE_T -> PCB_SHAPE_T and PCB_MODULE_EDGE_T -> PCB_FP_SHAPE_T
...
Also updated footprint text and zone types for consistencey.
2020-10-04 16:49:04 +01:00
Jeff Young
bb753aaadf
Clean up terminology around active & high contrast layers.
2020-10-03 22:55:34 +01:00
Mikolaj Wielgus
400c15b8eb
Add mils to units, remove useMils variables
2020-10-03 20:06:56 +00:00
Jon Evans
6f54a9982c
Remove PCB_LAYER_WIDGET
2020-09-30 19:12:26 -04:00
Seth Hillbrand
bf3cb0b1d0
Standardize pad type enums
2020-09-30 08:38:35 -07:00
Jeff Young
d3f8f2b81e
Remove confusion between pad->IsOnLayer and pad->IsPadOnLayer
2020-09-30 11:50:51 +01:00
PJM
258d1a1971
Pcb: Get proper "Break Track" location when invoked from RMB context menu
...
When invoking "Break Track" from the RMB context menu, Pcbnew
gets and uses the current position of the mouse to figure out where to
break the track. The problem is that the mouse has to be moved to select
the "Break Track" menu item, and the mouse position used is wrong. This
can result in the break in the wrong location or not happening at all.
CHANGED: This commit determines if the "Break Track" was invoked from a
context menu or a hotkey. If a hotkey, it uses the current mosue position.
If a context menu, it uses the original postion of the mouse when the menu
was opened.
2020-09-28 16:56:02 +00:00
Jeff Young
f8875bc5a6
Move std::contains to alg::contains.
2020-09-26 14:42:40 +01:00
Jeff Young
d7e80f8008
Add std::contains() to simplify a lot of code.
2020-09-26 12:40:32 +01:00
Ian McInerney
bba29a1036
Always show the track and via menu in the router context menu
2020-09-25 00:17:54 +01:00
Ian McInerney
672756a018
Move the router tools to a TOOL_MENU context menu
...
The previous way of displaying a context menu was being
usurped by the selection tool because it was displaying its
menu before DispatchContextMenu was called, and all other tools
explictly use the TOOL_MENU system.
Fixes https://gitlab.com/kicad/code/kicad/issues/5762
2020-09-24 23:51:34 +01:00
Jon Evans
18e17abd6a
Rename "Keepout" to "Rule Area"
...
These objects can now be used in advanced DRC rules and
not just for keeping things out. Also remove the restriction
that at least one of the "basic" keepout rules must be set,
so that these areas can be used for more advanced rules.
2020-09-21 23:55:02 -04:00
Jeff Young
ece2ae9805
Don't capture commands in the router eventloop that it doesn't process.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5692
2020-09-19 12:08:18 +01:00
Seth Hillbrand
f493e270ea
ADDED: Menu option to enable/disable snap to grid
...
You can now enable and disable snap to grid when drawing/editing across
all apps. You can also tie snap to grid to the visibility of the grid
to allow rapid enable/disable via grid display.
2020-09-10 20:09:30 -07:00
Seth Hillbrand
173b4ff588
Add snapping to eeschema
...
This generalizes both the SetPosition() function and ORIGIN_VIEWITEM
class away from the pcbnew-centric.
2020-09-09 10:18:15 -07:00
Tomasz Wlostowski
54ca66be72
router: NODE::AllItemsInNet() can now filter by item type
2020-09-08 01:31:42 +02:00
Tomasz Wlostowski
f2338d9faa
router: fix segfault with NPTH holes in COMPONENT_DRAGGER
2020-09-08 01:31:42 +02:00
Jeff Young
88635ee5b6
Clean up error messages.
...
Convert a lot of nags to InfoBar errors/warnings/messages, and some
that never should have been exposed to wxFAIL_MSGs.
2020-08-31 14:19:57 +01:00
Jon Evans
7a5c99ee0f
Tweak the mouse-based posture solver
...
Add an epsilon to reduce flutter
Add a lock after a certain distance
Forget the old trail when unlocking
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5381
2020-08-30 19:54:09 -04:00
Jeff Young
8b7c0cbe04
Adjust footprint zones while dragging footprint.
2020-08-28 11:05:58 +01:00
Seth Hillbrand
f4e8c194be
Revise restriction on No Copper setting
...
This allows the user to specify a NPTH with "No Copper", allowing a pad
to retain the mask layer without a copper landing.
Fixes https://gitlab.com/kicad/code/kicad/issues/3407
Fixes https://gitlab.com/kicad/code/kicad/issues/5237
2020-08-26 18:09:06 +00:00
Seth Hillbrand
adff7f749b
PNS: Addition layer smarts
...
Edge.Cuts have no parent but cross all layers, so we need to handle the
"all layers" case. Also renames "IsPadOnLayer" to "IsOnLayer".
Fixes https://gitlab.com/kicad/code/kicad/issues/5351
2020-08-25 09:42:50 -07:00
Seth Hillbrand
686af65a9b
Fix issue generating alternate shape
...
Boolean ops need boolean inputs.
2020-08-22 08:04:03 -07:00
Jeff Young
842641308f
Solids don't always have nets (even a defualt one).
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5290
2020-08-21 20:08:12 +01:00
Seth Hillbrand
9a4f92dfd9
Ensure that all pads with holes have alts
...
Alternate shapes for holes that are fallback clearance are needed in
case we have missing copper on any layer
Fixes https://gitlab.com/kicad/code/kicad/issues/5233
2020-08-20 21:50:37 -07:00
Seth Hillbrand
dd9f7c8c25
PNS: Add defensive coding to AlternateShape()
...
Adds additional check/warnings about missing alternate shapes when they
are expected.
Fixes https://gitlab.com/kicad/code/kicad/issues/5233
2020-08-19 09:02:06 -07:00
Wayne Stambaugh
ede39780e2
Remove all debugging output that cannot be disabled.
...
The use of printf, wxLogDebug, and std::err/std::out causes excessive
debugging output which makes finding specific debugging messages more
difficult than it needs to be.
There is still some debugging output in test code that really needs to
be moved into a unit test.
Add debugging output section to the coding policy regarding debugging
output.
2020-08-18 10:17:36 -04:00
Seth Hillbrand
4cc820f550
PNS: skip hulls for layers where the solid isn't
...
If we don't have an object on the required layer and there isn't a
through-hole (m_alternateShape), then we shouldn't return a hull
Fixes https://gitlab.com/kicad/code/kicad/issues/5233
2020-08-18 06:53:03 -07:00
Seth Hillbrand
5c3a1d059e
Fix memory mgmt issue with SOLID shapes
...
We don't delete items from the CTOR but we do need to check if they
exist in the incoming SOLID before cloning
Fixes https://gitlab.com/kicad/code/kicad/issues/5214
2020-08-17 06:16:11 -07:00
Seth Hillbrand
afc94fdec3
PNS: Be better about handling multiple layers
...
Rather than adding pads/vias multiple times for each layer, we introduce
the "alternate shape" idiom to PNS that allows us to optionally place
the collision constraint on the hole instead of the pad for those
vias/pads that have inner layers removed.
Fixes https://gitlab.com/kicad/code/kicad/issues/5158
Fixes https://gitlab.com/kicad/code/kicad/issues/5198
Fixes https://gitlab.com/kicad/code/kicad/issues/5195
2020-08-16 12:39:15 -07:00
Jeff Young
57c3d8e8d8
Make sure preview group gets added to view after a clear.
2020-08-15 21:13:44 +01:00
Jon Evans
bd14f8a82a
ADDED: New appearance control widget for PcbNew
...
Featuring:
- Layer view presets
- Per-type opacity for tracks, vias, pads, zones
- Net and netclass color and visibility controls
CHANGED: Simplified object visibilty controls
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1951
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1981
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2003
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2173
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2254
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4325
2020-08-15 15:24:28 -04:00
Jeff Young
463100d67f
Remove a long-standing hack to keep divots out of adjacent zones.
...
The new algorithm unions any adjacent zones before doing the
chamfer/fillet and then subtracts the other zones back out afterwards.
Fixes https://gitlab.com/kicad/code/kicad/issues/3812
2020-08-12 22:20:08 +01:00
Seth Hillbrand
9a66a5acad
Cleanup code line endings
2020-08-10 03:27:27 +00:00
Seth Hillbrand
5fc6b74c89
ADDED: Remove unused pads
...
This option removes copper layers from pads and vias where they are not
connected to other board elements. This allows the inner layers to be
more closely routed if the via landing pad is not needed.
Fixes https://gitlab.com/kicad/code/kicad/issues/1835
2020-08-10 03:27:26 +00:00
Ian McInerney
90a17427ee
Give the length tuning tool an inital end point that isn't the start point
...
Using the starting point as the end point means that the tool
initializes with 0 length traces and so nothing is visible.
Fixes https://gitlab.com/kicad/code/kicad/issues/1912
2020-08-08 23:41:48 +01:00
Jeff Young
7cd8f710b6
Clean up unused includes.
2020-08-08 16:25:30 +01:00
Seth Hillbrand
c57c168753
PNS: Remove items from all layers
...
subIndices control which layers the items are inserted onto and removed
from. The iterator to remove items needs to be inclusive of the
first/last layers
Fixes https://gitlab.com/kicad/code/kicad/issues/5090
Fixes https://gitlab.com/kicad/code/kicad/issues/5075
Fixes https://gitlab.com/kicad/code/kicad/issues/5034
2020-08-05 19:39:55 -07:00
Jeff Young
73832a9708
Work around an event processing failure.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4273
2020-08-05 19:36:58 +01:00
Jeff Young
e2ec9d9f00
A more fail-safe way to disallow editing while routing.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4413
Fixes https://gitlab.com/kicad/code/kicad/issues/5067
2020-08-05 16:51:58 +01:00
Jeff Young
59ba793096
Disable various combinations of router and editing commands.
...
They just confuse each other.
Fixes https://gitlab.com/kicad/code/kicad/issues/5067
2020-08-04 14:32:02 +01:00
Jeff Young
74b9cce682
Try again at dragging module edges.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5037
2020-08-03 23:53:45 +01:00
Jeff Young
ef2388b5bb
Fix issue with dragging flipped MODULE.
2020-08-02 17:05:13 +01:00
Jeff Young
d586495c0a
Preview fp edges & text while dragging in router.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5037
2020-08-01 15:40:34 +01:00
Tomasz Wlostowski
89a953e039
Migrated GetEffectiveShape(s) to SHAPE_COMPOUND
2020-07-29 23:14:03 +02:00
Tomasz Wlostowski
85aecc15ee
router: fix mistake in 45/free-angle mode selection when dragging corners
2020-07-29 23:14:03 +02:00
Tomasz Wlostowski
c2b9db293f
router: prevent heap crash when initial walkaround line is empty
2020-07-29 23:14:03 +02:00
Seth Hillbrand
1f5fb979b9
Keep PNS item RTree on layer-by-layer
...
Rather than extra splitting of the RTree that we use for collision
detection on types and direction, we limit this to checks on
layer-by-layer basis. This also allows for layer expansion by using
deque of RTrees rather than fixed index
This fixes the missing layernumbers and keeps the layers in a deque to
prevent re-allocation on expansion.
Replaces ad94b6205
2020-07-29 11:21:00 -07:00
jean-pierre charras
f00c59c446
Fix a few Coverity warnings.
2020-07-29 09:26:57 +02:00
Seth Hillbrand
ad94b6205a
Revert "Keep PNS item RTree on layer-by-layer"
...
This reverts commit a34d33c460
.
The commit did not work properly for shove routing. Will revist in
later commit
2020-07-28 21:20:19 -07:00
Seth Hillbrand
a34d33c460
Keep PNS item RTree on layer-by-layer
...
Rather than extra splitting of the RTree that we use for collision
detection on types and direction, we limit this to checks on
layer-by-layer basis. This also allows for layer expansion by using
vector of RTrees rather than fixed index
2020-07-28 10:17:56 -07:00
Jeff Young
46602148dc
Fix overly aggressive assert.
2020-07-28 13:35:37 +01:00
Jeff Young
4153309fba
Add defensive code.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4941
2020-07-25 23:54:04 +01:00
Jeff Young
bf445c1a95
Performance enhancements.
...
1) cache pad polygon outlines
huge improvement in connectivity performance and a decent
improvement in DRC performance
2) don't pre-allocate CONTEXT stack
significant improvement in DRC rule performance
2) don't keep re-encoding strings
decent improvement in DRC rule performance
2020-07-25 13:03:33 +01:00
Tomasz Wlostowski
70b98c3b49
router: dump entire event log + annotated PCB upon user request
2020-07-22 18:05:54 +02:00
Tomasz Wlostowski
379aa8f3b5
router: clearer distinction between LOGGER and DEBUG_DECORATOR classes.
...
The first one keeps a log of events (start routing, mouse motion, etc).
The second allows for adding temporary debug drawings and messages which are stored synchronously with the events in LOGGER.
The event stream together with the PCB design (now with UUIDs) can be used to deterministically replay routing bugs as the user sees them.
2020-07-22 18:05:54 +02:00
Tomasz Wlostowski
2a2e389a94
router: auto-guess track posture from mouse movements, experimental!
2020-07-22 18:05:50 +02:00
Tomasz Wlostowski
fd07e94760
router: abstract segment links into a LINK_HOLDER interface. DIFF_PAIRS are now also linkable
2020-07-22 17:04:42 +02:00
Ian McInerney
450107e453
Remove if statement with duplicated branches in router
2020-07-22 00:18:30 +01:00
Jon Evans
2f31bf278b
Fix layer hotkey dispatch
...
Hotkeys received by more than one tool need AF_NOTIFY
2020-07-11 21:59:16 -04:00
Jon Evans
5d118b0700
More visibility settings infrastructure
...
ADDED: Three-state high contrast mode action
ADDED: Save contrast mode in local settings
Also some initial infrastructure for layer presets
2020-07-11 21:59:07 -04:00
Jon Evans
0148c1db84
Support layer switch hotkeys while routing
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4699
2020-07-03 19:49:19 -04:00
Jon Evans
3d7610d6b9
Hide PNS debug graphics behind an AC key
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4061
2020-07-03 19:33:36 -04:00
Jon Evans
c0aa6965de
Migrate PcbNew project settings to new framework
...
Various architecture upgrades to support this.
Creating a BOARD now requires a valid PROJECT, which caused
some (mostly transparent) changes to the Python API internals.
ADDED: Project local settings file
CHANGED: Board design settings are no longer stored in PCB file
CHANGED: Net classes are no longer stored in PCB file
CHANGED: Importing board settings now reads boards, not just projects
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2578
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4070
2020-07-02 22:08:54 -04:00
Jeff Young
2cfd6ba978
Fix a couple of integer overflows.
2020-07-02 22:52:37 +01:00
Jeff Young
eb1ff80d57
SHAPE collision fixes.
...
1) An actual distance of 0 is still a collision, even if the allowed
distance is 0.
2) Be consitent about edges and interiors. Everyone expect the edge
of a RECT to be part of the RECT; same with a CIRCLE. SHAPE_POLY_SET
shouldn't be any different. (And SHAPE_LINE_CHAIN was a split-
personality with the edge considered part of it for Collide() but not
for PointInside()).
2020-07-02 21:38:37 +01:00
Jeff Young
441dfa30f0
Return individual custom pad shapes instead of a SHAPE_POLY_SET.
...
Also implements an optional pointer to return the actual distance
from all the SHAPE collision routines.
Fixes https://gitlab.com/kicad/code/kicad/issues/4774
2020-07-02 17:09:15 +01:00
Ian McInerney
17adb6c3c6
Add context menu to route and zone toolbar items
...
ADDED: Context menu for route and zone toolbar items
2020-06-26 21:29:03 +00:00
Jeff Young
d01b29ab37
Cleanup pad geometry handling.
...
There were a lot of plotters, exporters, etc. that were rolling their
own implementations.
This also introduces a lazily-built set of SHAPE objects for doing
collision detection and some forms of rendering (and later DRC).
2020-06-22 22:28:37 +01:00
Jeff Young
aeed8e6e2c
Finish implementation of DRAWSEGMENT::C_RECT.
...
It's currently only supported in the Footprint Editor. It could be
easily added to the board editor (all the code is there), but the board
editor is a little short on room in the drawing tools toolbar.
2020-06-15 20:51:31 +01:00
Jeff Young
47ab7c78a6
Divorce GRID_HELPER from the parent frame.
...
This moves GRID_HELPER fully into the tool framework.
2020-06-13 22:44:16 +01:00
Seth Hillbrand
a8ab668122
Move SHAPE_ARC to start->mid->end format
...
The arc shapes need to connect with their adjacent points. By storing
the relevant points, we allow exact point matching on both ends of the
arc as well as localize point storage.
2020-06-13 11:23:14 -07:00
Seth Hillbrand
1c46bf1955
PNS: Use segment shape for all oval pads
...
Instead of calculating a simple polygon for the oval pads that are
rotated, we use a rotated segment.
Fixes https://gitlab.com/kicad/code/kicad/issues/4604
(cherry picked from commit 25b8da8e3b
)
2020-06-04 20:29:25 -07:00
Seth Hillbrand
674226f99f
pcbnew: Set flag when cancelling during routing
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4475
2020-06-04 15:48:01 -07:00
Jon Evans
c7daf8a8f3
ADDED: Cross-probe highlighting of bus members
...
Note: this is a basic implementation but it could be
improved once we include bus information in the netlist
and pcbnew can natively keep track of buses and nets
instead of just nets.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4158
2020-05-24 13:30:23 -04:00
Ian McInerney
6692935808
Consolidate common viewer actions across cvpcb and pcbnew frames
...
* Consolidate the measure tool into one tool (this gives cvpcb
unit changing and snapping capabilities in its measure tool)
* Transition cvpcb to use actions for the sketch modes
* Replumb how magnetic items settings are stored and used
2020-05-24 11:58:33 +01:00
Jeff Young
05855a5a1c
Performance enhancements for DRC.
2020-05-18 13:38:17 +01:00
Jeff Young
3c3984a6fc
Generalize default footprint fields.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/2289
2020-05-08 23:30:33 +01:00
Jon Evans
51eac3e3e6
Split pcbnew and footprint editor settings getters for clarity
2020-05-05 21:46:00 -04:00
jean-pierre charras
83cb9c0d14
Fix a few Coverity and compil minor warnings. Remove dead code
2020-04-21 12:47:48 +02:00
Michael Kavanagh
7db355e34a
ADDED: TOOL_ACTION for switching PNS router mode.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/2249
2020-04-19 22:44:05 +00:00
Jeff Young
9c8941e040
Remove a bunch of globals.
2020-04-16 17:34:46 +01:00
Tomasz Wlostowski
4a3cd77416
router: smarter way to check the shove direction without using silly heuristics
2020-04-15 13:00:48 +02:00
Jeff Young
6e800bddae
Rationalize penWidth processing as first step in removing some globals.
2020-04-13 20:58:13 +01:00
jean-pierre charras
bdada70ee7
Cosmetic enhancements: add bitmaps to a few context menus.
...
Fix also a minor compil warning.
2020-04-12 10:29:28 +02:00
jean-pierre charras
ffe0b4aba1
Fix a few Coverity warnings.
2020-04-02 14:21:09 +02:00
jean-pierre charras
ddb7b2b2b7
pns router: fix possible hang when using "end" key to finish the current track.
...
Add also left double click (same as "end" key) to finish the track.
Fixes #4116
https://gitlab.com/kicad/code/kicad/issues/4116
2020-04-02 14:21:09 +02:00
jean-pierre charras
e811101567
fix a few Coverity warnings.
2020-04-01 09:34:44 +02:00
jean-pierre charras
6e47f147aa
A few Coverity fixes.
2020-03-30 09:50:26 +02:00
jean-pierre charras
9d2712a824
Fix a few Coverity warnings.
...
It also fix:
Fixes #4082
https://gitlab.com/kicad/code/kicad/issues/4082
2020-03-29 18:42:24 +02:00
Seth Hillbrand
4dfe630b28
PNS: Moving the rest of the placer to Fix/Commit
...
Springback introduced a new PNS structure to check for valid placement
as well as separating the Fix/Commit routines. This updates the
remaining placers to utilize the new structure.
Fixes https://gitlab.com/kicad/code/kicad/issues/4008
2020-03-06 09:56:44 -08:00
Seth Hillbrand
f6317fba82
PNS: Protect drag from null deref
...
Items that do not have nets will not be in the index, so we need to
avoid the null pointer when adding drag tagets
Fixes https://gitlab.com/kicad/code/kicad/issues/4009
2020-03-06 09:32:04 -08:00
Seth Hillbrand
0417a6b409
PNS: Fix missing via on zero-length
...
The current node needs to be kept for zero-length lines when placing a
via.
Fixes https://gitlab.com/kicad/code/kicad/issues/4005
2020-03-05 15:02:40 -08:00
Seth Hillbrand
b0d9838fb4
PNS: Correct assertion when dragging
...
Dragging using highlight caused an assertion as the duplicated lines
were being re-added with their old links still inplace. While this was
probably fine as the link references shouldn't be stale, we clear them
to allow for the possibibility that the dragger will adjust the links in
the future.
2020-03-05 08:47:06 -08:00
Seth Hillbrand
4c2626f6b0
PNS: Don't use PNS margin to calc bump direction
...
The bump direction should only be concerned with physical points to
calculate the heuristic for loop-back otherwise we get too many false
positives.
Fixes https://gitlab.com/kicad/code/kicad/issues/3971
2020-03-04 19:22:57 -06:00
Seth Hillbrand
fe8524b9bb
Update DIFF_PAIR_PLACER to new callbacks
...
Needs to handle changes to PNS_ROUTER. This does not implement
springback or backspace in DIFF_PAIR_PLACER, only allows committing
lines as before
Fixes https://gitlab.com/kicad/code/kicad/issues/3988
2020-03-04 17:23:04 -06:00
Seth Hillbrand
d4cbc348de
PNS: avoid committing route with nothing
...
The node is not neccesarily populated when committing, so we need to
check for validity first.
Fixes #3984 | https://gitlab.com/kicad/code/kicad/issues/3984
2020-03-03 14:02:32 -08:00
Seth Hillbrand
9769e1020b
PNS: Don't link unroutable items
...
The joint map only works for items that are routable, so don't bother
adding unroutable items as this only takes additional time to process
Fixes #3976 | https://gitlab.com/kicad/code/kicad/issues/3976
2020-03-03 12:42:56 -08:00
Seth Hillbrand
d6706c257c
PNS: clear via when fixing route
...
When fixing the route, we need to clear the via to avoid re-placing it
on each future click.
Fixes #3966 | https://gitlab.com/kicad/code/kicad/issues/3966
2020-03-02 16:22:34 -08:00
Seth Hillbrand
386147628e
PNS: Initialize placement test
2020-03-02 16:22:34 -08:00
Seth Hillbrand
3c19704349
PNS: Don't add null items to drag
...
Not all footprint pad items are connected to elements in the PNS, so if
we don't find the parent element, we avoid later crashes/assertions by
skipping their addition
Fixes #3972 | https://gitlab.com/kicad/code/kicad/issues/3972
2020-03-02 11:28:14 -08:00
Seth Hillbrand
18db471967
PNS: Line placer returns false when nothing committed
...
The true/false return should be triggered on whether any elements have
been commited to the line
Fixes #3969 | https://gitlab.com/kicad/code/kicad/issues/3969
2020-03-02 11:11:13 -08:00
Tomasz Wlostowski
a28f58d14d
router: fix regression in PNS_KICAD_IFACE treating newly created items as invisible (side effect = non-45 degree angles due to incorrect snapping)
2020-02-29 20:41:31 +01:00
Tomasz Wlostowski
6850067182
router: commit traces made in single stroke/click (fixes regression introduced with Backspace support)
2020-02-29 20:40:19 +01:00
Tomasz Wlostowski
e5fff302a3
router: fix arc drawing in ROUTER_PREVIEW_ITEM
2020-02-28 23:52:33 +01:00
Tomasz Wlostowski
e0bad936bf
router: enable inline dragging of components
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
44905e1b0a
router: initial support for dragging components with traces attached
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
b2b1edbcd1
router: KICAD_IFACE can now commit changes to module positions
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
b6e059f018
router: use a common base class for all dragging algorithms
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
1d0ee66187
router: kill debug printf()
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
77478014d8
router: kill some warnings in OPTIMIZER
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
796aec6e6e
router: SOLID::SetPos() should update the shape position too
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
5a16fda11a
router: allow modification of SOLIDs in PNS::NODE
2020-02-28 23:17:15 +01:00
Seth Hillbrand
7cb3ed456e
PNS: No free-angle drag at the moment.
...
Fixes #3954 | https://gitlab.com/kicad/code/kicad/issues/3954
2020-02-28 12:43:59 -08:00
Jon Evans
9cc5b4b3f9
Fix management of nested settings for PNS
2020-02-27 22:53:00 -05:00
Tomasz Wlostowski
f77d2f8cb8
router: option to enable optimization of the track being dragged
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
4525a17076
router: backspace key to undo last fixed segment(s)
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
b5c11f21e5
router: rounding mode context menu entry
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
d1a5d8c78b
router: don't forget the tail when toggling via placement
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
8ddeb966ca
pns: drag wip on walkaround via mode
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
cf4945afaa
router: optimizer should now handle 'keep vertex' constraint correctly...
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
53c3f95ac4
router: initial attempt at walkaround mode for dragger
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
c0314dbb29
router: dragger can now optimize also the segment being dragged
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
a6d3ae3c5b
router: NODE now can also query joints
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
6b767d50c3
router: initial support for user-provided constraints for the optimizer
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
c2d95a00c1
router: improved handling of corner cases in LINE::Walkaround
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
37a754c4dd
router: initial attempt at improved 'aim at mouse cursor' strategy in walkaround mode, wip...
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
43b71cd9e3
router: Clear() method for PNS::LINE
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
dbe90e163e
router: use one global logger object
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
4281bd8207
router: keep board in base Kicad Iface class
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
9e605d6958
router: DEBUG_DECORATOR now allows to name each primitive
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
065d634b30
router: put non-graphical part of ROUTER_IFACE into a parent class (for unit tests)
2020-02-27 22:02:56 +01:00
Jon Evans
9f8ff236d6
Fix load and save of PNS settings
2020-02-25 19:36:36 -05:00
jean-pierre charras
f206db2041
Pcbnew: fix crash on exit after using the track length tool.
...
This is due to the fact the PNS_TUNE_STATUS_POPUP was not hidden
before calling its destructor.
It is now fixed by setting its virtual destructor calling Hide().
TODO: see if it could be used for any class derived from STATUS_POPUP.
(We already have this issue in other places)
2020-02-22 10:34:11 +01:00
Seth Hillbrand
8c19b4b6ae
pcbnew: Adding arcs to PNS
...
This is allows ARCs in tracks to be synchronized with
the PNS router. Note this does not yet include the UI components
to route curved traces
2020-02-21 16:11:41 -08:00