Jeff Young
498d2c9db1
Lazily re-evaluate worst-clearance cache.
...
This prevents crashes when trying to re-evaluate
during destruction, etc. and is a cleaner solution
than trying to keep a flag updated.
It should also be a performance win for very large
documents.
Also implements proper threadlocking for the cache.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17950
2024-05-15 14:11:11 +01:00
Jeff Young
8184ed64e7
Explicit control over hidden text in bounding boxes.
...
In particular, don't consider hidden text when plotting,
and only when AsItemCheckboxes is checked for printing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17958
2024-05-06 21:36:19 +01:00
Alex Shvartzkop
b3bc352c57
Use default stackup if stackup is not defined in STEP/BREP/XAO export.
2024-04-26 15:25:48 +03: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
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
Jon Evans
1dbe78c68b
Add QA tests and expand serialization for API
2024-04-02 19:51:18 -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
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
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
Jeff Young
0598ca0f90
Keep BOARD_DESIGN_SETTINGS DRC marker exclusions up-to-date.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17429
2024-03-17 16:29:24 +00:00
Jeff Young
06a8517818
Further improvements to cache locking.
...
In particular, don't hold cache lock while doing computations.
2024-03-07 13:20:20 +00:00
Armin Schoisswohl
4dcec60bf4
add include <mutex> to fix compilation under linux
2024-03-07 13:20:16 +00:00
Armin Schoisswohl
bb9448edcb
change m_CachesMutex to shared_mutex and do shared locking for read access in zone BBox calculations
2024-03-07 13:20:13 +00:00
Yon Uriarte
7520a8b316
Avoid updating max clearance while in dtor
...
Max clearance is updated by IncrementTimeStamp(), which is called when in the FOOTPRINT dtor and ZONE dtor. This can cause issues when iterating over all footprints as the footprints may be delete-ed
Fixes https://gitlab.com/kicad/code/kicad/issues/17269
2024-03-06 18:48:49 +00:00
Yon Uriarte
fe1c73ed7c
Performance: Cache BOARD::GetMaxClearanceValue
2024-03-03 13:54:46 +00:00
Jeff Young
d7e4a8cebd
ADDED: ERC/DRC exclusion comments.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16020
2024-02-24 20:05:51 +00:00
Jeff Young
e445249720
ADDED: PCB tables.
2024-02-24 20:05:51 +00:00
Jeff Young
ee3be0802c
Move PCBNew overrides to nullable properties.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5562
2024-02-24 20:05:51 +00:00
Jeff Young
012b32e989
Don't leave dangling net pointers on PCB_SHAPEs.
...
Also makes it harder for this type of error to occur in
future.
2024-02-20 17:36:54 +00:00
Marek Roszko
c48fc7ebff
Fix crash due to PCB_SHAPEs not being returned by BOARD::AllConnectedItems
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16981
2024-02-15 19:58:21 -05:00
Jeff Young
0890ac57dd
Improve clarity of default zone settings.
2024-02-03 13:22:16 +00:00
Jeff Young
ee5e2e56c0
Naming conventions; no functional changes.
2024-01-29 16:00:06 +00:00
Jeff Young
27534074ac
Fix errors resulting from FP fields being moved from m_drawings to m_fields.
2024-01-28 11:13:48 +00:00
Marek Roszko
d0236ca751
Make DRC exclusions work in cli & python DRC
...
The way exclusions work is actually silly, and you can end up with your project file losing them too.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11562
2024-01-10 19:55:44 -05:00
Jon Evans
b8aef58561
Add proper comparison operators for BOARD_DESIGN_SETTINGS and children
...
BOARD::operator== was just comparing pointers
2024-01-01 13:37:31 -05:00
Jeff Young
66a15f6acf
Re-factor frame pointer out of generator API.
2023-12-16 16:11:45 +00:00
jean-pierre charras
427de4cda6
BOARD::GetBoardPolygonOutlines(): add option to add NPTH as board holes.
...
Used in 3D viewer to truncate plated holes intersecting NPTH.
Fixes #16325
https://gitlab.com/kicad/code/kicad/-/issues/16325
2023-12-13 08:31:29 +01:00
Mike Williams
f993e45325
Variables: make consistent across editors
...
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16180
2023-11-29 09:55:17 -05:00
Jeff Young
791aa64950
Functionally it's a "reference image".
...
The implementation happens to be a "bitmap".
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15932
2023-10-24 15:44:21 +01:00
Seth Hillbrand
d99641be40
ADDED: Git integration support
...
Adds support for project-based git integration, branch support, commit,
revert and updates
Fixes https://gitlab.com/kicad/code/kicad/issues/10441
2023-10-20 12:51:47 +00:00
Jeff Young
d51e058e24
Move diff-pair netname resolution to BOARD.
...
Also adds reporting of dp gap constaints and max uncoupled to track
selections, and max uncoupled during routing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13748
2023-10-15 22:46:23 +01:00
Jeff Young
62d959ed0e
Don't assume an error location for PAD::GetEffectivePolygon().
...
While ERROR_INSIDE was good for plotting, 3D generation, etc., it's
not good for generating router hulls.
Also reverts part of the change to always use polygons for PNS::SOLIDs. A single shape in a SHAPE_COMPOUND will be faster (and
more accurate).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14898
2023-10-13 13:59:26 +01:00
jean-pierre charras
38c7fa6db9
Pcbnew: do not display the outlines of a very special zone used by DRC
...
to show layer mask bridges created by DRC to show these bridges.
This is not a real ZONE, just a container to displays these filled areas.
2023-10-13 14:25:49 +02:00
jean-pierre charras
57efde1bbb
Pcbnew: rename ZONE* m_SolderMask to m_SolderMaskBridges
...
(It is a container to build bridges on solder mask layers by DRC, not real zone)
Disable also this special zone selection by adding it in
PCB_SELECTION_TOOL::itemPassesFilter
2023-10-13 09:57:21 +02:00
Alex Shvartzkop
be72e07e61
Introduce PCB_GENERATOR.
2023-10-08 02:41:17 +00:00
Jeff Young
31c488bc23
NETINFO_ITEMs are owned by BOARD.
...
Lifecylce management must go through BOARD_COMMIT (or at least
the frame's undo/redo lists).
2023-10-04 21:01:33 +01:00
Marek Roszko
4d77fd48ef
Shove thread_pool to core
2023-09-06 17:50:12 -04:00
Jeff Young
83fe3576c6
Handle dimensions and textboxes when plotting contours to DXF.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11901
2023-08-25 18:07:49 +01:00
Mike Williams
3cd25f0045
PCB: add ratsnest to search pane
...
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/15338
2023-08-17 10:25:40 -04:00
Jeff Young
c697a934b2
Update layer names to current terminology.
...
Also fixes some out-of-date tooltips/names.
2023-08-04 11:37:46 +01:00
Jon Evans
2459949d0d
A BOARD may not always have a project
...
For example, if it's the footprint editor model
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15283
2023-08-01 17:19:21 -04:00
Seth Hillbrand
96a34e5b57
Consolidate Maximum clearance calculation
...
We were calculating the same thing in three locations and we missed
adding the clearance from the footprints in, resulting in bad fills and
missed drc errors (see QA addition)
2023-07-26 12:55:48 -07:00
Jeff Young
cf8294b5c2
Remove a bunch of blind (and a few redundant) static_casts.
2023-07-13 14:14:45 +01:00
Jeff Young
300a60e88e
Eradicate a bunch of calls to dyn_cast.
2023-06-25 11:10:05 +01:00
Mike Williams
37837dc392
PCB: introduce PCB_FIELD_T
2023-06-20 18:34:52 +00:00
Jeff Young
c71cf21e2f
Use rendered text to generate bounding box for knockout text.
...
Don't open-code knockout text shape generation in several different
places.
Make sure triangulated knockout text gets clearance added when
specified.
Collapse duplicated footprint text item plot routine (they're no
longer any different from plotting pcb text items).
2023-05-28 17:20:11 +01:00
Jeff Young
14f004d2a5
Hook up text variable auto-complete for PCBNew.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14777
2023-05-25 10:24:50 +01:00
Jeff Young
8b1fd62d35
Make pad & via teardrops 1st-class citizens (props of the pad/via)
...
Change teardrop generation to rely more heavily on BOARD_CONNECTIVITY
for improved performance.
Add updating of teardrops on BOARD_COMMIT::Push().
Also converts m_CopperItemRTreeCache to std::shared_ptr.
We don't copy it around anyway, and having to create a new set
of std::unique_ptr's for each operation is likely to be more
expensive than std::shared_ptr's overhead.
2023-05-19 18:02:03 +01:00