83 Commits

Author SHA1 Message Date
Jeff Young
824c7ecfa7 Improve readability.
Also drops a parameter that hasn't been implemented
since early 2022.
2025-03-19 08:55:32 +00:00
Jeff Young
142f8265c5 Simplify (and fix) plated copper differentiation.
Also a few fixes for 3D rendering textboxes and
tables.
2025-03-17 20:11:20 +00:00
Jeff Young
533551f014 Don't bleed settings between 3D viewer and 3D footprint preview.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17353
2025-03-16 11:52:56 +00:00
Jeff Young
f33f10bb38 User-defined layers for 3D viewer. 2025-03-15 16:14:33 +00:00
Jeff Young
3a4aec7267 Account for solder mask thickness from board stackup.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19024
2025-02-24 11:08:29 +00:00
Wayne Stambaugh
42a1d1cf0b Include folder and 3D viewer code housekeeping. 2025-01-11 07:25:14 -05: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
7a4b3602b9 Reduce dependency on dynamic_cast.
(3DViewer crosses compile boundaries when run from
CvPCB.)
2024-12-05 18:17:02 +00:00
Alex Shvartzkop
c3fb1445c7 Fix assert failures in 3D renderer after padstack changes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19069
2024-11-05 19:41:20 +03: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
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
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
Seth Hillbrand
5e0abadb23 Reorganize layer numbering
F_Cu = 0
B_Cu = 2
Remaining internal copper layers are even and incrementing

Non-copper layers are odd and incrementing.

This means that we can no longer do things like:
for( PCB_LAYER_ID layer = F_Cu; layer <= B_Cu; ++layer)
Instead, we have the class LAYER_RANGE:
for( PCB_LAYER_ID layer : LAYER_RANGE( F_Cu, B_Cu) )

Similarly, gt/lt tests should not refer to the integer value of the
layer.  We have functions such as IsCopperLayer to test whether a layer
is copper or not.

When using the connectivity RTree, the third dimension is layer, so we
provide B_Cu with the special INT_MAX value, ensuring that elements
between F_Cu and B_Cu will be identified.  There is a new, special
function GetBoardLayer() for interfacing with CN_ITEMS

