51 Commits

Author SHA1 Message Date
Seth Hillbrand
8acf5c1a25 ADDED: Rounded Rectangles
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4742
2025-08-29 17:37:30 -07:00
John Beard
ed01324c1d Footprints: allow to set specific internal copper layers
Footprints can now have a custom stackup. This means that they specify
an exact number of copper layers and the layers map 1:1 to board layers.
If the board doesn't contain that layer, the element just doesn't
show. We could make this a DRC check later on.

If there is no stackup, the behavior is the current default: a rule area
the In1 layer "expands" to all Inner layers.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/10838
2025-08-19 04:59:48 +08:00
jean-pierre charras
09e1fca7e4 More about support of press-fit pad fabrication property
Also some fixes in dialogs.
2025-08-11 18:48:35 +02:00
Jeff Young
8e534449af Forgot to bump file format version for 5a70fc0bd5985416f3ed279eae221c41704bb349. 2025-08-06 11:28:34 +01:00
Mike Williams
d2f0a13515 groups/design blocks: add lib link to groups from design blocks
Also add Place Linked Design Block function.
2025-05-13 10:41:32 -04:00
JamesJCode
eb17ebee4e Implement time-domain length tuning
- Adds time and delay units
- Adds time domain tuning parameters entry and storage
- Adds pad-to-die delay property
- Adds time domain parameter interface for length / delay calculations
- Adds unit tracking for numerical constants through LIBEVAL
   - Will need future work to truly propagate through binary expressions
- Adds time domain tuning to meander placers
- Adds time delay display to net inspector panel
- Modifies DRC to handle time domain constraints
2025-04-17 21:46:56 +01:00
Jon Evans
1c83f0a70b Implement jumpers for footprints
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2558
2025-03-24 22:17:46 -04:00
JamesJCode
ede5faee72 Implement dynamic assignment of component classes 2025-03-15 14:33:47 +00:00
Daniel Treffenstädt
27edf0b949 ADDED: Per layer properties of zones used for control over zone hatching position 2025-03-02 20:31:04 +00:00
Daniel Treffenstädt
3768221d9c ADDED: Support for IPC-4761 Via protection features
Fixes https://gitlab.com/kicad/code/kicad/-/work_items/18837
2025-03-01 18:02:54 +00:00
Jeff Young
3f15b0d75b ADDED: hatched fills for shapes. 2025-02-24 11:08:29 +00:00
Jeff Young
675624b926 ADDED: Knockout text boxes. 2025-02-24 11:08:29 +00:00
Jeff Young
bf34fe625c Reduce cover types.
Also, don't use _ITEM for things that aren't EDA::ITEMs.
2025-02-19 23:43:53 +00:00
Jeff Young
4e3175b244 Fix use of wrong variable.
The passed in footprint is a filter, not the current
footprint from the iterator.

Also cleaned up confusion and bad reporting over
temp file usage, and need to const cast for
updating embedded fonts.
2025-02-18 14:12:08 +00:00
Ian McInerney
088e0e80a1 Fix layer writing/reading for copper zones
* Always enumerate layers - never use the wildcards
* Keep fills on layers the zone is actually on when loading

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19775
2025-01-29 00:31:28 +00:00
Seth Hillbrand
6c2a559cbe Set base user layer count
Default colors cycle through repetition for unknown layers.  Allows
importing from complex Altium/CADSTAR boards with more than 10
documentation layers
2025-01-28 12:22:39 -08:00
Seth Hillbrand
0b2d4d4879 Revise Copyright statement to align with TLF
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo.  Avoids needing to
repeatly update.

Also updates AUTHORS.txt from current repo with contributor names
2025-01-01 14:12:04 -08:00
Jeff Young
1cf569b0be Firebomb teardrop curve points.
See 17b0dabec364d24bab4333a9ad15cfefd852728e for the start.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19403
2024-12-28 22:38:51 +00:00
John Beard
44ca798925 Pcbnew IO: Use fill yes/no universally
There was a motion towards fill solid/none around
2020 (c.f. b31e97cfeda9b76a165854b98974d253e221e93b),
but it was only for PCB_SHAPE.

Use yes/no universally (solid/none parsing the same way
as currently). In future if there are other fill modes
for these shapes, they can use the same pattern as ZONEs
do now: (fill yes) (hatch etc ....) or similar.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/15232
2024-11-29 20:17:51 +08:00
John Beard
ab11317d7b Pcbnew IO: normalise keep_text_aligned properties
Use a proper bool (yes/no) rather than a bare keyword.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/15232
2024-11-29 19:28:36 +08:00
Jeff Young
6686ade45b Remove (somewhat atrophied) manual pretty printing.
Also fixes a bug where the pretty printer didn't insert
linebreaks for a forest (it assumed a single tree root).

Also further regularises bool and quote formatting.
2024-11-28 11:08:16 +00:00
John Beard
a59cd7401a Use a yes/no for the suppress_zeroes bool in the format
Roll this into the prior version bump for the dimension arrow
directions.
2024-10-30 21:22:37 +08:00
Hasan Jaafar
6e9188713b Pcbnew: Add inward/outward dimension arrows
This adds a toggle between outward ( |<--->| ) and inward
( -->|----|<-- ) dimensions.

The original merge request for this feature had more nice
features to it: automatic switching and an 'outward' version of the
radial dimension. However, both of these are very tricky problems, and
need more thought: for example, if the radial dimension is overloaded
into a diameter dimension based on the arrow direction, then you have
implement the fiddly concept of a prefix override, and it also make
the point editor much harder to make seamless.

