Commit Graph

11424 Commits

Author SHA1 Message Date
Jeff Young 83d07dc7f7 Comments. 2021-03-01 11:12:51 +00:00
Jon Evans 63b5d8db43 Pcbnew: use MRU path when opening files in standalone mode
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7734
2021-02-28 14:30:16 -05:00
Jon Evans dbb6d0fb4a Move paste and mask clearance settings back to board file
These are needed for correct Gerber plotting so need to be stored
along with the board file
2021-02-28 14:04:28 -05:00
Marek Roszko 4debfbcc53 Fix pcbnew cross probing ignoring the disabling of the cross probing zoom to fit setting 2021-02-28 10:39:51 -05:00
Jon Evans cd7a2cd807 Fix shadowing fix that caused logic bug and different shadowing 2021-02-27 20:01:14 -05:00
Jon Evans 65531accf6 DRC: allow testing against particular diff pair membership 2021-02-27 19:54:55 -05:00
Jeff Young 061218e567 Take a stab at fixing Python build issue. 2021-02-27 23:56:47 +00:00
Jeff Young 3538c8a963 Thread safety for new caches (which are also used during zone fill).
Fixes https://gitlab.com/kicad/code/kicad/issues/7749
2021-02-27 21:33:30 +00:00
Jeff Young 2606ecc619 Add isDiffPair() to custom rule syntax examples.
Fixes https://gitlab.com/kicad/code/kicad/issues/7746
2021-02-27 19:45:03 +00:00
Jon Evans ccba4b1462 Pcbnew: don't show project warning on stackup pages
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5568
2021-02-27 14:28:24 -05:00
Jeff Young 14e670408e Fix some bugs in rule examples and add some more examples.
Fixes https://gitlab.com/kicad/code/kicad/issues/7744

Fixes https://gitlab.com/kicad/code/kicad/issues/6884
2021-02-27 19:21:41 +00:00
Jon Evans d269778cd4 PNS: disable smart pads in walkaround if posture is forced
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7710
2021-02-27 13:48:01 -05:00
Wayne Stambaugh 5ca25a609e Pcbnew: fix shadow variable in expression evaluator. 2021-02-27 12:09:06 -05:00
Seth Hillbrand f952434aee Replace "pours" with "fill" in Rule Area
KiCad terminology refers to copper "Fill" rather than copper "Pour".

Also adds some tooltips for the various options

Fixes https://gitlab.com/kicad/code/kicad/issues/7740
2021-02-27 08:32:05 -08:00
Seth Hillbrand bcc3767c2a FABMASTER: Fill both kinds of silk polys
Silkscreen polygons are always filled (I think) in FABMASTER.  Other
layer polygons are not
2021-02-27 06:58:04 -08:00
Jon Evans eae9e954c3 Hide BOARD internals that shouldn't be wrapped from swig 2021-02-27 08:54:21 -05:00
Jeff Young 6d6765cdaf Improve DRC status reporting.
1) Don't report on tests not run.
2) Don't cancel subsequent tests because the current test didn't
have any constraints
3) Exit a little bit quicker when cancelled

Fixes https://gitlab.com/kicad/code/kicad/issues/7724
2021-02-27 13:44:45 +00:00
Jeff Young 4ede4e061e More DRC performance work.
Push DRC zone RTrees into BOARD so that they can also be used by
insideArea.

All these caches are a bit of an encapsulation leak, but they make a
significant impact on performance.

Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-27 11:45:04 +00:00
Seth Hillbrand 283d176cdc Use std::locale::classic() globally
This is a better alternative when imbuing streams
2021-02-26 17:21:55 -08:00
Seth Hillbrand 5d352d2373 FABMASTER: Enforce KiCad limits on line width
We require unfilled polygons to have positive width
2021-02-26 17:16:54 -08:00
Seth Hillbrand 7e0168a99d FABMASTER: Process newer outline tag
Allegro uses the subclass "DESIGN_OUTLINE" in newer version for their
edge cuts instead of just "OUTLINE".  This handles both.

Fixes https://gitlab.com/kicad/code/kicad/issues/7735
2021-02-26 17:06:56 -08:00
Seth Hillbrand c9b39aaaed FABMASTER: Process REFDES position
The reference designator is stored separately with the Tracks, so we
need to extract position/size data from it there and match back to the
components later.

Fixes https://gitlab.com/kicad/code/kicad/issues/7733
2021-02-26 17:04:21 -08:00
Marek Roszko b82fcbcad6 More exception var disuse warnings 2021-02-26 19:30:58 -05:00
Seth Hillbrand 75c525af4f FABMASTER: Handle polygons better
Polygons in non-etch layers need special handling to ensure they get
treated the same.

Fixes https://gitlab.com/kicad/code/kicad/issues/7731
2021-02-26 14:01:04 -08:00
Seth Hillbrand 2d5015c217 FABMASTER: Try harder to figure out nets
Find all intersecting points both forward and back between the filled
areas and the outlines in order to determine the proper net assignment
for the zones

