Commit Graph

13385 Commits

Author SHA1 Message Date
Wayne Stambaugh 0bdbfe1446 Pcbnew: add plot on all layers feature.
ADDED: Any addition board layers can be plotted on all selected board layer
when plotting.

CHANGED: The new plot to all layers feature made the plot edge cuts option
obsolete.  Users must now select the edge cuts layer from the list of
plot to all layer selections to include edge cuts on all layers when
plotting.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2449
2022-04-02 14:33:40 -04:00
Thomas Pointhuber bd18e340f4 eagle: introduce *.lbr footprint import test
Bugs found but not fixed yet:
* Reference and Value are not converted correctly yet
  * HOTFIX: test commented out
* GP3906-TLP and UBLOX_ZOE_M8-0-10 are not able to import the description again
  * HOTFIX: description removed from gold file
2022-04-02 20:07:16 +02:00
Thomas Pointhuber 406c528ab7 altium: Create region for items on the KEEP_OUT_LAYER and use new Track unit-tests 2022-04-02 18:17:19 +02:00
Jeff Young f7cdc7af75 Apply a more sophisticated test for ignoring isInCoupledDiffPair.
The basic problem is that the DRC engine does length testing and skew
testing by collecting all the diff pair constituent parts and pairing them
itself.  Since each part is collected on its own, we need to ignore the
'B' unit when evaluating any conditional expressions.  However, doing this
in general means that when evaluating "OwnClearance()" we also ignore the
'B' unit and return the diff pair CLEARANCE_CONSTRAINT when we shouldn't.

This implements a more discerning test which know what the current requested
constraint is when evaluating expressions.

See also https://forum.kicad.info/t/solved-custom-differencing-rule-not-working-drc/34034/6

Fixes https://gitlab.com/kicad/code/kicad/issues/11314
2022-04-02 15:12:42 +01:00
Marek Roszko b18e441a88 Free memory in dxf import sooner on bad_alloc 2022-04-02 09:57:30 -04:00
Marek Roszko 9f8c0a8185 Catch memory exhaustion trying to import large DXFs
See https://gitlab.com/kicad/code/kicad/-/issues/11308
2022-04-01 23:15:06 -04:00
Seth Hillbrand 737d65fd36 Skip zero-size elements when converting
Also fixes an assertion when converting to polygon from the board editor

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

(cherry picked from commit 6706a5c462)
2022-04-01 13:24:10 -07:00
Jeff Young d174af4006 Handle textboxes moving back to RECT shape (ie: cardinal rotation). 2022-04-01 16:12:23 +01:00
Seth Hillbrand 49c48e2fe0 Consistently handle env/prj variables
User-defined variables cannot be used for internally-reserved variables

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

(cherry picked from commit c23679d9bd)
2022-03-31 17:05:53 -07:00
markus-bonk 1a9ef4bd0f Add support for using a SpaceMouse to pan & zoom in the schematic editor. 2022-03-31 19:03:41 +00:00
Jeff Young bb43a3926a Math and I don't get along. So just be pedantic about text rotation.
Fixes https://gitlab.com/kicad/code/kicad/issues/11247
2022-03-30 19:54:18 +01:00
Wayne Stambaugh c0d8657d97 Plot on all layers prep work.
We only need one bottom to top layer sequence definition.

Plot a sequence of layer IDs (LSEQ) in the order of the sequence.

Add helper method to layer set (LSET) to create a sequence of layer IDs
using another sequence for ordering.
2022-03-29 16:08:23 -04:00
Jeff Young b78a260326 Only write Allow DRC Violations if enabled.
Fixes https://gitlab.com/kicad/code/kicad/issues/11177
2022-03-29 19:31:02 +01:00
Jeff Young a54bbfe12b Honour prime-event-location when starting router.
Fixes https://gitlab.com/kicad/code/kicad/issues/11239
2022-03-29 13:44:40 +01:00
Jeff Young a35ae8cdce Don't re-fetch selection when running select-in-same-sheet.
Fixes https://gitlab.com/kicad/code/kicad/issues/11110
2022-03-28 21:54:24 +01:00
Mike Williams e51ab86225 Schematic Drag: fixes and improvements
Fixes:
* Various special cases around junctions on pins and dragging.

* Some rotations of endpoints resulting in a 45 degree rotate.

* Some cases where it was possible to get a line with neither
  endpoint selected, and also substractive unselecting only one of two
  selected endpoints unselecting both.

