Commit Graph

16794 Commits

Author SHA1 Message Date
Seth Hillbrand 8d1b1598db Add missing file mod 2024-04-18 09:48:30 -07:00
Seth Hillbrand 0ea02fa2ff Be a little more careful about courtyard caches
Rather than utilizing the board timestamp, we check cached hash of the
courtyard results before rebuilding
2024-04-18 09:32:00 -07:00
Seth Hillbrand df5dd15c6f Protect courtyard cache regen
The courtyards are referenced by multiple calls and will be rebuilt on
command.  If this happens during zone fill (because the board timestamp
has incremented since the start) multiple threads may generate the cache
at the same time, leaving one with an invalid pointer

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17791
2024-04-18 08:41:18 -07:00
jean-pierre charras 3da5616939 step/step_pcb_model.cpp: add missing includes. 2024-04-18 13:55:49 +02:00
jean-pierre charras af8d80d91f Plot pads: Do not use pad offset twice when plotting chamfered rect pads
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17793
2024-04-18 12:53:38 +02:00
Alex Shvartzkop 55fb70ae65 STEP export: use fused shapes for pads instead of polygon approximations. 2024-04-18 13:44:14 +03:00
Alex Shvartzkop b50a1c967f Report errors and warnings when using BRep cutting algorithm. 2024-04-18 13:44:14 +03:00
Seth Hillbrand 79166510e9 Fully expand all text variables in 3d output
We were doing half of the job but we need to get the board variables as
well

Fixes https://gitlab.com/kicad/code/kicad/issues/17768
2024-04-18 02:58:21 +02:00
Seth Hillbrand f088b0d18a Calculate and show pad area in footprint editor
When selecting an SMD pad, show the area of the pad in the msg panel

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17788
2024-04-17 15:31:56 -07:00
Jeff Young a4073c2ace Provide some user hints on editing fields.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17781
2024-04-17 18:30:37 +01:00
Alex Shvartzkop 01fedb86e2 Fix shadowed variable. 2024-04-17 18:22:22 +03:00
Alex Shvartzkop d97ac47509 Try to use parallel processing in BRep cutting algorithm. 2024-04-17 18:15:17 +03:00
Alex Shvartzkop d98d7f9017 ADDED: Support 3D shape export in BREP format.
BREP doesn't support colors or label names,
but is much faster to write/read compared to STEP.
2024-04-17 17:31:10 +03:00
Alex Shvartzkop bf16f757ed STEP export: disable history to speed up hole cutting. 2024-04-17 16:09:03 +03:00
Seth Hillbrand caa18568e0 Handle DRC rules that limit PTH/NPTH in courtyards
Allows custom rules that explicitly allow holes from one footprint to
overlap the courtyard from another
2024-04-16 22:46:38 +00:00
dsa-t 822409225a STEP export: don't fail when can't construct a wire.
This can happen with very small shapes.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17774


(cherry picked from commit 481c1592ae)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-04-16 22:36:34 +00:00
Seth Hillbrand 374fb0f5f2 IPC2581 fixes
- Component name ref comes before pin ref
- OtherSideView is at the end of the package
- BOM defines the dictionary so we need all items in the BOM even if
  marked "Exlude from BOM"
- Fix unique REFDES indicator to increment number rather than appending
  additional numbers
2024-04-16 13:25:09 -07:00
Jeff Young 3958d1bf14 Clean up selection logic.
Don't try to do too many things at once.  Separate
out fooptrint-children handling, visibility-handling,
and footprintEditor vs boardEditor differences.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17562
2024-04-16 18:12:47 +01:00
Jeff Young d761b4f22f RIP LIB_TEXTBOX and LIB_SHAPE. 2024-04-16 16:31:16 +01:00
jean-pierre charras 6b7852c2bb BOARD::DeleteMARKERs fix bug: missing m_itemByIdCache handling.
When deleting markers, the m_itemByIdCache corresponding entry must be
also removed.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/11750
2024-04-16 12:00:40 +02:00
Seth Hillbrand f61d400d88 Allow non-identical schematic/pcb nets
The schematic net names are fully unique but if we have multiple pads
that are mapped to a NC pin, they need to have unique net names so that
they do not get connected to each other in the ratsnest.  This breaks
the schematic parity check as we have modified the netname for some
pads.  To work around this, we first maintain the zero-th net without
suffix and then add an additional check in DRC to ensure that we allow
unconnected nets as long as the share a common prefix with the schematic
netname.
2024-04-15 17:54:44 -07:00
Seth Hillbrand 8760519a87 Ensure that we are not calculating self-collision
Ratsnest may have connections from a zone to two different items.  This
should be avoided as we never want to draw the ratsnest line with the
same element as start and finish

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17763
2024-04-14 13:50:01 -07:00
Marek Roszko 2a3b597ab9 Strip out no longer needed links on the top executables
Not needed due to kicommon
2024-04-14 07:52:02 -04:00
Alex Shvartzkop 76b7cdd128 Improve grid cell editors appearance. 2024-04-13 23:26:01 +03:00
Marek Roszko 94847e89c3 Static cast some more enum usage 2024-04-13 15:15:39 -04:00
Marek Roszko 7d68e19afa enum * double is deprecated 2024-04-13 15:14:39 -04:00
Jeff Young d77eae3e7e Collapse LIB_FIELD into SCH_FIELD. 2024-04-13 15:42:13 +01:00
Marek Roszko 262d94964f Lets try C++20 2024-04-12 23:32:18 -04:00
Marek Roszko 96cdfc7fa7 Update equality overloads for C++20
C++20 added new reverse and rewritten candidates. This can confuse the compiler because it'll test both A==B and B==A for overloads.
Because we were defining parent class equality overloads, A==B and B==A was considered ambigious due to both being compatible in casting.