Also creates rule areas for special zones instead of filled zones

Fixes https://gitlab.com/kicad/code/kicad/issues/7732
2021-02-26 13:06:06 -08:00
jean-pierre charras b31bf1e40f Always store via drill value in .kicad_pcb file.
Old boards were using UNDEFINED_DRILL_DIAMETER value in file for via drill when
the via drill value was the netclass value.
Recent boards always set the via drill to the actual value, but now we need
to be sure always store the drill value, because netclass value is not stored
in the board file. Otherwise the drill value of some (old) vias can be unknown
2021-02-26 20:57:43 +01:00
Seth Hillbrand 73dd93701a FABMASTER: demote odd graphics warning
Drill layers have many different shapes in FABMASTER.  These are not
used for board information, so we can ignore them.
2021-02-26 11:37:21 -08:00
Seth Hillbrand ae2a9ef538 Use std::locale::classic static local
Prevents performance issues when creating new locales under MSVC
2021-02-26 11:37:21 -08:00
Seth Hillbrand 103dde67f6 FABMASTER: Handle rotated/flipped custom pads
The rotate mirror actions need to line up with the expectation.
FABMASTER keeps elements board-referenced while KiCad has some elements
referenced to the board and some referenced to the footprint
2021-02-26 11:37:21 -08:00
Seth Hillbrand ff1300d13b FABMASTER: Preallocate vectors
Reserves memory for vector elements based on file size.  This helps
reduce the number of re-allocations needed when reading large files
2021-02-26 11:37:21 -08:00
Jeff Young f226373324 Add cache for insideArea() and insideCourtyard().
Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-26 19:22:25 +00:00
Jeff Young cb830f74b7 Bounding box caching comments. 2021-02-26 18:03:51 +00:00
Jeff Young d523129929 Minor performance improvements.
Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-26 17:58:08 +00:00
Jeff Young c716313a24 Fix footprint hittesting. (How in the world did that compile?) 2021-02-26 17:44:36 +00:00
Jeff Young c7a71b44e5 Zones must be entirely inside for insideCourtyard.
This is a huge performance win as otherwise we're doing *lots* of
shape collisions with ground planes.

Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-26 17:19:48 +00:00
Jeff Young 22005299af Remove old hacks for UTF8 mode.
wxWidgets' UTF8 mode wasn't thread-safe, so we had to put mutex's on
a bunch of string operations, which meant that we couldn't return
references to strings.  Now that we no longer use UTF8 mode anywhere
(and the mutex's were removed long ago), using references is a big
performance win in some places.
2021-02-26 17:19:48 +00:00
Jeff Young 86aaa2e9cb Rationalize footprint bounding boxes and cache all of them.
Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-26 13:50:27 +00:00
jean-pierre charras da005bd2a6 Pcbnew, plot files: fix very poor shape of trapezoid pads having a non null
clearance on mask or solder mask layers.
2021-02-26 10:36:04 +01:00
Seth Hillbrand c15a9e60d4 Used cached footprints without check in preview
Between the time the user loads the footprint preview in cvpcb or Add
Footprint in pcbnew, we don't need to verify cache integrity to display
the footprint.  We use the cache copy when displaying until we close the
selection window and re-open.  This limits our need to iterate over the
full directory on every footprint display.

Alternate solutions for v7 should include looking into libfswatch for
change detection
2021-02-25 15:46:52 -08:00
Jeff Young b36e1c741d Fix insidious bug which resets layer of SOLID when marking collision.
It's supposed to be setting the layer of the collsion display object,
not the host object, but there's a typo.

Fixes https://gitlab.com/kicad/code/kicad/issues/7712
2021-02-25 23:39:48 +00:00
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
Seth Hillbrand 54539d2cd7 Calculate timestamp the same way both times
Timestamps were checked using a different routine than they were
generated with, leading to the cache always being out of date.

This uses the same routine for both.  While it iterates over the
directory twice during the initial load, this will never be dominant

Fixes https://gitlab.com/kicad/code/kicad/issues/7711
2021-02-25 14:36:49 -08: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 b8c95345d0 Make sure reporters have a better default path than /bin. 2021-02-25 15:05:26 +00: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 2c009906e5 Set unprinted layer colors to background.
This allows our Black&White special cases to still work when the
hole annular rings aren't being printed.

Fixes https://gitlab.com/kicad/code/kicad/issues/7692
2021-02-25 14:23:02 +00:00
Jon Evans bba7fae104 Coverity fixes 2021-02-24 22:55:11 -05:00
Jeff Young c077612163 Make sure custom shaped pad primitives get their parents set.
Fixes https://gitlab.com/kicad/code/kicad/issues/7696
2021-02-24 22:53:58 +00:00
Jeff Young d384316335 Fix some layout issues in board stackup pane.
Also decided the extra paramaters on the right weren't working out
on smaller screens and so moved Board Finish to its own panel.
2021-02-24 21:42:00 +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
Seth Hillbrand 0bab025832 Fixup toolchaining for immediate mode
The move tool can stack on others, so when we re-enter the previous tool
this caused another immediate action.  We flag re-entry in the tool
stack to check for this and avoid unexpected tool starts
2021-02-24 10:44:54 -08:00
Jon Evans 3d7c202192 Fix pad clearance bounding box and initial display
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7673
2021-02-23 22:15:39 -05:00
Jon Evans 887ad1c30d CHANGED: Copper layer count is now set on physical stackup page
REMOVED: Board layer stackup presets that were not very useful

Fixes https://gitlab.com/kicad/code/kicad/-/issues/6765
2021-02-23 21:31:12 -05:00
Jon Evans d087ede21d Don't show ratsnest on layers hidden by contrast mode
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7667
2021-02-23 20:07:46 -05:00
Jon Evans aedc65f20f Fix footprint editor default grid
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7659
2021-02-23 20:07:46 -05:00
Seth Hillbrand 0518d9c546 Add more force-immediate tools 2021-02-23 17:05:03 -08:00
Seth Hillbrand 005622027f Add component/footprint is always immediate
When a user clicks on the "Add Component", "Add Power" or "Add Footprint"
icon, they want to add the item.  Requiring an extra click on the screen
before selecting the component/footprint is not needed.
2021-02-23 16:15:31 -08:00
Jeff Young f30eab422e Don't allow footprint text item columns to be resized.
We auto-size them in the code and doing both produces nothing but a
mess.

Also improves the auto-sizing for the layers drop-down (particularly
needed for the new, somewhat longer, layer names.

Fixes https://gitlab.com/kicad/code/kicad/issues/7671
2021-02-23 17:46:15 +00:00
Jeff Young b48071015b Don't reset focus flag yet on non-GTK platforms. It's required.
Fixes https://gitlab.com/kicad/code/kicad/issues/7671
2021-02-23 17:46:15 +00:00
Seth Hillbrand 154d56b4f4 If items exist on the "Rescue" layer, prompt user
Don't allow Rescue items to enter the board design.  This prompts the
user to either delete them or move them to the Comments layer.
2021-02-23 09:25:00 -08:00
Jeff Young 7f892669cc Consistent punctuation. 2021-02-23 12:46:27 +00:00
Jeff Young b1943bf6b6 Don't shout at the user. 2021-02-23 12:45:37 +00:00
Jeff Young a3b9e8ddb4 Round 2 of Worksheet -> Drawing Sheet. 2021-02-23 11:57:44 +00:00
Seth Hillbrand 2013a801d1 Fix zone merge undo
Also remove an implicit zone merge that was happening when the user
edited the zone parameters.  This appears to have been a feature but it
happened without a) telling the user and b) having the option to prevent
it.