* Use line midpoint for sorting.  Start and endpoints aren't
  consistent in the order they appear on the X or Y axis. So,
  we need to use the midpoint for our position for consistent
  sorting when dragging groups of parallel lines where some
  have the start and end reversed.

Other:
* Rename TEMP_SELECTED TO SELECTED_BY_DRAG. This is the actual meaning
  of the flag, and should reduce confusion as
  to when it should be used.

* Move usage of TEMP_SELECTED as an algorithmic mark to CANDIDATE
  instead.

* Fix mistaken clearing of START_POINT and ENDPOINT.

* Move endpoint setting and clearing out of narrowSelection, and into
  selectPoint and selectMultiple.

* Don't show dangling end warnings on new lines
2022-03-28 16:02:48 -04:00
Jeff Young 6fa8cab188 Don't default to Annotate All just because the selection is empty.
Fixes https://gitlab.com/kicad/code/kicad/issues/11181
2022-03-28 17:52:50 +01:00
Jeff Young a2d4351b97 Correct initialization of justification.
Fixes https://gitlab.com/kicad/code/kicad/issues/11248
2022-03-28 17:11:20 +01:00
Jeff Young 343b2681d4 Midpoints for eeschema rectangles and text boxes.
Fixes https://gitlab.com/kicad/code/kicad/issues/10362
2022-03-28 11:16:39 +01:00
jean-pierre charras 9a342458fa Fix a few Coverity and compil warnings. 2022-03-26 16:21:23 +01:00
Wayne Stambaugh 150859c973 Try Coverity fixes that don't break unit tests. 2022-03-25 16:49:29 -04:00
Wayne Stambaugh 7da7864f5e Fix some Coverity issues. 2022-03-25 15:51:05 -04:00
Wayne Stambaugh 7b2d9dfc0c Fix some Coverity uninitialized scalar variable issues. 2022-03-24 13:17:07 -04:00
jean-pierre charras a6606924f1 GERBER_JOBFILE_WRITER: fix a crash due to use of a null pointer.
Can happens when it is created from a Python script.
Fixes #11227
https://gitlab.com/kicad/code/kicad/issues/11227
2022-03-24 17:54:05 +01:00
Jeff Young 92a229eec7 ADDED separate user-defined color for page limits.
Fixes https://gitlab.com/kicad/code/kicad/issues/5271
2022-03-24 14:11:41 +00:00
Jeff Young 1d66925f5f Enable bb and/or uvias when encountering them on Altium import.
Fixes https://gitlab.com/kicad/code/kicad/issues/10044
2022-03-22 22:33:51 +00:00
Seth Hillbrand 482dbcec54 All triangular trapezoid pads
A triangular trapezoid will have the deltaX/deltaY of the same size as
the length of that axis.  This creates a three-point polygon, which is
perfectly valid for our use

(cherry picked from commit 4e98ce87c7)
2022-03-22 13:39:55 -07:00
Jeff Young 118a37f19f Fix issues with importing NPTH pads from CircuitStudio.
Fixes https://gitlab.com/kicad/code/kicad/issues/10493
2022-03-22 18:08:05 +00:00
Jeff Young 3271b43d4b Formatting. 2022-03-22 18:08:05 +00:00
Jeff Young b679a21651 Zero out parent rule when overridden by local property.
Fixes https://gitlab.com/kicad/code/kicad/issues/11197
2022-03-21 20:49:35 +00:00
Jeff Young b3ae0fdca5 A little bit of nullptr safety.
Fixes https://gitlab.com/kicad/code/kicad/issues/11077
2022-03-21 20:07:33 +00:00
Jeff Young cf611f1742 Better safety around layersets. 2022-03-21 18:19:00 +00:00
Jeff Young 40e0c8257d Rotate textbox shape along with text.
Fixes https://gitlab.com/kicad/code/kicad/issues/11187
2022-03-21 18:19:00 +00:00
Seth Hillbrand 41c2a48802 Prevent crash on unplated holes
NPTH may not be flashed on any layer, so the set-layer-visible logic
shouldn't try to determine their layer for showing.