So we needed to add explicit child class equality operator overloads
2024-04-12 23:05:58 -04:00
Marek Roszko 7a67151a22 Update lamba capture 2024-04-12 23:03:29 -04:00
Marek Roszko 1607729cf7 Silence deprecation warning about enum * fp type 2024-04-12 22:55:43 -04:00
Marek Roszko dbd98f1ce0 Explicit lambda capture 2024-04-12 22:54:59 -04:00
Marek Roszko 8fb4901d4b Fix more utf8 comparisons 2024-04-12 22:53:25 -04:00
Seth Hillbrand d0fe2e06aa Do not set optional defaults
In the file format, the 'mirror' tag is optional (not written unless on)
so we cannot default the new text to 'mirror' on just because the
footprint is on the back layer as it won't be turned off by the
footprint loader.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17546
2024-04-11 09:43:12 -07:00
Seth Hillbrand 59f99d9a6a Re-add routine to remove duplicate points
The router needs to elimitate duplicate points but keep colinear
segments.  This re-creates the partial routine from the old Simplify()
function

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17582
2024-04-10 17:25:58 -07:00
Alex Shvartzkop 7b935f7673 EasyEDA Pro: import Colorful Image as Reference Image. 2024-04-10 03:21:46 +03:00
Mike Williams e2f1da60d9 PCB Fields: fix v7 imported board hidden description field pos
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17684
2024-04-09 15:23:44 -04:00
Seth Hillbrand a12bc3a410 Don't knock out anti-text box
Knockout text should only prevent filling directly around the text
itself, not the larger anti-text fill around it.  This prevents minimum
width provisions from kicking in unneccesarily

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17665
2024-04-06 14:28:49 -07:00
qu1ck 441b2686d3
IPC_API: fix crash in PLUGIN_AVAILABILITY_CHANGED event handler 2024-04-05 18:11:52 -07:00
Jon Evans c1e7668d80 Fix SWIG wrapper for AddPrimitive
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17676
2024-04-04 23:09:05 -04:00
Jon Evans aff2d5c0d3 Factor out SHAPE_LINE_CHAIN utilities 2024-04-04 18:55:58 -04:00
JamesJ a321a86f38 Update net inspector after connectivity update when loading board
Fixes issue where if the net inspector was open when a board was
loaded, the track data would not be updated until a board edit
action triggered an update.
2024-04-04 22:29:47 +00:00
JamesJ 951065390e Add composite update callback to BOARD_LISTENER
Required for net inspector otherwise composite operations (such
as undo / redo, and length tuning) can result in multiple add /
remove events firing which results in inconsistent length state.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17527
(for 9.0)
2024-04-04 22:29:47 +00:00
Jeff Young bf2b3b0b0f Deconflict some LIB_TREE_ITEM APIs so they can remain non-const.
(The non-const is required by FOOTPRINT_INFO, which must load
footrpints to get some of the data.)
2024-04-04 13:18:55 +01:00
jean-pierre charras 59142a10d7 DIALOG_CREATE_ARRAY: better messages and better comments
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17642
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17656
2024-04-04 09:54:47 +02:00
jean-pierre charras 3f24e0eb09 minor compil warning (unused var) 2024-04-04 09:52:28 +02:00
Mike Williams 2acf928723 PCB: fix net inspector assert on column show/hide menu
Also handle 0-width columns coming in from settings. GTK seems to have
an issue where these columns are impossible to resize even if they are
made visible.
2024-04-03 13:15:47 -04:00
Jon Evans 493ca7a0f5 Fix unhandled case warnings 2024-04-02 20:56:48 -04:00
Jon Evans 1dbe78c68b Add QA tests and expand serialization for API 2024-04-02 19:51:18 -04:00
Jon Evans 6bd02cae6d Refactor; add user control over API server 2024-04-02 19:51:18 -04:00
Jon Evans a3b6ab48a4 Add a new plugin system for the new API 2024-04-02 19:51:16 -04:00
Jon Evans f613cd1cb4 ADDED: A new IPC API based on protobuf and nng
Details, documentation, and language bindings are works in
progress and will be evolving over the course of KiCad 9
development.
2024-04-02 19:34:36 -04:00
Jon Evans e5d4f58d65 Fix parsing of legacy text hide token
(cherry picked from commit 53c2543474)
2024-04-02 22:26:57 +00:00
Seth Hillbrand 2123e2ca9c Add some corrections to IPC2581 export syntax
Outline fonts need lineDesc
Padstack def need the location for the pad relative to the padstack
2024-04-01 22:57:25 -07:00
Seth Hillbrand d82e8ee41a Map nets in pasted data
Add missing nets to the existing board and use any existing nets of the
same name.

