From 4766175d6077cde35071ed121eed85839f51fa42 Mon Sep 17 00:00:00 2001
From: jean-pierre charras <jp.charras@wanadoo.fr>
Date: Mon, 27 Feb 2023 16:11:44 +0100
Subject: [PATCH] EXPORTER_STEP: handle sub-layers in dielectric layer. A
 dielectric layer (between 2 copper layers) can be made by more than one layer
 (composite dielectric).  Not frequent, but possible. sub-layers where
 previously ignored.

---
 pcbnew/exporters/step/exporter_step.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/pcbnew/exporters/step/exporter_step.cpp b/pcbnew/exporters/step/exporter_step.cpp
index 4d12ff21e1..6b5272f8c2 100644
--- a/pcbnew/exporters/step/exporter_step.cpp
+++ b/pcbnew/exporters/step/exporter_step.cpp
@@ -298,7 +298,11 @@ void EXPORTER_STEP::determinePcbThickness()
             switch( item->GetType() )
             {
             case BS_ITEM_TYPE_DIELECTRIC:
-                thickness += item->GetThickness();
+                // Dielectric can have sub-layers. Layer 0 is the main layer
+                // Not frequent, but possible
+                for( int idx = 0; idx < item->GetSublayersCount(); idx++ )
+                    thickness += item->GetThickness( idx );
+
                 break;
 
             case BS_ITEM_TYPE_COPPER:
@@ -325,6 +329,9 @@ bool EXPORTER_STEP::Export()
 
     ReportMessage( _( "Determining PCB data\n" ) );
     determinePcbThickness();
+    wxString msg;
+    msg.Printf( _( "Board Thickness from stackup: %.3f mm\n" ), m_boardThickness );
+    ReportMessage( msg );
 
     try
     {
@@ -362,8 +369,6 @@ bool EXPORTER_STEP::Export()
 
     if( m_fail || m_error )
     {
-        wxString msg;
-
         if( m_fail )
         {
             msg = _( "Unable to create STEP file.\n"