Alex Shvartzkop
e021cf4575
Connect first/last shapes within tolerance when building board outline.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19901
Also see https://gitlab.com/kicad/code/kicad/-/issues/18125
9 months ago
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
10 months ago
Seth Hillbrand
e9bc8cfe9d
Give Clipper1 a Viking funeral
Clears out the last spot where we were only using Clipper1 (how'd I
miss that?) and remove all calls to the Clipper1 structures
10 months ago
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
1 year ago
Mike Williams
867cb58175
feature removal: remove Show Hidden Text
Does not work properly since 8.0 introduction of footprint fields.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18656
1 year ago
Jeff Young
7b076482c9
Don't collect footprint shapes twice.
(They're now PCB_SHAPE, so they get collected in the
board's collector. No need to fetch them again from
their parent footprints.)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17027
1 year ago
Jeff Young
8b948e7b9c
Give padstack warning violation a name.
Also regularises capitalisation & parens in some error
messages.
Also de-duplicates hole testing for PTH pads, and SMD
rationality testing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18334
1 year ago
Seth Hillbrand
bcf6b620a8
Large rework of BEZIER_POLY
Add direct handling of quadratic beziers to save compute time and number
of points. Update cubic interpolation to reduce number of points
generated for a given smoothness
Cache data on open and used cached data to avoid multiple re-calcs
Remove minimum line length and number of segments and replace with
standard max error level. Allows us to specify the tolerance of bezier
interpolation
1 year ago
Marek Roszko
8b4253cda4
Drop the first point of an arc when building an outline when there's a previous point that's being changed
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18125
1 year ago
Alex Shvartzkop
3f704cb1f1
Fix an assert in isCopperOutside.
(cherry picked from commit dfd8aa402d )
1 year ago
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
2 years ago
Jeff Young
cfa55d958a
performance efficiencies
2 years ago
Alex Shvartzkop
a161829f86
Use SCOPED_FLAGS_CLEANER more carefully.
Other methods used ConvertOutlineToPolygon's SKIP_STRUCT state.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16321
2 years ago
Alex Shvartzkop
12f529d6e0
Fix build error.
2 years ago
Alex Shvartzkop
111a8d6ab3
Improve/fix Expand connection for graphics.
2 years ago
Seth Hillbrand
75c6b0ab28
Added IPC2581 support
IPC2581 is a modern production file exchange system. It provides
single-file data output for an entire board including BOM and netlist
information.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1954
2 years ago
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
2 years ago
jean-pierre charras
79a45c4803
TestBoardOutlinesGraphicItems(): handle small arcs.
2 years ago
Wayne Stambaugh
e3c491424b
Coding policy, Doxygen comment, and spelling fixes.
2 years ago
jean-pierre charras
a7d540ce94
TestBoardOutlinesGraphicItems(): add missing case.
DRC_TEST_PROVIDER_MISC::testOutline(): use a smaller size to dectedt small items.
2 years ago
jean-pierre charras
499f3ca95b
DRC_TEST_PROVIDER_MISC::testOutline(): add test to detect questionable items.
Graphic items (segments, rects, circles) on Edge.Cuts can create issues when
building board outlines, when they are very small (a few nm in size), because
they are not easily handled when trying to search connected graphics.
Also protect RC_ITEM::SetItems() against null pointer.
Fixes #15865
https://gitlab.com/kicad/code/kicad/-/issues/15865
2 years ago
Jeff Young
c7e865e4a2
Safety for negative pen widths.
2 years ago
Alex Shvartzkop
ab6a049b90
Add a routine for joining PCB shapes.
2 years ago
jean-pierre charras
15f5a14217
Fix minor compil warnings
2 years ago
Alex Shvartzkop
f842e6ac7a
STEP: export arcs in board contours as curves, not polygons.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13825
2 years ago
Jeff Young
6a6e839cc4
Move checking for null parent higher.
(Otherwise we set the failure flag without telling the user why.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15415
2 years ago
jean-pierre charras
a16ab0aae1
Replace SHAPE_T::RECT by SHAPE_T::RECTANGLE: RECT creates a collision name
issue with a Windows header on msys2.
Change very similar to the commit 9a47b344 about class PAD_SHAPE.
No actual code change
2 years ago
jean-pierre charras
66651327bd
STEP export: in board outlines, export Circles as Cylinders, round 2.
Other arcs (not 360 deg arcs) are still exported as polylines
2 years ago
jean-pierre charras
99bdb82dff
Revert "STEP export: in board outlines, export Circles as Cylinders."
This reverts commit 09515fe821 .
It does not pass a QA test
2 years ago
jean-pierre charras
09515fe821
STEP export: in board outlines, export Circles as Cylinders.
Other arcs (not 360 deg arcs) are still exported as polylines
2 years ago
Seth Hillbrand
4b91c0c8ee
Handle multiple holes in footprints
Our basic logic for whether we have a hole or an outline in a footprint
checks if there is copper pads outside of the closed edge. This misses
the case where the footprint is used to align multiple holes but has no
copper. Since we do not support multiple outlines in a board, we can
safely assume that multiple, closed edges in a footprint represent holes
and not outlines
Fixes https://gitlab.com/kicad/code/kicad/issues/14468
3 years ago
jean-pierre charras
97a4e535dc
ConvertOutlineToPolygon(): fix handling of polygons living in footprints.
Due to recent changes in PCB_SHAPE items, the polygon coordinates are now
in board coordinates, not in coord relatives to the parent footprint.
Fixes #14530
https://gitlab.com/kicad/code/kicad/issues/14530
3 years ago
Jeff Young
bbd6c80507
Collapse FP_* down into their PCB_* equivalents.
3 years ago
jean-pierre charras
7256a51e8e
Fixes in build board outlines as polygon and convert_shape_list_to_polygon:
- Ensure Bezier curves have their polygon build before use it.
- When building board outlines as polygon the same chaining epsilon value
for DRC, export step and 3D view (default 0.01mm).
Fixes #14115
https://gitlab.com/kicad/code/kicad/issues/14115
Fixes #14009
https://gitlab.com/kicad/code/kicad/issues/14009
3 years ago
Marek Roszko
aacc9746e3
Yeet the last of wxSize/wxPoint to stop leaking gdicmn everywhere
3 years ago
Jeff Young
53b6993d2b
Don't report errors in first pass of board outline generation.
Segments which aren't used to build holes in footprints can still
be used by the second pass to build the board outline.
Fixes https://gitlab.com/kicad/code/kicad/issues/13321
3 years ago
Jeff Young
c85590a470
Correct is-inside logic.
Fixes https://gitlab.com/kicad/code/kicad/issues/13259
3 years ago
Jeff Young
ab6aa08f33
Fix typo.
Fixes https://gitlab.com/kicad/code/kicad/issues/13263
3 years ago
Jeff Young
8c97a7b8c6
If fps contain complete board-edge holes then exclude those edges from main calc.
Fixes https://gitlab.com/kicad/code/kicad/issues/12921
3 years ago
jean-pierre charras
c378d01068
code cleaning.
3 years ago
jean-pierre charras
8098db2a20
BuildBoardPolygonOutlines: enable multiple main outlines: it works fine in 3D viewer.
3 years ago
Jeff Young
6f9bc0980b
Refactor poly outline generator to handle multiple outlines.
Note: disjoint outlines are handled in footprint courtyards, but not
for board outlines.
Fixes https://gitlab.com/kicad/code/kicad/issues/7660
3 years ago
Marek Roszko
a8613ee80f
Combine Iu2Millimeter & remove PcbMm2iu
3 years ago
Jeff Young
5679b9dbdc
Remove a few EDA_RECT instances.
3 years ago
Seth Hillbrand
b736460e71
Move optional access from value() to *operator
`value()` throws. Where we check for existence, we don't need to use
the throwing version and should just use the unprotected variant
3 years ago
Seth Hillbrand
f1261e71d4
Replace boost::optional with std::optional
3 years ago
Jeff Young
aa2ad3b44c
Move KICAD_T[] to std::initializer_list<KICAD_T>.
3 years ago
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
4 years ago
Jeff Young
7ccac79192
More wxString wide literals.
4 years ago
Jeff Young
dcaec78cc5
A bit more angle cleanup.
4 years ago