Adds option to clear all nets in Paste Special

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17626
2024-04-01 16:56:44 -07:00
Ian McInerney 90ace0fcaf Ensure model file output stream is valid before writing to it
Fixes KICAD-74V
2024-04-01 22:00:05 +01:00
Ian McInerney 87a8235831 Remove group from dummy track before deletion
The dummy track in the merge colinear segments is used to overwrite the
original segment with the changes at the end, so the group must be
removed before leaving the function, and can't be removed at creation.

Fixes KICAD-74M
2024-04-01 21:59:55 +01:00
Roberto Fernandez Bautista 6078bc52eb PNS: Fix a few memory leaks 2024-03-31 18:21:02 +02:00
Jeff Young 43edc2eaf8 Don't start immediate mode when there's no event position.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17332
2024-03-31 12:59:52 +01:00
Thomas Pointhuber 7d1881b58a altium: use std::unique_ptr instead of raw pointers where feasible 2024-03-31 00:03:03 +01:00
Seth Hillbrand c841d0df6d Handle small holes in DRC Connection width test
If there is a small hole (smaller than the conn width), we can loop
around in a circle checking all points and not move past the mimimum
distance.

To avoid this, if we detect a loop, we exit the substantial checker.
This should return with true because a large hole will return true and
we are only checking to see if there is a minimum amount of copper
between two open areas
2024-03-30 07:58:34 -07:00
JamesJ 79a3dd71e4 Only delete grouped / generated BOARD_ITEMS from the root item
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17527

This is required as during an undo / redo operation, rebuilding
the previous selection can result in a group / generator being
selected as well as all of their contained items. This prunes
the contained items to remove the possibility of a double-delete.
2024-03-30 14:20:06 +00:00
Marek Roszko fd501b4bc8 Fix DRC slowdown due to UI yields
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17434
2024-03-29 23:34:01 -04:00
Seth Hillbrand 37a3f52d81 Remove unused variable 2024-03-29 16:48:08 -07:00
Seth Hillbrand e4756c811e Utilize hash_combine to avoid hash collision
Most of our pointers will share the top 32 or more bits of their pointer
addresses, making cache collisions highly likely.  This uses a hash
combiner to mix the bits more effectively
2024-03-29 15:39:57 -07:00
Seth Hillbrand 10c1072479 Remove duplicated clearanceEpsilon
We already get clearance epsilon in the clearance resolver.  Don't
subtract it twice or we end up getting DRC errors

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16879
2024-03-29 15:39:57 -07:00
Seth Hillbrand 5e850911c5 When dragging a via, we need to get all obstacles
The clearance epsilon should not be used to limit which force elements
we return in the query.  Otherwise, we can drag elements into a
DRC-violating space

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16293
2024-03-29 15:39:57 -07:00
Jeff Young 491adc6c6c Formatting. 2024-03-29 16:04:32 +00:00
Jeff Young 2c21ef1ed0 Fix footprint undo for new UUID caches.
The footprint's children get swapped by the parent's std::swap
call, so they need to get removed/added to their parent around
the swap.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17592
2024-03-29 16:04:32 +00:00
Seth Hillbrand c3a5b92ed0 Sort netnames in properties panel
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15590
2024-03-28 13:03:16 -07:00
Jeff Young 57b224d3f0 Cut/copy/paste for PCB tables. 2024-03-28 14:31:31 +00:00
Jeff Young f9c5e48c57 Add missing PCB_TABLE_T, and a comment. 2024-03-28 14:31:31 +00:00
Jon Evans e347300593 Work around SWIG problems 2024-03-27 18:42:46 -04:00
Mike Williams 48b3b4697a PCB: update footprint field when changing footprints
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17598
2024-03-27 15:20:12 -04:00
Jon Evans 1acb1afa98 Fix build errors; warnings
(somehow, the previous version compiles on my machine...)
2024-03-26 19:38:28 -04:00
Jon Evans 5aa8af1abf Add a cache for looking up board items by ID 2024-03-26 18:36:23 -04:00
Jon Evans 7b6afd290a Remove non-const access to board-owned items
(with a few things const-casted for now)
2024-03-26 18:36:23 -04:00
JamesJ 54919e6854 Performance update for pcbnew net inspector
Forces full rebuild of nets list for bulk updates over a certain
size. This is more performant than iterating over all items in
a bulk update.
2024-03-24 20:29:15 +00:00
JamesJ f51e775f26 Use bulk BOARD_LISTENER calls following undo or redo operations
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17561
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17420
2024-03-24 19:25:26 +00:00
Jeff Young 50567764b5 Allow no-net teardrops on no-net pads with no-net tracks.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17566
2024-03-24 19:22:25 +00:00
Jeff Young a53bc9e026 Attempt to prevent KICAD-YP.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17560
2024-03-24 18:12:58 +00:00
Jeff Young 5d37a00759 Table plotting for PCBNew.
Also fixes some bugs with property exposure that (along with
other things) allowed you to put table cells on a different
layer than their parent table.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17438
2024-03-24 16:49:33 +00:00
JamesJ 67d6e6afdf Only update net inspector when panel is shown.
Pcbnew can hang for a long time when undoing operations involving
large numbers of board items. This provides an interim workaround
(and replicated the behaviour of the search panel) by only
computing track statistics updates incrementally if the inspector
is displayed.

