Commit Graph

1230 Commits

Author SHA1 Message Date
Seth Hillbrand 77fbb495f2 Highlight net during inline drag
Keep consistent UX between inline drag and drag started in the router
tool itself by highlighting the net being dragged

Fixes https://gitlab.com/kicad/code/kicad/issues/9919
2021-12-09 09:28:43 -08:00
Jeff Young 95087c6de5 Fix clearance outlines for router head.
Fixes https://gitlab.com/kicad/code/kicad/issues/9885
2021-12-06 15:51:53 +00:00
Jon Evans 5ba215c8ea Use actual width when previewing PNS lines 2021-12-05 13:41:39 -05:00
Jon Evans 7de9e48b57 PNS: Fix tuning calculations through locked segments
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9727
2021-12-05 13:35:28 -05:00
Jeff Young 5cb2641142 Fix nullptr dereference in router.
Fixes https://gitlab.com/kicad/code/kicad/issues/9844
2021-12-02 13:20:44 +00:00
Jeff Young a596a1f2e2 ROUTER_TOOL needs to handle pads not handled by router itself.
Fixes https://gitlab.com/kicad/code/kicad/issues/9839
2021-12-01 22:25:02 +00:00
Jeff Young 3c0b10b022 Don't use approximated shapes for router hulls.
We only do 45-degree routing anyway so we might as well build an
octagonal-based hull from the get-go.

Fixes https://gitlab.com/kicad/code/kicad/issues/7672

Fixes https://gitlab.com/kicad/code/kicad/issues/9544

Fixes https://gitlab.com/kicad/code/kicad/issues/9833
2021-12-01 19:44:30 +00:00
Jeff Young 09ed60feb3 Don't make inferences about object type based on shape. 2021-12-01 19:44:30 +00:00
Ian McInerney 63560ecd7b Remove RM_Smart state from router tool
It was never fully implemented and there was no way to switch into this
route mode.
2021-12-01 09:52:37 +00:00
Jon Evans a746d31038 PNS: Fix loop removal outside shove mode
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9680
2021-11-27 15:21:47 -05:00
Jon Evans 8a0f8c329f PNS: Fix DP gateway generation when pad distance < gap
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9306
2021-11-27 14:03:19 -05:00
Seth Hillbrand 4b226b8172 Unify our breakTracks routines
Fixes https://gitlab.com/kicad/code/kicad/issues/9793
2021-11-27 06:34:47 -08:00
Jeff Young 6652e5acf4 Draw pad holes when dragging.
Most of the time they're under the pad, but the provide needed
info when the hole is larger than the pad.