So, rather then delay the very good and useful upgrade of
the "normal" ortho/aligned dimensions, just sidestep the
issue by not doing the radial lines or auto detection right now.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/5819
2024-10-30 21:22:37 +08:00
Andrzej.W
b49ebaeb16 ADDED: Soldermask layer option for graphic shapes
Allows adding a soldermask opening for shapes on a copper layer.
Soldermask expansion can also be specified.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/2125
2024-10-10 12:46:06 +00:00
JamesJCode
bc0c9634b8 Don't store DRC expressions in file format for placement rule areas 2024-10-09 18:47:05 +01:00
Andrzej Wolski
537d3ac81a ADDED: Soldermask layer option for tracks
Allows adding a soldermask opening for individual tracks.
Soldermask expansion can also be specified.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/2125
2024-10-08 02:48:33 +00:00
Jon Evans
2a605e4a4e Infrastructure and file format for via stacks 2024-10-06 18:45:25 -04:00
Jon Evans
56e0811516 Phase 2 of padstack support
CHANGED: PCB file format now supports saving/loading complex padstacks

CHANGED: PTH pads are now rendered per copper layer in the copper color;
         the PTH pad color is no longer used.

ADDED: support for importing complex pad stacks from Altium PCBs

Enforce padstack-aware access to pad properties across KiCad

Fixes https://gitlab.com/kicad/code/kicad/-/issues/8182
2024-10-01 19:55:03 -04:00
JamesJCode
d64a112971 Implement Component Classes
- Adds Component Class field to SCH_DIRECTIVE_LABEL
- Adds SCH_SYMBOLs to SCH_RULE_AREA item lists
- SCH_SYMBOLs resolve Component Class directives
- Netlist exporter / importer handles Component Class names
- Adds DRC expressions and functions
- Adds QA check for component class netlist export
2024-10-01 22:36:18 +01:00
Seth Hillbrand
5ba50c26a9 Update embedded files hash to use Murmur3
SHA256 is fine for one-offs but for large libraries where we might be
running the hash on hundreds of files, the speed difference is
appreciable.  We don't require crytographic hashing, just a check that
the original file hasn't been corrupted so Murmur3 satisfies our basic
requirement.
2024-09-06 09:57:23 -07:00
Seth Hillbrand
7214ef1f14 Remove basic masking class map_string_utf8
This is just std::map<std::string, UTF8>, using the class just masks
what it is and adds unclear functions.
2024-08-19 11:51:13 -07:00
Jon Evans
1d307d4429 Fix build on Ubuntu 22 2024-07-17 15:19:33 -07:00
Seth Hillbrand
7ecde84a94 Move LSET to new BASE_SET class
Next step in large layer refactoring.  Added multiple unit tests as well
to check behavior
2024-07-17 10:32:09 -07:00
Jon Evans
062db51f24 Fix build on Ubuntu 22 2024-07-15 21:58:48 -04:00
Seth Hillbrand
77797103f7 Add ability to embed files in various elements
Schematics, symbols, boards and footprints all get the ability to store
files inside their file structures.  File lookups now have a
kicad-embed:// URI to allow various parts of KiCad to refer to files
stored in this manner.

kicad-embed://datasheet.pdf references the file named "datasheet.pdf"
embedded in the document.  Embeds are allowed in schematics, boards,
symbols and footprints.  Currently supported embeddings are Datasheets,
3D Models and drawingsheets

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

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

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17827
2024-07-15 16:06:55 -07:00
jean-pierre charras
a075a80b3c Move all CTL_OMIT_xxx flags definitions into a new file ctl_flags.h
Previously, they were defined in different files, and sometimes redefined.
This change should not create an actual code change.
However, this move shows there are the same value used for different flags,
so another fix should be made later.
2024-07-14 18:10:37 +02:00
Seth Hillbrand
e0453d9bcc Further cleanup of LSET
Remove duplicative functions.  Standardize on C++ stdlib formatting
2024-07-08 22:00:53 -07:00
Seth Hillbrand
cc850d0da0 Split out LSEQ/LSET from LAYER_ID
Separate the layer grouping classes for easier modification
2024-07-08 20:59:46 -07:00
Jeff Young
aa5a370b3a ADDED: user layer types.
This allows a user to define user layers to be front
or back (and therefore to flip with the board view).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/8455
2024-07-03 13:32:44 +01:00
Jeff Young
8e349eedf0 Bug fixes for PCB_TABLES.
In particular, rotated tables and tables in rotated
footprints.
2024-06-19 12:39:22 +01:00
Jon Evans
4aab9f59aa ADDED: Support tenting control of individual vias
REMOVED: Tenting option from plot dialog (tenting is now
         controlled from Board Setup and via properties)

See https://gitlab.com/kicad/code/kicad/-/issues/2402
2024-06-11 21:25:02 -04:00
Jeff Young
9066e4b9d0 Reconcile solder_paste_ratio and solder_paste_margin_ratio. 2024-02-25 21:25:44 +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
Jon Evans
8c7d126ced Fix flipped boolean in teardrop serialization
Also change to explicit bools

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16552
2024-01-08 18:44:09 -05:00
John Beard
751c88ef20 Use 'uuid' (not 'id') in the s-expr PCB groups/generator format
Add some regression tests to check loading of groups and generators
from various versions of the s-expr PCB format.
2023-12-31 23:09:26 +00:00
Ian McInerney
d7fe668d79 Push PCB_IOs to use the base progress reporter instead of per-function 2023-12-27 17:06:23 +00:00
Ian McInerney
f8688a922d Unify IO library descriptors 2023-12-27 16:34:59 +00:00
Ian McInerney
743e9d669a Push library management into IO_BASE 2023-12-27 01:21:53 +00:00
Ian McInerney
cad91312aa Introduce main base class for all IO loaders 2023-12-26 23:27:11 +00:00