JOB_EXPORT_PCB_3D: store export origin option without rely to coord origin value

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20752
This commit is contained in:
jean-pierre charras 2025-04-25 11:41:38 +02:00
parent 4f08810c33
commit 481d282607
3 changed files with 20 additions and 3 deletions

View File

@ -88,6 +88,10 @@ JOB_EXPORT_PCB_3D::JOB_EXPORT_PCB_3D() :
m_3dparams.m_UseGridOrigin ) );
m_params.emplace_back( new JOB_PARAM<bool>( "use_drill_origin", &m_3dparams.m_UseDrillOrigin,
m_3dparams.m_UseDrillOrigin ) );
m_params.emplace_back( new JOB_PARAM<bool>( "use_defined_origin", &m_3dparams.m_UseDefinedOrigin,
m_3dparams.m_UseDefinedOrigin ) );
m_params.emplace_back( new JOB_PARAM<bool>( "use_pcb_center_origin", &m_3dparams.m_UsePcbCenterOrigin,
m_3dparams.m_UsePcbCenterOrigin ) );
m_params.emplace_back(
new JOB_PARAM<bool>( "board_only", &m_3dparams.m_BoardOnly, m_3dparams.m_BoardOnly ) );
m_params.emplace_back( new JOB_PARAM<bool>( "include_unspecified",

View File

@ -38,6 +38,8 @@ public:
m_Overwrite( false ),
m_UseGridOrigin( false ),
m_UseDrillOrigin( false ),
m_UseDefinedOrigin( false ),
m_UsePcbCenterOrigin( false ),
m_IncludeUnspecified( true ),
m_IncludeDNP( true ),
m_SubstModels( true ),
@ -77,6 +79,8 @@ public:
bool m_Overwrite;
bool m_UseGridOrigin;
bool m_UseDrillOrigin;
bool m_UseDefinedOrigin;
bool m_UsePcbCenterOrigin;
bool m_IncludeUnspecified;
bool m_IncludeDNP;
bool m_SubstModels;

View File

@ -203,14 +203,16 @@ DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP( PCB_EDIT_FRAME* aEditFrame, wxWindow* aP
}
else
{
m_rbBoardCenterOrigin->SetValue( true ); // Default
if( m_job->m_3dparams.m_UseDrillOrigin )
m_rbDrillAndPlotOrigin->SetValue( true );
else if( m_job->m_3dparams.m_UseGridOrigin )
m_rbGridOrigin->SetValue( true );
else if( m_job->m_3dparams.m_Origin.x == 0.0 && m_job->m_3dparams.m_Origin.y == 0.0 )
m_rbBoardCenterOrigin->SetValue( true );
else
else if( m_job->m_3dparams.m_UseDefinedOrigin )
m_rbUserDefinedOrigin->SetValue( true );
else if( m_job->m_3dparams.m_UsePcbCenterOrigin )
m_rbBoardCenterOrigin->SetValue( true );
m_userOriginX = m_job->m_3dparams.m_Origin.x;
m_userOriginY = m_job->m_3dparams.m_Origin.y;
@ -834,6 +836,11 @@ void DIALOG_EXPORT_STEP::onExportButton( wxCommandEvent& aEvent )
break;
}
m_job->m_3dparams.m_UseDrillOrigin = false;
m_job->m_3dparams.m_UseGridOrigin = false;
m_job->m_3dparams.m_UseDefinedOrigin = false;
m_job->m_3dparams.m_UsePcbCenterOrigin = false;
switch( GetOriginOption() )
{
case STEP_ORIGIN_0:
@ -856,6 +863,7 @@ void DIALOG_EXPORT_STEP::onExportButton( wxCommandEvent& aEvent )
yOrg *= 25.4;
}
m_job->m_3dparams.m_UseDefinedOrigin = true;
m_job->m_3dparams.m_Origin = VECTOR2D( xOrg, yOrg );
break;
}
@ -867,6 +875,7 @@ void DIALOG_EXPORT_STEP::onExportButton( wxCommandEvent& aEvent )
double yOrg = pcbIUScale.IUTomm( bbox.GetCenter().y );
LOCALE_IO dummy;
m_job->m_3dparams.m_UsePcbCenterOrigin = true;
m_job->m_3dparams.m_Origin = VECTOR2D( xOrg, yOrg );
break;
}