Similarly, PNS layers remain unchanged and sequential.  A set of
interface functions is provided to map PNS layers to Board layers and
back.  This allows the PNS_LAYER_RANGE to function as expected
2024-09-06 23:07:58 +00:00
jean-pierre charras
1f608ec2b0 3D viewer: add option to use board editor copper colors for copper layers.
This is useful to analyze multilayers boards
2024-08-24 10:16:18 +02:00
Alex Shvartzkop
18fde2b9cb Fix background transparency option in kicad-cli pcb render.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17865
2024-05-15 14:46:53 +03:00
jean-pierre charras
8754f6867f 3D viewer: fix some graphic issues:
Avoid issue when a copper layers thickness is 0 (min value is now 1 micrometer)
Fix incorrect rendering of plated graphic items and vias (vertical walls not drawn)
2024-03-28 14:52:31 +01:00
Alex Shvartzkop
f6f0b9a661 ADDED: PCB 3D image raytracing rendering from CLI.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/3691
2024-03-08 14:38:18 +00:00
Jeff Young
8dddd9cc2c Separate "use board stackup colors" into separate checkbox.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17085
2024-03-01 23:45:06 +00:00
Jeff Young
e445249720 ADDED: PCB tables. 2024-02-24 20:05:51 +00:00
jean-pierre charras
abcbba5635 PCB_TEXTBOX, create 3D shape: fix incorrect transform of the box, round 2:
when the box is a polygon (rotated rect by a non cardinal angle) the polygon
is not filled, so the shape is just a set of thick segments.
So we cannot use PCB_TEXTBOX::TransformShapeToPolygon to create the 3D view
Fixes #16072
https://gitlab.com/kicad/code/kicad/-/issues/16072
2023-11-11 18:11:50 +01:00
Marek Roszko
37479c4154 HIDPI_GL_3D_CANVAS needs CAMERA so move it over 2023-09-23 20:06:57 -04:00
Jeff Young
da1405ec6a Draw off-board pads when drawing off-board silk. 2023-09-22 20:57:31 +01:00
Jeff Young
c1a988e3ff Handle plated vs non-plated copper for copper other than pads.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5569
2023-09-22 18:48:29 +01:00
Jeff Young
78f70b45e6 Minor readability improvements. 2023-09-22 18:48:29 +01:00
Jeff Young
8d06a794f4 Simplify code.
DrawAllCameraCulled() can handle up to 4 knockout lists, and any
of them can be null, so don't dance around how we call it.
2023-09-21 14:02:23 +01:00
Jeff Young
c0ce543464 Use standard KiCad abbreviations for TH and NPTH. 2023-09-20 14:27:57 +01:00
jean-pierre charras
a7b1448ccd Fix a compil warning.
Fix also an incorrect comment.
2023-09-14 15:19:46 +02:00
Jeff Young
8cf291e423 Overhaul 3D degenerate shape protection. 2023-09-14 12:33:54 +01:00
Jeff Young
f45760062b ADDED: appearances manager for 3D viewer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12413
2023-08-14 18:08:36 +01:00
Jeff Young
a85a2b9cbc Add via solder mask to 3D viewer rendering.
(Of course, only when vias are not tented.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15164
2023-07-12 18:28:02 +01:00
jean-pierre charras
6618cda214 3D viewer: use the right color theme (the one used in the board editor)
Fixes #14616
https://gitlab.com/kicad/code/kicad/issues/14616
2023-05-01 16:51:27 +02:00
Jeff Young
3b63d70d01 Centralize NPTH has-annulus processing.
Fixes https://gitlab.com/kicad/code/kicad/issues/13437
2023-04-08 15:06:49 +01:00
Jeff Young
d16b23d16e Name shortening and line-break reduction. 2022-10-21 18:41:39 +01:00
Jeff Young
8d19b52aed Line stroking for 3D view.
Fixes https://gitlab.com/kicad/code/kicad/issues/10887
2022-02-17 18:02:56 +00:00
Jeff Young
5739505aa3 TextBoxes for PCBNew. 2022-01-31 20:00:47 +00:00
Jeff Young
e61144d45a Finish with EDA_ANGLE. 2022-01-16 21:15:40 +00:00
Jeff Young
236feeb592 Cleanup GRText APIs, 3D Viewer <-> board APIs, and Plotter APIs.
Also fixes a bug where outline fonts weren't being handled for footprint
text in 3D Viewer, and a copy/paste error in stroke font handling for
both PCB and footprint text in 3D Viewer.

Fixes https://gitlab.com/kicad/code/kicad/issues/10319
2022-01-10 14:17:11 +00:00
jean-pierre charras
0f0a540a65 Panel 3D previewer: for show 3D body shapes, regardless the 3D viewer itself.
the Panel 3D previewer is made to show 3D body shapes, so do not show them
when disabled in the board 3D viewer, is really stupid.
2022-01-06 12:04:28 +01:00
Marek Roszko
2d1357dc54 Swap some of the 3d viewer to VECTOR2I 2021-12-29 14:20:40 -05:00
Jeff Young
dabc75bee8 Source 3D dimensions from board stackup.
Also includes a performance improvemnt by caching the 3D model matrices.
2021-12-24 21:10:28 +00:00
Jeff Young
68d2630d08 Flatten a layer of indirection out of 3D config settings. 2021-12-24 13:08:54 +00:00
Jeff Young
6c0110ecd3 Naming conventions.
There's nothing "legacy" about the OpenGL 3D renderer.
2021-10-21 14:30:03 +01:00
Jeff Young
bff247b08a Hook up 3D viewer colors to board stackup.
Fixes https://gitlab.com/kicad/code/kicad/issues/5173
2021-08-14 14:00:17 +01:00
Jeff Young
f221220fe2 Rename layer ids file.
It hasn't had anything to do with colors or visibility for some time
now.
2021-07-29 16:03:25 +01:00
Wayne Stambaugh
78e5e98ea0 Pass VECTOR2I objects by reference instead of on the stack. 2021-07-27 08:41:27 -04:00
Wayne Stambaugh
89b1fdabe9 Pass COLOR4D object by reference instead of on the stack. 2021-07-26 13:28:56 -04:00
Jeff Young
096e342386 Prefix TRACK, ARC and VIA. 2021-06-11 22:07:02 +01:00
Jeff Young
16b0147af8 Prefix DIMENSION types. 2021-06-11 17:59:44 +01:00
jean-pierre charras
23667fc4c4 3D viewer: make solder paste layer thickness bigger than the mask layer.
Some specific footprints need shapes on paste layer covering the mask layer,
so ensure these shapes are visible.
Fixes #8041
https://gitlab.com/kicad/code/kicad/issues/8041
2021-03-26 18:02:30 +01:00
Wayne Stambaugh
926cc3a00d 3D Viewer: more code cleaning and naming improvements. 2021-01-07 14:33:43 -05:00