Fixes https://gitlab.com/kicad/code/kicad/issues/7661
2021-02-22 15:45:17 -08:00
Seth Hillbrand b484c0787b Disable commands in SingleTop
We cannot do forward/reverse annotation in Single Top mode because we
depend on shared memory access.  This disables the menu options in this
case and replaces the toolbar update pcb icon with the import netlist,
which is more appropriate for single top mode

Fixes https://gitlab.com/kicad/code/kicad/issues/7637
2021-02-22 14:49:13 -08:00
Seth Hillbrand bac7b3e77a Protect against dynamic_cast
Items might not be FOOTPRINT, in which case the dynamic_cast will return
nullptr.  Check for this in the subfunction
2021-02-22 10:12:54 -08:00
Seth Hillbrand 26995b10fb Fix uninitialized ptr 2021-02-22 10:07:40 -08:00
Jeff Young cad5198ab7 Worksheet -> (industry standard) Drawing Sheet. 2021-02-22 17:35:46 +00:00
Seth Hillbrand a6263fc595 Remove superfluous "Rebuild Ratsnest" button
This happens when clicking OK already and there is nothing to change
before then.
2021-02-22 09:16:20 -08:00
david-beinder c1aa50e522 Notify control when removing items without parent
Fixes https://gitlab.com/kicad/code/kicad/issues/7441
2021-02-22 14:00:13 +00:00
Roberto Fernandez Bautista 09ebfcd650 CADSTAR Importer: Fix Code Style
- Rename member variable names to use the 'm_' prefix
- Rename a few object types that clashed with KiCad object names, such
  as BOARD and SCHEMATIC, to avoid the use of '::' to access the KiCad
  objects.
- Remove some unused code.
2021-02-22 13:24:00 +00:00
Jon Evans 67f16110af Fix netlist QA after API changes in 8a12aa4e 2021-02-21 20:30:57 -05:00
Jeff Young ba2d0cdd62 Nullptr safety. 2021-02-22 01:14:06 +00:00
Jon Evans 68b81c8271 Don't copy footprint text along with the footprint
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7647
2021-02-21 19:59:16 -05:00
Jon Evans 6fa0ac45af Re-enable custom grid settings for Pcbnew
Add a reset button that will only show up if the user
edits the JSON configuration for grids. This is a temporary
measure until we have a real grid editor GUI in V7.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/7595
2021-02-21 15:33:13 -05:00