From 44e5ef0aa030d5416130499f91928dcb3d72382d Mon Sep 17 00:00:00 2001 From: Seth Hillbrand Date: Sun, 25 Jan 2026 22:31:31 -0800 Subject: [PATCH] 3D Viewer: Fix missing barrel walls for NPTH holes in OpenGL mode NPTH holes were not showing barrel walls because their polygons were stored in m_NPTH_ODPolys but the barrel wall generation in generateHoles() only used m_TH_ODPolys. Add NPTH polygons to the outer polygon set before generating through-hole geometry. Fixes https://gitlab.com/kicad/code/kicad/-/issues/21181 --- 3d-viewer/3d_rendering/opengl/create_scene.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/3d-viewer/3d_rendering/opengl/create_scene.cpp b/3d-viewer/3d_rendering/opengl/create_scene.cpp index e776821e46..bccdddbc72 100644 --- a/3d-viewer/3d_rendering/opengl/create_scene.cpp +++ b/3d-viewer/3d_rendering/opengl/create_scene.cpp @@ -754,6 +754,10 @@ void RENDER_3D_OPENGL::reload( REPORTER* aStatusReporter, REPORTER* aWarningRepo SHAPE_POLY_SET outerPolyTHT = m_boardAdapter.GetTH_ODPolys().CloneDropTriangulation(); + // Include NPTH polygons so their barrel walls are also generated + if( m_boardAdapter.GetNPTH_ODPolys().OutlineCount() > 0 ) + outerPolyTHT.BooleanAdd( m_boardAdapter.GetNPTH_ODPolys() ); + outerPolyTHT.BooleanIntersection( m_boardAdapter.GetBoardPoly() ); m_outerThroughHoles = generateHoles( m_boardAdapter.GetTH_ODs().GetList(), outerPolyTHT,