Fixes https://gitlab.com/kicad/code/kicad/issues/11193
2022-03-21 10:39:33 -07:00
jean-pierre charras d27d2e0ad9 Pcbnew: fix lost of focus after clicking on a wxChoice in toolbar.
After changing track width, via size, grid or zoom from the toolbar, the
canvas has no longer the focus on Windows. So we force the focus after clicking
on these widgets.
Fixes #11103
https://gitlab.com/kicad/code/kicad/issues/11103
2022-03-21 18:10:07 +01:00
Jeff Young 4f62960334 Update message panel from PCB point editor and SCH drawing tools.
Fixes https://gitlab.com/kicad/code/kicad/issues/11186
2022-03-21 10:32:36 +00:00
Jeff Young 73f835437e Don't modify outer loop variable inside inner loop. 2022-03-19 19:37:01 +00:00
Jeff Young 476f1a7d4d Preload PCBnew find with selection when appropriate. 2022-03-19 19:37:01 +00:00
jean-pierre charras 6bf47e44e4 pcbnew: DIALOG_PRINT_PCBNEW: activate right click context menu inside layer list. 2022-03-19 08:10:17 +01:00
Seth Hillbrand 3b6e8464c2 Fix expand variables for built-in
Allow falling back to the alternate variable definitions if the built-in
text block variables are not set.

Also push the project into variable resolution when plotting

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

(cherry picked from commit c44d31fcfb)
2022-03-18 16:47:18 -07:00
Frank Zeeman b3a319b77e Append True to Python 3 AddPrimitivePoly() call
Fixes https://gitlab.com/kicad/code/kicad/issues/11012
2022-03-18 20:00:32 +00:00
Jeff Young 5aa561abe1 Add overlapping pad test and share some tests between board & fp editor DRC.
Fixes https://gitlab.com/kicad/code/kicad/issues/10086
2022-03-18 19:58:42 +00:00
Jeff Young dc39703d0e Bring pcbnew print dialog in line with plot.
Fixes https://gitlab.com/kicad/code/kicad/issues/2171
2022-03-18 13:37:20 +00:00
jean-pierre charras 54c9e36556 Python, board.i: fix incorrect order of an include.
The result was ignoring PCB_SHAPE in pcb_text.i.
2022-03-18 14:19:14 +01:00
Jeff Young c4c8848fa3 Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.
Fixes https://gitlab.com/kicad/code/kicad/issues/11119
2022-03-18 11:04:53 +00:00
Jeff Young 0f359c8a3b Careful of calculated fields when comparing board FPs with library.
Fixes https://gitlab.com/kicad/code/kicad/issues/10143
2022-03-17 13:19:25 +00:00
Seth Hillbrand 442aae19d9 Separate flashing check for connectivity
When building the connectivity database, we should not be using the
connectivity to check for shapes.

To make this deterministic, we introduce two flags (ALWAYS_FLASH and
NEVER_FLASH) that are used with connectivity building to determine
whether a pad is flashed for connectivity or not.  ZONE <-> PAD/VIA
connectivity will be checked with ALWAYS_FLASHED and all other
connectivity will be checked with NEVER_FLASHED if they are marked for
potential annular ring removal.  If they are not marked for removal,
they will be checked ALWAYS_FLASHED.

Fixes https://gitlab.com/kicad/code/kicad/issues/11114
2022-03-16 17:30:01 -07:00
Jeff Young 4225f92573 Slight improvements to via drawing.
Fixes https://gitlab.com/kicad/code/kicad/issues/8717
2022-03-16 14:56:32 +00:00
Jeff Young 62f813fddc Better error reporting for PTH pads. 2022-03-16 14:56:32 +00:00
Jeff Young cabcaf933c Cleanup. 2022-03-16 14:56:32 +00:00
Jeff Young fa5a484797 Remove unused variable. 2022-03-16 14:56:32 +00:00
Jeff Young f596ae3487 Allow mechanical-clearance checks between edge_cuts and other layers. 2022-03-16 14:56:32 +00:00
jean-pierre charras 567fd5ba74 Specctra import/export: fix some issues (tested only with FreeRouter):
- Better handling of locked tracks than commit cbb6ca85
- Locked tracks are now exported with attribute "fix".
- Incorrect view cleaning
- Fix memory leak.
2022-03-16 12:31:45 +01:00
Jeff Young 600dcd31ad Allow track board edge clearance violations inside the holes of castellated pads.
Fixes https://gitlab.com/kicad/code/kicad/issues/10970
2022-03-15 00:05:23 +00:00
Jeff Young 8d682002c3 Fix previous breakage from shared_ptr going out of scope.
Fixes https://gitlab.com/kicad/code/kicad/issues/10970
2022-03-14 23:57:50 +00:00
Jeff Young cbb6ca8500 Import specctra track locking.
Fixes https://gitlab.com/kicad/code/kicad/issues/11070
2022-03-14 23:02:19 +00:00
Jeff Young a81c8d4922 Save pointer to markers provider.
Fixes https://gitlab.com/kicad/code/kicad/issues/11136
2022-03-14 22:13:39 +00:00
Jeff Young e7bf4ab8fa Separate board-edge silk clearance from mask-edge silk clearance.
Fixes https://gitlab.com/kicad/code/kicad/issues/10970
2022-03-14 20:19:09 +00:00
Jeff Young 2ec21c7720 Don't check for board edge collision on castellated pads.
Fixes https://gitlab.com/kicad/code/kicad/issues/10970
2022-03-14 20:19:09 +00:00
jean-pierre charras c34dc13a8e Rework on DIALOG_CLEANUP_TRACKS_AND_VIAS: do not immediately run the cleanup engine.
The cleanup engine is now run on request, before options are selected.
Needed for large boards because the calculation time can be significant.
2022-03-14 18:12:44 +01:00
Jeff Young 65185f53a1 Rotate fp zones before comparing with library versions.
Also includes some performance fixes to not copy around triangulation
data when it's not needed.