Partially fixes https://gitlab.com/kicad/code/kicad/-/issues/17561
(if net inspector is not shown)
2024-03-24 12:11:36 +00:00
Jeff Young fc572bfbc6 Make sure users don't run into min text size.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17543
2024-03-23 15:50:45 +00:00
Jon Evans af18e06ea4 Remove the "insert chevron" function of the via placer
This behavior is generally undesirable and was only needed
because of past limitations.  Now we only split a track
when the user places a via directly on top of it.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16456
2024-03-23 14:28:21 +00:00
wh201906 806daecf85
Add toggleHV45Mode item to the measure tool's context menu
The behavior of the measure tool is influenced by the
horizontal/vertical/45-degree mode, but the context menu of the measure
tool lacks an option to toggle this mode. In contrast, the drawing
tools are also affected by this mode, and their context menu has the
item to toggle this mode.
2024-03-23 21:24:13 +08:00
Jeff Young 88c1fa3e26 Ignore graphic shapes that implement netties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17223
2024-03-23 13:18:46 +00:00
Marek Roszko ab759d21f2 Fix more build warnings 2024-03-23 08:53:11 -04:00
Jeff Young 7218d501d4 Better locality-of-reference for footprint chooser filters. 2024-03-23 12:48:52 +00:00
Marek Roszko 490dbfdf83 Fix build warnings 2024-03-23 08:34:59 -04:00
aris-kimi d7abed2d60 Footprint Chooser dialog: Allow toggle buttons to work simultaneously 2024-03-23 09:48:15 +00:00
Seth Hillbrand 00d108498f Avoid crashing on missing tracks in CADSTAR
We can't assume that the ignored connection exists when trying to set
the junction size.  We use int_max for the default instead of 0 so that
later, we don't try to create a minor track with 0 width in loadNets()

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17523
2024-03-22 10:55:48 -07:00
jean-pierre charras cb8ed07858 GERBER_JOBFILE_WRITER: use UTF8 encoding according to current specif.
Since 2020, non ASCII7 chars are encoded using UTF8 encoding.
A old but incorrect encoding was previously used.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17534
2024-03-22 09:50:32 +01:00
JamesJ de85b2217b Re-centralise handling of sort column in net inspector list.
- Includes GTK crash fix from a5ef4f1b
- Additionally removes an unneccesary re-sort when rebuilding columns
- Correctly saves column state when using pcbnew standalone
2024-03-21 21:07:08 +00:00
jean-pierre charras 4f4ca9f383 Do not run DRAWING_TOOL::PlaceTuningPattern() inside the footprint editor
The footprint editor cannot run the router.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17522
2024-03-21 15:19:48 +01:00
Marek Roszko 83ef5fd7d6 Move PGM_BASE to kicommon 2024-03-20 23:29:42 -04:00
Marek Roszko e32b26ebeb Move JSON_SETTINGS and PARAMS to kicommon 2024-03-20 23:29:42 -04:00
Mark Roszko 9947cc0359 Fix another build breakage 2024-03-21 03:23:29 +00:00
Jon Evans a5ef4f1bef Net inspector: fix crash when switching boards on GTK
Can't invalidate columns while they are the sorting key
2024-03-20 23:04:28 -04:00
Jon Evans f00f47df13 wxWidgets 3.3 compatibility: explicit wxString conversion 2024-03-20 22:02:41 -04:00