Pcbnew: Fix wrml export bug when a 3D shape has offset.

This commit is contained in:
jean-pierre charras 2011-01-15 21:21:46 +01:00
parent 73585a8514
commit 5e37723587
1 changed files with 13 additions and 3 deletions

View File

@ -1085,10 +1085,20 @@ static void export_vrml_module( BOARD* aPcb, MODULE* aModule,
vrmlm->m_MatScale.x * aScalingFactor,
vrmlm->m_MatScale.y * aScalingFactor,
vrmlm->m_MatScale.z * aScalingFactor );
/* adjust 3D shape offset position (offset is given inch) */
#define UNITS_3D_TO_PCB_UNITS PCB_INTERNAL_UNIT
int offsetx = wxRound( vrmlm->m_MatPosition.x * UNITS_3D_TO_PCB_UNITS );
int offsety = wxRound( vrmlm->m_MatPosition.y * UNITS_3D_TO_PCB_UNITS );
double offsetz = vrmlm->m_MatPosition.z * UNITS_3D_TO_PCB_UNITS;
RotatePoint(&offsetx, &offsety, aModule->m_Orient);
if ( isFlipped )
NEGATE(offsetz);
fprintf( aOutputFile, " translation %g %g %g\n",
vrmlm->m_MatPosition.x + aModule->m_Pos.x,
-vrmlm->m_MatPosition.y - aModule->m_Pos.y,
vrmlm->m_MatPosition.z + layer_z[aModule->GetLayer()] );
(double) (offsetx + aModule->m_Pos.x),
- (double)(offsety + aModule->m_Pos.y), // Y axis is reversed in pcbnew
offsetz + layer_z[aModule->GetLayer()] );
fprintf( aOutputFile,
" children [\n Inline {\n url \"%s\"\n } ]\n",
CONV_TO_UTF8( fname ) );