Implement bracket notation for stacked pins ([1,2,3], [1-4], [1,3,5-7]).
Automatic net naming proceeds based on the smallest logical pin number
in stacked groups.
Provide explode/reform commands in symbol editor for conversion.
Supports arbitrary ranges including BGA alphanum ranges like
[AA1-AA3,CD14-CD22]
Adds some additional QA and trace logging
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2004
This also removes the GROUP/UNGROUP-specific undo actions.
This also fixes a bunch of undo bugs when duplicating
group members, creating pins, etc.
This also fixes some undo bugs when dividing wires etc.
This also fixes some bugs with new sch items not
being created within an entered group.
The crash happened when removing and deleting fields in footprint no
longer existing in netlist.
Crash due to a std::deque<PCB_FIELD*> modified during parsing, invalidating pointer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20607
When updating the footprint, we may encounter a missing footprint. We
should still modify the netlist against the existing footprint (if one
does exist) to match the netlist. This matches the behavior of updating
the netlist when fp are not selected for update
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18249
We still conflate the fieldID, the position in the
array of fields, and whether or not that means the
field is mandatory. But this attempts to clean up
*some* of that, without introducing too much risk.
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
This field was redundant (was generally set to the footprint's LIB_ID)
but also buggy (not guaranteed to contain the footprint's LIB_ID)
and confusing (not a way to change the footprint's LIB_ID).
Like the DSNLEXER header, this has visibility in over 700
files, whereas well under half actually use any of it
(quite a bit, but not all, of it actually via DSNLEXER)
Many places already forward-declare the OUTPUTFORMATTER type,
by doing that for the others, it still possible to use the
non-IO methods without having to see richio.h.
This one isn't as invasive as the others, but it is still
an implementation class that's not needed for public use
of netlists.
Actually, this could even be local to kicad_netlist_reader.cpp
as it's literally only used there.
Now, dsnlexer.h is exposed to only the files it needs, rather
than nearly 800 files.
- 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
Use the X and Y axis inversion preference settings in the "PCB Editor"
"Origin & Axes" panel to invert the internal coordinates to display to
the user.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18662
We've had so far the chain of UUIDs, but for the ease of use in the DRC language (i.e. memberOfSheet),
a human-readable path is also useful. No file format changes.
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.
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.