From f3908bd87c17b57df305e1017242bbd9edada9ed Mon Sep 17 00:00:00 2001 From: Wayne Stambaugh Date: Sat, 11 Nov 2017 20:04:46 -0500 Subject: [PATCH] Revert premature commit of 17ab319b, "Fixes for 3D model offset". This reverts commit 17ab319b992139903f088610637c8755a891e4c7. --- .../3d_cache/dialogs/panel_prev_3d_base.cpp | 15 ++-- .../3d_cache/dialogs/panel_prev_3d_base.fbp | 16 ++-- .../3d_cache/dialogs/panel_prev_3d_base.h | 5 +- .../3d_cache/dialogs/panel_prev_model.cpp | 79 +++++++------------ .../c3d_render_ogl_legacy.cpp | 4 +- .../c3d_render_createscene.cpp | 6 +- pcbnew/class_module.h | 8 -- pcbnew/exporters/export_vrml.cpp | 10 +-- utils/kicad2step/pcb/kicadmodel.cpp | 5 +- utils/kicad2step/pcb/oce_utils.cpp | 7 +- 10 files changed, 60 insertions(+), 95 deletions(-) diff --git a/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.cpp b/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.cpp index 826e189894..f7b9fcaf57 100644 --- a/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.cpp +++ b/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Mar 22 2017) +// C++ code generated with wxFormBuilder (version Aug 4 2017) // http://www.wxformbuilder.org/ // // PLEASE DO "NOT" EDIT THIS FILE! @@ -40,7 +40,7 @@ PANEL_PREV_3D_BASE::PANEL_PREV_3D_BASE( wxWindow* parent, wxWindowID id, const w fgSizerScale->Add( m_staticText2, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); yscale = new wxTextCtrl( vbScale->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerScale->Add( yscale, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 ); + fgSizerScale->Add( yscale, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); m_spinYscale = new wxSpinButton( vbScale->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_VERTICAL ); fgSizerScale->Add( m_spinYscale, 0, wxALIGN_CENTER_VERTICAL, 5 ); @@ -53,7 +53,7 @@ PANEL_PREV_3D_BASE::PANEL_PREV_3D_BASE( wxWindow* parent, wxWindowID id, const w fgSizerScale->Add( zscale, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 ); m_spinZscale = new wxSpinButton( vbScale->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_VERTICAL ); - fgSizerScale->Add( m_spinZscale, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); + fgSizerScale->Add( m_spinZscale, 0, wxALIGN_CENTER_VERTICAL, 5 ); vbScale->Add( fgSizerScale, 1, wxEXPAND, 5 ); @@ -100,7 +100,7 @@ PANEL_PREV_3D_BASE::PANEL_PREV_3D_BASE( wxWindow* parent, wxWindowID id, const w #else yrot->SetMaxLength( 9 ); #endif - fgSizerRotate->Add( yrot, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 ); + fgSizerRotate->Add( yrot, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); m_spinYrot = new wxSpinButton( vbRotate->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_VERTICAL ); fgSizerRotate->Add( m_spinYrot, 0, wxALIGN_CENTER_VERTICAL, 5 ); @@ -121,7 +121,7 @@ PANEL_PREV_3D_BASE::PANEL_PREV_3D_BASE( wxWindow* parent, wxWindowID id, const w fgSizerRotate->Add( zrot, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 ); m_spinZrot = new wxSpinButton( vbRotate->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_VERTICAL ); - fgSizerRotate->Add( m_spinZrot, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); + fgSizerRotate->Add( m_spinZrot, 0, wxALIGN_CENTER_VERTICAL, 5 ); vbRotate->Add( fgSizerRotate, 1, wxEXPAND, 5 ); @@ -129,6 +129,7 @@ PANEL_PREV_3D_BASE::PANEL_PREV_3D_BASE( wxWindow* parent, wxWindowID id, const w bSizerLeft->Add( vbRotate, 0, wxEXPAND, 5 ); + wxStaticBoxSizer* vbOffset; vbOffset = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Offset") ), wxVERTICAL ); wxFlexGridSizer* fgSizerOffset; @@ -151,7 +152,7 @@ PANEL_PREV_3D_BASE::PANEL_PREV_3D_BASE( wxWindow* parent, wxWindowID id, const w fgSizerOffset->Add( m_staticText22, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); yoff = new wxTextCtrl( vbOffset->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOffset->Add( yoff, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 ); + fgSizerOffset->Add( yoff, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); m_spinYoffset = new wxSpinButton( vbOffset->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_VERTICAL ); fgSizerOffset->Add( m_spinYoffset, 0, wxALIGN_CENTER_VERTICAL, 5 ); @@ -164,7 +165,7 @@ PANEL_PREV_3D_BASE::PANEL_PREV_3D_BASE( wxWindow* parent, wxWindowID id, const w fgSizerOffset->Add( zoff, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 ); m_spinZoffset = new wxSpinButton( vbOffset->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_VERTICAL ); - fgSizerOffset->Add( m_spinZoffset, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); + fgSizerOffset->Add( m_spinZoffset, 0, wxALIGN_CENTER_VERTICAL, 5 ); vbOffset->Add( fgSizerOffset, 1, wxEXPAND, 5 ); diff --git a/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.fbp b/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.fbp index 045f1ccc6a..772d9b8bce 100644 --- a/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.fbp +++ b/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.fbp @@ -464,7 +464,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP + wxALIGN_CENTER_VERTICAL|wxLEFT 0 1 @@ -813,7 +813,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxBOTTOM + wxALIGN_CENTER_VERTICAL 0 1 @@ -1271,7 +1271,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP + wxALIGN_CENTER_VERTICAL|wxLEFT 0 1 @@ -1620,7 +1620,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxBOTTOM + wxALIGN_CENTER_VERTICAL 0 1 @@ -1717,7 +1717,7 @@ vbOffset wxVERTICAL 1 - protected + none 5 @@ -2078,7 +2078,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP + wxALIGN_CENTER_VERTICAL|wxLEFT 0 1 @@ -2120,7 +2120,7 @@ 1 - public + protected 1 Resizable @@ -2427,7 +2427,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxBOTTOM + wxALIGN_CENTER_VERTICAL 0 1 diff --git a/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.h b/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.h index b3232ec558..d1a497e54a 100644 --- a/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.h +++ b/3d-viewer/3d_cache/dialogs/panel_prev_3d_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Mar 22 2017) +// C++ code generated with wxFormBuilder (version Aug 4 2017) // http://www.wxformbuilder.org/ // // PLEASE DO "NOT" EDIT THIS FILE! @@ -57,11 +57,11 @@ class PANEL_PREV_3D_BASE : public wxPanel wxStaticText* m_staticText31; wxTextCtrl* zrot; wxSpinButton* m_spinZrot; - wxStaticBoxSizer* vbOffset; wxStaticText* m_staticText12; wxTextCtrl* xoff; wxSpinButton* m_spinXoffset; wxStaticText* m_staticText22; + wxTextCtrl* yoff; wxSpinButton* m_spinYoffset; wxStaticText* m_staticText32; wxTextCtrl* zoff; @@ -99,7 +99,6 @@ class PANEL_PREV_3D_BASE : public wxPanel public: - wxTextCtrl* yoff; PANEL_PREV_3D_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 503,371 ), long style = wxTAB_TRAVERSAL ); ~PANEL_PREV_3D_BASE(); diff --git a/3d-viewer/3d_cache/dialogs/panel_prev_model.cpp b/3d-viewer/3d_cache/dialogs/panel_prev_model.cpp index 4656e1ec3b..3cc07b5e3b 100644 --- a/3d-viewer/3d_cache/dialogs/panel_prev_model.cpp +++ b/3d-viewer/3d_cache/dialogs/panel_prev_model.cpp @@ -125,29 +125,7 @@ void PANEL_PREV_3D::initPanel() }; for( int ii = 0; ii < 9; ii++ ) - { spinButtonList[ii]->SetRange( INT_MIN, INT_MAX ); - } - - wxString units; - - switch( g_UserUnit ) - { - case INCHES: - units = _( "inches" ); - break; - case MILLIMETRES: - units = _( "mm" ); - break; - default: - break; - } - - if( !units.IsEmpty() ) - { - units = wxString::Format( _( "Offset (%s)" ), units ); - vbOffset->GetStaticBox()->SetLabel( units ); - } } @@ -236,25 +214,25 @@ void PANEL_PREV_3D::SetModelDataIdx( int idx, bool aReloadPreviewModule ) yrot->SetValue( wxString::Format( "%.2f", aModel->m_Rotation.y ) ); zrot->SetValue( wxString::Format( "%.2f", aModel->m_Rotation.z ) ); - // Convert from internal units (mm) to user units - - double scaler = 1; - switch( g_UserUnit ) { case MILLIMETRES: - scaler = 1.0f; + xoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.x * 25.4 ) ); + yoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.y * 25.4 ) ); + zoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.z * 25.4 ) ); break; - case INCHES: - scaler = 25.4f; - break; - default: - wxASSERT( 0 ); - } - xoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.x / scaler ) ); - yoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.y / scaler ) ); - zoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.z / scaler ) ); + case INCHES: + xoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.x ) ); + yoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.y ) ); + zoff->SetValue( wxString::Format( "%.4f", aModel->m_Offset.z ) ); + break; + + case DEGREES: + case UNSCALED_UNITS: + default: + wxASSERT(0); + } UpdateModelName( aModel->m_Filename ); @@ -271,9 +249,7 @@ void PANEL_PREV_3D::SetModelDataIdx( int idx, bool aReloadPreviewModule ) } if( m_previewPane ) - { m_previewPane->SetFocus(); - } return; } @@ -589,25 +565,24 @@ void PANEL_PREV_3D::getOrientationVars( SGPOINT& aScale, SGPOINT& aRotation, SGP yoff->GetValue().ToDouble( &aOffset.y ); zoff->GetValue().ToDouble( &aOffset.z ); - // Convert from user units to internal units (mm) - - double scaler = 1.0f; - switch( g_UserUnit ) { case MILLIMETRES: - scaler = 1.0f; + // Convert to Inches. Offset is stored in inches. + aOffset.x = aOffset.x / 25.4; + aOffset.y = aOffset.y / 25.4; + aOffset.z = aOffset.z / 25.4; break; - case INCHES: - scaler = 25.4f; - break; - default: - wxASSERT( 0 ); - } - aOffset.x *= scaler; - aOffset.y *= scaler; - aOffset.z *= scaler; + case INCHES: + // It is already in Inches + break; + + case DEGREES: + case UNSCALED_UNITS: + default: + wxASSERT(0); + } return; } diff --git a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp index 72f36a6ebb..19b461658a 100644 --- a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp +++ b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp @@ -1046,7 +1046,9 @@ void C3D_RENDER_OGL_LEGACY::render_3D_module( const MODULE* module, { glPushMatrix(); - glTranslatef( sM->m_Offset.x, sM->m_Offset.y, sM->m_Offset.z ); + glTranslatef( sM->m_Offset.x * 25.4f, + sM->m_Offset.y * 25.4f, + sM->m_Offset.z * 25.4f ); glRotatef( -sM->m_Rotation.z, 0.0f, 0.0f, 1.0f ); glRotatef( -sM->m_Rotation.y, 0.0f, 1.0f, 0.0f ); diff --git a/3d-viewer/3d_rendering/3d_render_raytracing/c3d_render_createscene.cpp b/3d-viewer/3d_rendering/3d_render_raytracing/c3d_render_createscene.cpp index 85e81cbb4e..592d141408 100644 --- a/3d-viewer/3d_rendering/3d_render_raytracing/c3d_render_createscene.cpp +++ b/3d-viewer/3d_rendering/3d_render_raytracing/c3d_render_createscene.cpp @@ -1263,9 +1263,9 @@ void C3D_RENDER_RAYTRACING::load_3D_models() glm::mat4 modelMatrix = moduleMatrix; modelMatrix = glm::translate( modelMatrix, - SFVEC3F( sM->m_Offset.x, - sM->m_Offset.y, - sM->m_Offset.z ) ); + SFVEC3F( sM->m_Offset.x * 25.4f, + sM->m_Offset.y * 25.4f, + sM->m_Offset.z * 25.4f ) ); modelMatrix = glm::rotate( modelMatrix, (float)-( sM->m_Rotation.z / 180.0f ) * diff --git a/pcbnew/class_module.h b/pcbnew/class_module.h index daeb814fd2..c92fbafcf6 100644 --- a/pcbnew/class_module.h +++ b/pcbnew/class_module.h @@ -82,14 +82,6 @@ enum MODULE_ATTR_T class MODULE_3D_SETTINGS { public: - MODULE_3D_SETTINGS() : - // Initialize with sensible values - m_Scale { 1, 1, 1 }, - m_Rotation { 0, 0, 0 }, - m_Offset { 0, 0, 0 } - { - } - struct VECTOR3D { double x, y, z; diff --git a/pcbnew/exporters/export_vrml.cpp b/pcbnew/exporters/export_vrml.cpp index cb4f607d94..a88fca39cb 100644 --- a/pcbnew/exporters/export_vrml.cpp +++ b/pcbnew/exporters/export_vrml.cpp @@ -1349,13 +1349,11 @@ static void export_vrml_module( MODEL_VRML& aModel, BOARD* aPcb, compose_quat( q1, q2, q1 ); from_quat( q1, rot ); - double offsetFactor = 1000.0f * IU_PER_MILS / 25.4f; - // adjust 3D shape local offset position - // they are given in mm, so they are converted in board IU. - double offsetx = sM->m_Offset.x * offsetFactor; - double offsety = sM->m_Offset.y * offsetFactor; - double offsetz = sM->m_Offset.z * offsetFactor; + // they are given in inch, so they are converted in board IU. + double offsetx = sM->m_Offset.x * IU_PER_MILS * 1000.0; + double offsety = sM->m_Offset.y * IU_PER_MILS * 1000.0; + double offsetz = sM->m_Offset.z * IU_PER_MILS * 1000.0; if( isFlipped ) offsetz = -offsetz; diff --git a/utils/kicad2step/pcb/kicadmodel.cpp b/utils/kicad2step/pcb/kicadmodel.cpp index 6f680e03f0..6c4c0331d2 100644 --- a/utils/kicad2step/pcb/kicadmodel.cpp +++ b/utils/kicad2step/pcb/kicadmodel.cpp @@ -28,10 +28,7 @@ #include "kicadmodel.h" -KICADMODEL::KICADMODEL() : - m_scale( 1.0, 1.0, 1.0 ), - m_offset( 0.0, 0.0, 0.0 ), - m_rotation( 0.0, 0.0, 0.0 ) +KICADMODEL::KICADMODEL() : m_scale( 1.0, 1.0, 1.0 ) { return; } diff --git a/utils/kicad2step/pcb/oce_utils.cpp b/utils/kicad2step/pcb/oce_utils.cpp index dccd5c6817..dcf9825ed6 100644 --- a/utils/kicad2step/pcb/oce_utils.cpp +++ b/utils/kicad2step/pcb/oce_utils.cpp @@ -996,9 +996,10 @@ bool PCBMODEL::getModelLocation( bool aBottom, DOUBLET aPosition, double aRotati gp_Trsf lPos; lPos.SetTranslation( gp_Vec( aPosition.x, -aPosition.y, 0.0 ) ); - // Offset board thickness - aOffset.z += BOARD_OFFSET; - + // offset (inches) + aOffset.x *= 25.4; + aOffset.y *= 25.4; + aOffset.z *= 25.4 + BOARD_OFFSET; gp_Trsf lRot; if( aBottom )