Fixes https://gitlab.com/kicad/code/kicad/issues/10143
2022-03-14 15:53:24 +00:00
Marek Roszko d74a0cdaa3 Don't pre-scale the line width
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11122
2022-03-13 23:08:28 -04:00
Jeff Young ced1e68ea1 A bit of wxT(). 2022-03-13 16:09:06 +00:00
Jeff Young 06c1bccccd Exclude hidden text from selection in FP Editor.
Fixes https://gitlab.com/kicad/code/kicad/issues/11111
2022-03-12 23:29:01 +00:00
Jeff Young db0b733be5 Clear DRC caches before running soldermask tests again.
Fixes https://gitlab.com/kicad/code/kicad/issues/10922
2022-03-12 19:44:34 +00:00
jean-pierre charras 7fb4a2c0a5 CONNECTIVITY_DATA::IsConnectedOnLayer(): fix crash in some cases.
Fix crash when a zone do not have filled areas on a given layer.
2022-03-12 19:31:46 +01:00
Marek Roszko b8557e77ee Tweak the "pyd" extension if for windows to be completely inclusive 2022-03-12 09:22:01 -05:00
Jeff Young 0a8718cd1d Fix issue when we ask if a pad is connected to a zone we're in the middle of filling. 2022-03-12 14:17:53 +00:00
Jeff Young 89e61ff73b More performance enhancements for DRC. 2022-03-12 14:17:52 +00:00
Jeff Young e03b06927d Fix rotation problems for knockout fp text, and implement 3D rendering.
Fixes https://gitlab.com/kicad/code/kicad/issues/11086
2022-03-12 14:17:52 +00:00
jean-pierre charras f14ef477cc Fix a incorrect filename in a copy command (MSW specific).
Also fix a regression and respect the KICAD_BUILD_QA_TESTS build option.
2022-03-12 11:04:57 +01:00
Jeff Young 7ab4d67e94 Make sure line style comboboxes get a default entry.
Fixes https://gitlab.com/kicad/code/kicad/issues/11083
2022-03-11 23:19:16 +00:00
Jeff Young 6f555b6258 wxT() and some cleanup in DRC. 2022-03-11 23:19:16 +00:00
Wayne Stambaugh eec528ae48 Fix GCC build error on Linux. 2022-03-11 17:03:01 -05:00
Jeff Young ae307e1b34 Parallelize DRC triangulation, keepout processing, and sliver checking.
Also fixes issue with adding fractured polygons in sliver checking which
slowed the board from hell down to less than a crawl.
2022-03-11 20:52:11 +00:00
Jeff Young 6ce1399811 Redraw pads when mask or paste layer is visible after board setup.
Fixes https://gitlab.com/kicad/code/kicad/issues/11079
2022-03-11 20:52:11 +00:00
Thomas Pointhuber 79aafd1bd3 altium: support keepout restrictions in Arcs, Fills and Regions 2022-03-11 19:15:58 +01:00
jean-pierre charras 8d05ca5982 Teardrop rework: avoid refill zones on a not updated connectivity data.
- Teardrops have now just their shape filled (much faster than a full refill)
- The full zone refill is no longer made after recreating teardrops.
- this is more compatible with the option Auto-refill zones"
Fixes #11106
https://gitlab.com/kicad/code/kicad/issues/11106
2022-03-11 16:12:27 +01:00
jean-pierre charras 2bf56c2441 DIALOG_GLOBAL_DELETION and teardrop.cpp: fix incorrect call to GetLayer() for ZONES 2022-03-11 11:16:09 +01:00
Fabien Corona d452f79860 pcbnew: search for nets
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10601
2022-03-10 23:12:30 +00:00
Seth Hillbrand f218da6ea5 Help repair invalid rotation settings
We had a period where we were writing invalid rotations leading to
values too large by a factor of 100.  This clamps the stored values
while repairing those affected