Fixes https://gitlab.com/kicad/code/kicad/issues/9786
2021-11-27 00:55:09 +00:00
Jeff Young 9547c72e73 Teach router about different keepout rules.
Fixes https://gitlab.com/kicad/code/kicad/issues/9786
2021-11-27 00:55:04 +00:00
Jeff Young 99ec2b1801 Don't hide original object when highlight is only part of it.
Fixes https://gitlab.com/kicad/code/kicad/issues/9772
2021-11-25 23:42:13 +00:00
Jon Evans da458535c4 PNS: Avoid flickering clearances on new items
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9773
2021-11-25 15:38:04 -05:00
Jon Evans 63718323bc PNS: Holes need to be moved with solids
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9773
2021-11-25 15:31:18 -05:00
Jon Evans b4342d813b Fix SHAPE_LINE_CHAIN::Slice when end is an arc followed by a point
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9770
2021-11-25 10:05:33 -05:00
Jeff Young ade8fe4333 When dragging footprints pads with holes also need to be taken along.
Otherwise (aside from not colliding with their dragged location) we
won't update their locations and then if they happen to be the first
pad in the footprint we'll try to update the footprint's location post-
drag with the pad offset (which will be {0,0}.

This is easily reproducible with the test document in the bug in the
"fixes" statement.

Fixes https://gitlab.com/kicad/code/kicad/issues/9391
2021-11-25 14:54:12 +00:00
Jeff Young f9e1429c60 Naming conventions. 2021-11-25 14:54:12 +00:00
Jeff Young 5985a21b74 Offset internal items by drag amount.
Some tools move only preview items while keeping the real items
hidden.  Those tools must use this new offset parameter.

Other tools move the real items.  Those tools can ignore this
parameter (which will default to {0,0}).

Fixes https://gitlab.com/kicad/code/kicad/issues/9391
2021-11-25 14:54:12 +00:00
Jeff Young ba6ae4fa9b Kicad has many plugins. This one is for the pcb. 2021-11-25 12:56:46 +00:00
Jeff Young 1c3e1df3ca Not all holes are round.
We currently only need this to work for vias as we're a long way
from being able to support it for pads, so just check the hole
shape.

Fixes https://gitlab.com/kicad/code/kicad/issues/9735
2021-11-23 14:36:05 +00:00
Tomasz Wlostowski e56e61ffb5 router: fix typo in the DP tuning fix patch 2021-11-23 00:21:38 +01:00
Tomasz Wlostowski 89228e1ebe router: increase parallelity detection threshold for AssembleDiffPair()
Partially fixes the misrecognized diff pairs issue.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/8567
2021-11-22 01:35:12 +01:00
Tomasz Wlostowski e60386f028 router: disable 'limit corner count' optimization for via dragging
It seems to be completely preventing optimization instead of preventing over-optimization in case the head is a dragged via.
To be investigated in more details in V7.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/8665
2021-11-22 00:05:17 +01:00
Tomasz Wlostowski ccf9a72078 router: fix ghost dots issue in router preview items
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/8665
2021-11-22 00:05:17 +01:00
Roberto Fernandez Bautista bbafce6ab3 PNS: Don't clip the line in the middle of an arc - just start again
In shove mode, returning an empty line results in keeping the current
head, which should be okay for now.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9023
2021-11-21 19:53:03 +00:00
Roberto Fernandez Bautista 4e0ad07eb0 PNS::Shove Add margin when generating hulls for arc segments
Partially fixes https://gitlab.com/kicad/code/kicad/-/issues/9023

There is still a case where if the shover does not find a solution,
we try clipping the arc and it still collides.
2021-11-21 17:13:21 +00:00
Jon Evans b1878fcc54 ClipVertexRange: fix fallout of NextShape API change
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9711
2021-11-21 11:03:22 -05:00
jean-pierre charras 302c5ab537 Fix an issue created by commit 9e3362d1.
the issue was the graphic cursor was locked on the first snap point
in route mode, once a snap point is found.
2021-11-21 15:37:03 +01:00
Tomasz Wlostowski c40e921cb3 router: remeber to make a shove lockpoint when placing a lone via
Note to self: works around a possible bug in CommitPlacement()/RewindToLastLockedNode()

fixes: https://gitlab.com/kicad/code/kicad/-/issues/9695
2021-11-21 00:18:20 +01:00
Jeff Young 9e3362d14c Snap mouse point before picking startItem.
Fixes https://gitlab.com/kicad/code/kicad/issues/9700
2021-11-20 13:44:16 +00:00
Jeff Young 1f4858c314 Show holes in router preview items for vias.
Fixes https://gitlab.com/kicad/code/kicad/issues/9658
2021-11-20 12:21:24 +00:00
Jon Evans ed478f5ec0 Revert to ERROR_INSIDE for complex pad shape hulls in PNS
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9544
2021-11-15 19:15:05 -05:00
Jon Evans 8ec3ce99ae PNS: Update shover when autocompleting on item
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9598
2021-11-10 18:17:56 -05:00
Jon Evans 59807d8d26 A better solution to discarding pending shove operations
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9553
2021-11-09 00:00:54 -05:00
Johannes Pfister 64f77b3596 PNS: Add support for 90-degree corner modes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6902
2021-11-03 02:14:23 +00:00
Jon Evans 153594b9ea PNS: Actually implement the AbortRouting API
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9425
2021-10-31 16:06:57 -04:00
Jon Evans 08700e3522 Router: show corner style in message panel 2021-10-30 09:08:52 -04:00
Jon Evans e6c3027531 Action string typo fixes 2021-10-30 08:47:36 -04:00
jean-pierre charras 63d4d84aaa pcbnew, router: fix a crash and some other issues related to microvias and blind/buried vias
- fix crash when trying to create a microvia from a internal layer (boards with > 4 layers)
- fix a bug that allowed to create a non through hole via on only one layer
- fix a bug that allowed to create a microvia on non adjacent layer pair
- when placing a via and selecting the target layer from dialog, show only allowed layers.
Fixes #9477
https://gitlab.com/kicad/code/kicad/issues/9477
2021-10-29 17:54:04 +02:00
Electro707 4afb59fda0 Added feature to switch between router modes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9414
2021-10-28 22:46:05 +00:00
Jon Evans 4a9b3d9673 PNS: clear leftover vias from previous trace in DP placer
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9283
2021-10-27 21:58:42 -04:00
Jeff Young 36d11f745e Update ratsnest while dragging footprints.
Fixes https://gitlab.com/kicad/code/kicad/issues/9391
2021-10-25 21:45:30 +01:00
Jon Evans 328d3d0d77 PNS: Fix rule resolution when starting from PTH
Have to use the routing start layer, not the first
layer of the PTH, to get the appropriate sizes
2021-10-23 22:46:31 -04:00
Jon Evans 3b18dce911 Remove vestigal setting
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9444
2021-10-23 22:12:25 -04:00
Seth Hillbrand 2a6c73b8df Check for hole before highlighting
Fixes https://gitlab.com/kicad/code/kicad/issues/9423
2021-10-19 11:25:00 -07:00
Seth Hillbrand e9205a0740 Fix mistaken comparison in highlighting
Need to compare between elements colliding

Fixes https://gitlab.com/kicad/code/kicad/issues/9413
2021-10-18 13:38:27 -07:00
Seth Hillbrand faba2b06c2 Lock track width after placing segment
We don't want to allow the full track width to change after placing a
segment when we are in follow-segment mode. This would require either
ripping up and re-solving the existing track or allowing potential DRC
errors.

Fixes https://gitlab.com/kicad/code/kicad/issues/9395
2021-10-14 09:21:14 -07:00
Seth Hillbrand 35e90d0cf4 Allow changing router mode while routing
Keeps shove active even when not using to allow switching modes during
routing.

Fixes https://gitlab.com/kicad/code/kicad/issues/9342
2021-10-12 09:55:34 -07:00
Seth Hillbrand 7f1247a23c Update track width when changed
Tracks starting from pads should change in response to the track width
changing despite having the "follow existing track" width selected.
2021-10-12 09:55:34 -07:00
jean-pierre charras 4d6b1a4e36 pns_diff_pair_placer: fix empty message when a signal of a pair is not found.
Fixes #9334
https://gitlab.com/kicad/code/kicad/issues/9334
2021-10-08 14:57:01 +02:00
Seth Hillbrand a8ec3b58ed Use via's real drill value for hole size
If the via drill is "Default" be sure to get the default value rather
than the placeholder

Fixes https://gitlab.com/kicad/code/kicad/issues/9313
2021-10-06 11:00:58 -07:00
Roberto Fernandez Bautista 2e120528c8 Length Tuner: Allow single meander when it fits on its own 2021-09-28 18:50:31 +01:00
Roberto Fernandez Bautista 71156368c9 Length Tuner: Allow controlling the side of the meander using the cursor
Also fixes an issue that did not allow single meanders to be placed
2021-09-28 18:50:31 +01:00
Mike Williams 726f9ebe3d Pcbnew: Router tool should not block drag selection when idle
The other drawing tools allow drag selection while idle. Also, it makes
it more obvious to the user when accidentally drag selecting while
routing than just doing nothing on a drag with the routing tool selected
and idle.
2021-09-27 16:05:13 +00:00
Jeff Young 5f3c67bd2b Fill in some missing GetMsgPanelItems and make some others consistent.
Also expunges a std::vector<MSG_PANEL_ITEM> cover type.
2021-09-27 00:23:40 +01:00
Jon Evans a2ad204f4b Fix off-by-one in AssembleTuningPath
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9003
2021-09-22 20:25:22 -04:00
Seth Hillbrand be799b49a8 Fix equality in dp matching
A single count is found when dp ends with matching char.  .Right(0) will
return an empty wxString() which is still valid

Fixes https://gitlab.com/kicad/code/kicad/issues/9206
2021-09-21 19:47:15 -07:00
Jon Evans cf53b053a1 Improve handling of dragging around locked segments
Locked segments now are not modified if they weren't the start item.
If a locked segment is the start item, it is automatically unlocked.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9145
2021-09-21 22:38:53 -04:00
Seth Hillbrand 22a29a42cf Generalize net DP matching
The requirement of 1-2 numbers following P/N or +/- was arbitrary and
not needed.  We also add the _ to allowable suffixes to permit DP
matching of auto-renamed nets
2021-09-20 15:30:47 -07:00
Roberto Fernandez Bautista dc1fd3d9ba PNS test app: Add logging information for curved track routing 2021-09-20 20:35:24 +01:00
Jon Evans 4d478d6f17 Fix ordering of initialization in length tuner
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9161
2021-09-14 07:48:02 -04:00
Jeff Young fdfecf5932 Don't push view control settings to the previous active tool.
See further comments in bug report.

Fixes https://gitlab.com/kicad/code/kicad/issues/9147
2021-09-13 13:28:05 +01:00
Seth Hillbrand 092cdc0bb5 Move 45° limit to hotkey
This assigns the "Tab" key to a general pcbnew 45° limitation.  Limit
can be enabled/disabled using context menu as well.

Removed the user preference for 45° limitation on graphic lines as that
is overlapping with the general limitation, which is not an editing
preference so much as a temporary adjustment to tool action.

Related to https://gitlab.com/kicad/code/kicad/-/issues/8490
2021-09-05 13:42:51 -07:00
Tomasz Wlostowski a03b6f6fc9 router: use tail start point when saving the FIXED_TAIL
fixes: https://gitlab.com/kicad/code/kicad/-/issues/8771
2021-08-25 00:36:34 +02:00
Roberto Fernandez Bautista 4c17b7ab46 WALKAROUND::Route Check if path is empty before stepping
singleStep expects a path with at least one point.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9020
2021-08-24 20:17:19 +01:00
Jon Evans 09ea630d8e Don't log a potentially invalidated item
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9006
2021-08-21 12:24:41 -04:00
Roberto Fernandez Bautista aa67abb681 PNS::NODE Use PointCount instead of calculating segment index manually
There is no need to manually calculate the segment index - we know
that the last point that was added is the start point of the segment.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/8945
2021-08-13 19:09:33 +01:00
Roberto Fernandez Bautista 0120c5fa4b PNS Length Tuning: Recover original arc tracks after tuning 2021-08-09 21:10:33 +01:00
Jon Evans e91218b876 PNS: don't mark holes only if there's also a solid violation
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8874
2021-08-08 15:41:39 -04:00
jean-pierre charras fa82fcb809 Router tool: ensure a internal layer exists when placing a microvia.
Fix also a minor compil warning.
Fixes #8931
https://gitlab.com/kicad/code/kicad/issues/8931
2021-08-07 20:29:49 +02:00
Jeff Young c51b1dad72 Generalize infobar MESSAGE_TYPE handling and use for DRC errors.
Fixes https://gitlab.com/kicad/code/kicad/issues/8782
2021-08-01 21:51:39 +01:00
Jeff Young f221220fe2 Rename layer ids file.
It hasn't had anything to do with colors or visibility for some time
now.
2021-07-29 16:03:25 +01:00
Wayne Stambaugh 78e5e98ea0 Pass VECTOR2I objects by reference instead of on the stack. 2021-07-27 08:41:27 -04:00
Jeff Young 0fb864d596 Pull some name changes back from 7.0 to ease merging. 2021-07-21 20:58:59 +01:00
Wayne Stambaugh cf00319c85 More NULL expunging. 2021-07-20 07:27:18 -04:00
Jon Evans e61b1f03b8 PNS: Discard duplicate tracks in FixRoute
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8737
2021-07-13 21:13:40 -04:00
Seth Hillbrand ff2e470a6e Remove virtual items from clearance calculations
Extends 3ea970f8c9 to ensure that virtual items do not interfere with
DRC calculations while routing

Fixes https://gitlab.com/kicad/code/kicad/issues/8788
2021-07-13 16:10:36 -07:00
Seth Hillbrand 3ea970f8c9 Don't add virtual items to the display
By definition virtual vias should only exist in the backend, not
affecting users

Fixes https://gitlab.com/kicad/code/kicad/issues/8788
2021-07-13 15:52:41 -07:00
luz paz 0446d35f0d Fix source comment/doc typos (follow-up)
Found via `codespell -q 3 -S *.po,./thirdparty -L aactual,acount,aline,alocation,alog,anormal,anumber,aother,apoints,aparent,aray,dout,einstance,modul,ot,overide,serie,te,,tesselate,tesselator,tht`
2021-07-13 10:48:17 +00:00
Jeff Young 2bd735b631 A little more safety in setting the router idle mode.
Fixes https://gitlab.com/kicad/code/kicad/issues/8765
2021-07-09 10:26:12 +01:00
Jon Evans 00f1b609c4 PNS: Don't run fanout cleanup when manually forced
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8724
2021-07-08 19:56:42 -04:00
Wayne Stambaugh 65c7958293 Coverity issue fixes.
Issues #331869, #331875, #332203, #332159, #332171, #332180, and #332648.
2021-07-08 08:33:08 -04:00
Jon Evans edc2be9018 Update width status when user choice changes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8265
2021-07-07 21:26:21 -04:00
Roberto Fernandez Bautista 4207165c26 Fix PNS deleting too many segments
Don't exit the loop pre-emptively. Need to update lastLink.
2021-07-07 19:54:19 +01:00
Roberto Fernandez Bautista cda26bd57b SHAPE_LINE_CHAIN::NextShape instead of explicitly calculating indices
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8738
2021-07-07 19:46:47 +01:00
Roberto Fernandez Bautista 81fa40d659 Code style: Fix missing space 2021-07-05 20:39:42 +01:00
Roberto Fernandez Bautista 04ff8cde5e Drag & Fillet Tracks: Ignore mouse up / click events until move / drag
Ensures that any click/mouse up events generated after clicking "OK"
in the "Override locks" dialog are ignored.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/8123
2021-07-05 20:29:25 +01:00
Jon Evans e0146f73b9 PNS: Pick up complete lines between pads when dragging components
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7614
2021-07-03 20:00:54 -04:00
Jon Evans 91ea4a0569 PNS: Pick up segments directly between pads when dragging components
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7601
2021-07-03 19:50:04 -04:00
Roberto Fernandez Bautista 3f73d8c2b5 SHAPE_LINE_CHAIN::Area() should always be positive
The algorithm relied on the assumption that the points were
ordered anti-clockwise. When ordered in a clockwise fashion, the
result was correct but negative.

Refer to https://www.mathopenref.com/coordpolygonarea2.html
for more information.
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista c3051ba48a Refactor SHAPE_LINE_CHAIN to allow two shapes per point
m_shapes now has two possible indices. The first one is populated if
the point is associated with an arc and the second index is populated
if the point is shared between two arcs.
2021-07-03 19:37:50 +00:00
Jon Evans 252bf76452 Fix off-by-one in AssembleTuningPath 2021-07-03 14:37:52 -04:00
Jon Evans 3c59e452d6 PNS: Set tuned path correctly in skew tuner
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8708
2021-07-03 14:06:30 -04:00
Jon Evans 277bf2b719 Add feedback showing current router state to the message panel
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8265
2021-07-03 13:21:51 -04:00
Jeff Young 400f4ae506 Code cleanup. 2021-07-02 15:54:26 +01:00
Jeff Young 780a8a5154 Fix another place disallowing internal microvias.
Fixes https://gitlab.com/kicad/code/kicad/issues/8716
2021-07-02 15:54:26 +01:00
jean-pierre charras 740b028180 pns_line_placer: do not constraint the 45deg of current segment in free angle mode.
Fixes #8691
https://gitlab.com/kicad/code/kicad/issues/8691
2021-07-01 16:38:31 +02:00