Fixes https://gitlab.com/kicad/code/kicad/issues/11090
2022-03-10 09:44:26 -08:00
Jeff Young eb9ccea559 Performance improvement. 2022-03-10 13:46:42 +00:00
jean-pierre charras 0440aa3d83 Extend layer LAYER_LOCKED_ITEM_SHADOW to draw shadow markers on other locked items:
tracks, texts, graphics.
2022-03-09 18:50:31 +01:00
jean-pierre charras 016af235db Pcbnew: add a GAL layer (LAYER_LOCKED_ITEM_SHADOW) to draw markers on locked footprints 2022-03-09 17:54:58 +01:00
jean-pierre charras e37bb2e0c3 swig: disable a few warnings generated by pcb_shape.i, math.i and version.i 2022-03-09 17:29:29 +01:00
Jeff Young 663edcf665 Better progress indication for board from hell. 2022-03-09 14:30:21 +00:00
jean-pierre charras 878c70c1ab Pcbnew: fix erroneous IslandRemovalMode default mode in board files.
The default is ISLAND_REMOVAL_MODE::ALWAYS in *.kicad_pcb files
2022-03-09 13:17:18 +01:00
jean-pierre charras e7f379c31d Pcbnew, Knockout texts: fix issues seen with rotated texts.
Fixes #11085
https://gitlab.com/kicad/code/kicad/issues/11085
2022-03-09 11:22:05 +01:00
Jeff Young e4b56ab7f1 Performance fixes for the board from hell.... 2022-03-08 23:54:34 +00:00
Jeff Young 392a3ec131 Fix typo which leads to catastrophic performance on boards with tons of zones. 2022-03-08 20:16:37 +00:00
Jeff Young f6dac9eb13 Support text knockouts in non-copper zones. 2022-03-08 18:06:41 +00:00
Jeff Young 40fd8860fe Plotting (and some bug fixes) for knockout text. 2022-03-08 18:06:41 +00:00
jean-pierre charras b6aa5bd1ed Pcbnew: PCB_TEXT: save the Locked flag in file.
Previously, one could lock a graphic text on a board, but the lock state was not saved.
2022-03-08 17:35:26 +01:00
jean-pierre charras bafd8ac9d5 plot_board_layers.cpp: Add missing layers (USer_x) in list
Fixes #11072
https://gitlab.com/kicad/code/kicad/issues/11072
2022-03-08 14:41:10 +01:00
Jeff Young 293021c58c ADDED: knockout pcb and fp text.
Fixes https://gitlab.com/kicad/code/kicad/issues/7055
2022-03-08 13:22:20 +00:00
Seth Hillbrand 6934bc124c Move temp save files to temporary directory
Avoid excess writes to the project directory to dodge issues with remote
file systems not fully writing data.

wxRename works across disk boundaries (in theory) and falls back to
wxCopy/wxRemove when it fails

Fixes https://gitlab.com/kicad/code/kicad/issues/10747
2022-03-07 20:13:28 -08:00
Jeff Young bf0f2aa4a8 Adjust bitmap text spacing a bit so it's closer to the stroke font.
This helps the text better match the highlighting when it gets small
enough that we switch to the bitmap font for performance.
2022-03-07 20:30:50 +00:00
Thomas Pointhuber a9ebb42ecd altium: Parse keepout restrictions of tracks 2022-03-07 19:58:43 +01:00
jean-pierre charras f866d15154 Pcbnew: fix crash when clicking on a footprint on a filled zone area. 2022-03-07 13:56:47 +01:00
Jeff Young bf44ae907b Minor fix for dialog. 2022-03-07 10:26:18 +00:00