Commit 602aa168 authored by jean-pierre charras's avatar jean-pierre charras
Browse files

3D-viewer: minor fixes and enhancements

parents 5614ba00 28f55e2a
Loading
Loading
Loading
Loading
+30 −25
Original line number Original line Diff line number Diff line
@@ -168,9 +168,6 @@ static inline void SetGLEpoxyColor( double aTransparency = 1.0 )
// in realistic mode and normal mode.
// in realistic mode and normal mode.
static inline void SetGLTechLayersColor( LAYER_NUM aLayer )
static inline void SetGLTechLayersColor( LAYER_NUM aLayer )
{
{
    // Generates an epoxy color, near board color
//    const double lum = 0.2/255.0;

    if( g_Parm_3D_Visu.IsRealisticMode() )
    if( g_Parm_3D_Visu.IsRealisticMode() )
    {
    {
        switch( aLayer )
        switch( aLayer )
@@ -228,8 +225,6 @@ void EDA_3D_CANVAS::BuildBoard3DView()


    // Build a polygon from edge cut items
    // Build a polygon from edge cut items
    wxString msg;
    wxString msg;
    if( realistic_mode || g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SHOW_BOARD_BODY] )
    {
    if( ! pcb->GetBoardPolygonOutlines( bufferPcbOutlines,
    if( ! pcb->GetBoardPolygonOutlines( bufferPcbOutlines,
                                        allLayerHoles, &msg ) )
                                        allLayerHoles, &msg ) )
    {
    {
@@ -237,7 +232,6 @@ void EDA_3D_CANVAS::BuildBoard3DView()
            _("Unable to calculate the board outlines, will use the outlines boundary box");
            _("Unable to calculate the board outlines, will use the outlines boundary box");
        wxMessageBox( msg );
        wxMessageBox( msg );
    }
    }
    }


    CPOLYGONS_LIST  bufferZonesPolys;
    CPOLYGONS_LIST  bufferZonesPolys;
    bufferZonesPolys.reserve( 500000 );             // Reserve for large board ( copper zones mainly )
    bufferZonesPolys.reserve( 500000 );             // Reserve for large board ( copper zones mainly )
@@ -317,7 +311,7 @@ void EDA_3D_CANVAS::BuildBoard3DView()
        }
        }


        // Draw copper zones
        // Draw copper zones
        if( g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ZONE] )
        if( g_Parm_3D_Visu.GetFlag( FL_ZONE ) )
        {
        {
            for( int ii = 0; ii < pcb->GetAreaCount(); ii++ )
            for( int ii = 0; ii < pcb->GetAreaCount(); ii++ )
            {
            {
@@ -418,7 +412,8 @@ void EDA_3D_CANVAS::BuildBoard3DView()
    }
    }


    // Draw board substrate:
    // Draw board substrate:
    if( bufferPcbOutlines.GetCornersCount() )
    if( bufferPcbOutlines.GetCornersCount() &&
        ( realistic_mode || g_Parm_3D_Visu.GetFlag( FL_SHOW_BOARD_BODY ) ) )
    {
    {
        int copper_thickness = g_Parm_3D_Visu.GetCopperThicknessBIU();
        int copper_thickness = g_Parm_3D_Visu.GetCopperThicknessBIU();
        // a small offset between substrate and external copper layer to avoid artifacts
        // a small offset between substrate and external copper layer to avoid artifacts
@@ -465,13 +460,16 @@ void EDA_3D_CANVAS::BuildBoard3DView()
    }
    }


    // draw graphic items, not on copper layers
    // draw graphic items, not on copper layers
    KI_POLYGON_SET  brdpolysetHoles;
    allLayerHoles.ExportTo( brdpolysetHoles );

    for( LAYER_NUM layer = FIRST_NON_COPPER_LAYER; layer <= LAST_NON_COPPER_LAYER;
    for( LAYER_NUM layer = FIRST_NON_COPPER_LAYER; layer <= LAST_NON_COPPER_LAYER;
         layer++ )
         layer++ )
    {
    {
        if( !Is3DLayerEnabled( layer ) )
        if( !Is3DLayerEnabled( layer ) )
            continue;
            continue;


        if( layer == EDGE_N && g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SHOW_BOARD_BODY] )
        if( layer == EDGE_N && g_Parm_3D_Visu.GetFlag( FL_SHOW_BOARD_BODY )  )
            continue;
            continue;


        bufferPolys.RemoveAllContours();
        bufferPolys.RemoveAllContours();
@@ -547,6 +545,13 @@ void EDA_3D_CANVAS::BuildBoard3DView()
            bufferPolys.ExportTo( polyset );
            bufferPolys.ExportTo( polyset );
            currLayerPolyset -= polyset;
            currLayerPolyset -= polyset;
        }
        }
        // Remove holes from Solder paste layers and siklscreen
        else if( layer == SOLDERPASTE_N_BACK || layer == SOLDERPASTE_N_FRONT
                 || layer == SILKSCREEN_N_BACK || layer == SILKSCREEN_N_FRONT  )
        {
            bufferPolys.ExportTo( currLayerPolyset );
            currLayerPolyset -= brdpolysetHoles;
        }
        else    // usuall layers, merge polys built from each item shape:
        else    // usuall layers, merge polys built from each item shape:
        {
        {
            bufferPolys.ExportTo( polyset );
            bufferPolys.ExportTo( polyset );
@@ -606,7 +611,7 @@ GLuint EDA_3D_CANVAS::CreateDrawGL_List()
    glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
    glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );


    // draw axis
    // draw axis
    if( g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_AXIS] )
    if( g_Parm_3D_Visu.GetFlag( FL_AXIS )  )
    {
    {
        glEnable( GL_COLOR_MATERIAL );
        glEnable( GL_COLOR_MATERIAL );
        SetGLColor( WHITE );
        SetGLColor( WHITE );
@@ -638,7 +643,7 @@ GLuint EDA_3D_CANVAS::CreateDrawGL_List()
    BuildBoard3DView();
    BuildBoard3DView();


    // Draw grid
    // Draw grid
    if( g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_GRID] )
    if( g_Parm_3D_Visu.GetFlag( FL_GRID )  )
        DrawGrid( g_Parm_3D_Visu.m_3D_Grid );
        DrawGrid( g_Parm_3D_Visu.m_3D_Grid );


    glEndList();
    glEndList();
@@ -825,7 +830,7 @@ void MODULE::ReadAndInsert3DComponentShape( EDA_3D_CANVAS* glcanvas )
    // Draw module shape: 3D shape if exists (or module outlines if not exists)
    // Draw module shape: 3D shape if exists (or module outlines if not exists)
    S3D_MASTER* struct3D = m_3D_Drawings;
    S3D_MASTER* struct3D = m_3D_Drawings;


    if( g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_MODULE] )
    if( g_Parm_3D_Visu.GetFlag( FL_MODULE )  )
    {
    {
        double zpos;
        double zpos;


@@ -921,7 +926,7 @@ void EDA_3D_CANVAS::Draw3DPadHole( D_PAD* aPad )


bool Is3DLayerEnabled( LAYER_NUM aLayer )
bool Is3DLayerEnabled( LAYER_NUM aLayer )
{
{
    int flg;
    DISPLAY3D_FLG flg;
    bool realistic_mode = g_Parm_3D_Visu.IsRealisticMode();
    bool realistic_mode = g_Parm_3D_Visu.IsRealisticMode();


    // see if layer needs to be shown
    // see if layer needs to be shown
@@ -930,22 +935,22 @@ bool Is3DLayerEnabled( LAYER_NUM aLayer )
    {
    {
    case ADHESIVE_N_BACK:
    case ADHESIVE_N_BACK:
    case ADHESIVE_N_FRONT:
    case ADHESIVE_N_FRONT:
        flg = g_Parm_3D_Visu.FL_ADHESIVE;
        flg = FL_ADHESIVE;
        break;
        break;


    case SOLDERPASTE_N_BACK:
    case SOLDERPASTE_N_BACK:
    case SOLDERPASTE_N_FRONT:
    case SOLDERPASTE_N_FRONT:
        flg = g_Parm_3D_Visu.FL_SOLDERPASTE;
        flg = FL_SOLDERPASTE;
        break;
        break;


    case SILKSCREEN_N_BACK:
    case SILKSCREEN_N_BACK:
    case SILKSCREEN_N_FRONT:
    case SILKSCREEN_N_FRONT:
        flg = g_Parm_3D_Visu.FL_SILKSCREEN;
        flg = FL_SILKSCREEN;
        break;
        break;


    case SOLDERMASK_N_BACK:
    case SOLDERMASK_N_BACK:
    case SOLDERMASK_N_FRONT:
    case SOLDERMASK_N_FRONT:
        flg = g_Parm_3D_Visu.FL_SOLDERMASK;
        flg = FL_SOLDERMASK;
        break;
        break;


    case DRAW_N:
    case DRAW_N:
@@ -953,7 +958,7 @@ bool Is3DLayerEnabled( LAYER_NUM aLayer )
        if( realistic_mode )
        if( realistic_mode )
            return false;
            return false;


        flg = g_Parm_3D_Visu.FL_COMMENTS;
        flg = FL_COMMENTS;
        break;
        break;


    case ECO1_N:
    case ECO1_N:
@@ -961,7 +966,7 @@ bool Is3DLayerEnabled( LAYER_NUM aLayer )
        if( realistic_mode )
        if( realistic_mode )
            return false;
            return false;


        flg = g_Parm_3D_Visu.FL_ECO;
        flg = FL_ECO;
        break;
        break;


    case LAYER_N_BACK:
    case LAYER_N_BACK:
@@ -979,7 +984,7 @@ bool Is3DLayerEnabled( LAYER_NUM aLayer )
    }
    }


    // if the layer has a flag, return the flag
    // if the layer has a flag, return the flag
    return g_Parm_3D_Visu.m_DrawFlags[flg] &&
    return g_Parm_3D_Visu.GetFlag( flg ) &&
           g_Parm_3D_Visu.m_BoardSettings->IsLayerVisible( aLayer );
           g_Parm_3D_Visu.m_BoardSettings->IsLayerVisible( aLayer );
}
}


+67 −45
Original line number Original line Diff line number Diff line
@@ -154,6 +154,7 @@ void EDA_3D_FRAME::GetSettings()
{
{
    wxString    text;
    wxString    text;
    wxConfig*   config = wxGetApp().GetSettings(); // Current config used by application
    wxConfig*   config = wxGetApp().GetSettings(); // Current config used by application
    class INFO3D_VISU& prms = g_Parm_3D_Visu;


    if( config )
    if( config )
    {
    {
@@ -168,22 +169,43 @@ void EDA_3D_FRAME::GetSettings()
        config->Read( keyBgColor_Red, &g_Parm_3D_Visu.m_BgColor.m_Red, 0.0 );
        config->Read( keyBgColor_Red, &g_Parm_3D_Visu.m_BgColor.m_Red, 0.0 );
        config->Read( keyBgColor_Green, &g_Parm_3D_Visu.m_BgColor.m_Green, 0.0 );
        config->Read( keyBgColor_Green, &g_Parm_3D_Visu.m_BgColor.m_Green, 0.0 );
        config->Read( keyBgColor_Blue, &g_Parm_3D_Visu.m_BgColor.m_Blue, 0.0 );
        config->Read( keyBgColor_Blue, &g_Parm_3D_Visu.m_BgColor.m_Blue, 0.0 );
        class INFO3D_VISU& prms = g_Parm_3D_Visu;

        config->Read( keyShowRealisticMode,
        bool tmp;
                      &prms.m_DrawFlags[prms.FL_USE_REALISTIC_MODE], false );
        config->Read( keyShowRealisticMode, &tmp, false );
        config->Read( keyShowAxis, &prms.m_DrawFlags[prms.FL_AXIS], true );
        prms.SetFlag( FL_USE_REALISTIC_MODE, tmp );
        config->Read( keyShowFootprints, &prms.m_DrawFlags[prms.FL_MODULE], true );

        config->Read( keyShowCopperThickness,
        config->Read( keyShowAxis, &tmp, true );
                      &prms.m_DrawFlags[prms.FL_USE_COPPER_THICKNESS],
        prms.SetFlag( FL_AXIS, tmp );
                      false );

        config->Read( keyShowZones, &prms.m_DrawFlags[prms.FL_ZONE], true );
        config->Read( keyShowFootprints, &tmp, true );
        config->Read( keyShowAdhesiveLayers, &prms.m_DrawFlags[prms.FL_ADHESIVE], true );
        prms.SetFlag( FL_MODULE, tmp );
        config->Read( keyShowSilkScreenLayers, &prms.m_DrawFlags[prms.FL_SILKSCREEN], true );

        config->Read( keyShowSolderMaskLayers, &prms.m_DrawFlags[prms.FL_SOLDERMASK], true );
        config->Read( keyShowCopperThickness, &tmp, false );
        config->Read( keyShowSolderPasteLayers, &prms.m_DrawFlags[prms.FL_SOLDERPASTE], true );
        prms.SetFlag( FL_USE_COPPER_THICKNESS, tmp );
        config->Read( keyShowCommentsLayer, &prms.m_DrawFlags[prms.FL_COMMENTS], true );

        config->Read( keyShowEcoLayers, &prms.m_DrawFlags[prms.FL_ECO], true );
        config->Read( keyShowZones, &tmp, true );
        config->Read( keyShowBoardBody, &prms.m_DrawFlags[prms.FL_SHOW_BOARD_BODY], true );
        prms.SetFlag( FL_ZONE, tmp );

        config->Read( keyShowAdhesiveLayers, &tmp, true );
        prms.SetFlag( FL_ADHESIVE, tmp );

        config->Read( keyShowSilkScreenLayers, &tmp, true );
        prms.SetFlag( FL_SILKSCREEN, tmp );

        config->Read( keyShowSolderMaskLayers, &tmp, true );
        prms.SetFlag( FL_SOLDERMASK, tmp );

        config->Read( keyShowSolderPasteLayers, &tmp, true );
        prms.SetFlag( FL_SOLDERPASTE, tmp );

        config->Read( keyShowCommentsLayer, &tmp, true );
        prms.SetFlag( FL_COMMENTS, tmp );

        config->Read( keyShowEcoLayers, &tmp, true );
        prms.SetFlag( FL_ECO, tmp );

        config->Read( keyShowBoardBody, &tmp, true );
        prms.SetFlag( FL_SHOW_BOARD_BODY, tmp );
    }
    }
}
}


@@ -200,18 +222,18 @@ void EDA_3D_FRAME::SaveSettings()
    config->Write( keyBgColor_Green, g_Parm_3D_Visu.m_BgColor.m_Green );
    config->Write( keyBgColor_Green, g_Parm_3D_Visu.m_BgColor.m_Green );
    config->Write( keyBgColor_Blue, g_Parm_3D_Visu.m_BgColor.m_Blue );
    config->Write( keyBgColor_Blue, g_Parm_3D_Visu.m_BgColor.m_Blue );
    class INFO3D_VISU& prms = g_Parm_3D_Visu;
    class INFO3D_VISU& prms = g_Parm_3D_Visu;
    config->Write( keyShowRealisticMode, prms.m_DrawFlags[prms.FL_USE_REALISTIC_MODE] );
    config->Write( keyShowRealisticMode, prms.GetFlag( FL_USE_REALISTIC_MODE )  );
    config->Write( keyShowAxis, prms.m_DrawFlags[prms.FL_AXIS] );
    config->Write( keyShowAxis, prms.GetFlag( FL_AXIS )  );
    config->Write( keyShowFootprints, prms.m_DrawFlags[prms.FL_MODULE] );
    config->Write( keyShowFootprints, prms.GetFlag( FL_MODULE )  );
    config->Write( keyShowCopperThickness, prms.m_DrawFlags[prms.FL_USE_COPPER_THICKNESS] );
    config->Write( keyShowCopperThickness, prms.GetFlag( FL_USE_COPPER_THICKNESS )  );
    config->Write( keyShowZones, prms.m_DrawFlags[prms.FL_ZONE] );
    config->Write( keyShowZones, prms.GetFlag( FL_ZONE )  );
    config->Write( keyShowAdhesiveLayers, prms.m_DrawFlags[prms.FL_ADHESIVE] );
    config->Write( keyShowAdhesiveLayers, prms.GetFlag( FL_ADHESIVE )  );
    config->Write( keyShowSilkScreenLayers, prms.m_DrawFlags[prms.FL_SILKSCREEN] );
    config->Write( keyShowSilkScreenLayers, prms.GetFlag( FL_SILKSCREEN )  );
    config->Write( keyShowSolderMaskLayers, prms.m_DrawFlags[prms.FL_SOLDERMASK] );
    config->Write( keyShowSolderMaskLayers, prms.GetFlag( FL_SOLDERMASK )  );
    config->Write( keyShowSolderPasteLayers, prms.m_DrawFlags[prms.FL_SOLDERPASTE] );
    config->Write( keyShowSolderPasteLayers, prms.GetFlag( FL_SOLDERPASTE )  );
    config->Write( keyShowCommentsLayer, prms.m_DrawFlags[prms.FL_COMMENTS] );
    config->Write( keyShowCommentsLayer, prms.GetFlag( FL_COMMENTS )  );
    config->Write( keyShowEcoLayers, prms.m_DrawFlags[prms.FL_ECO] );
    config->Write( keyShowEcoLayers, prms.GetFlag( FL_ECO )  );
    config->Write( keyShowBoardBody, prms.m_DrawFlags[prms.FL_SHOW_BOARD_BODY] );
    config->Write( keyShowBoardBody, prms.GetFlag( FL_SHOW_BOARD_BODY )  );


    if( IsIconized() )
    if( IsIconized() )
        return;
        return;
@@ -363,62 +385,62 @@ void EDA_3D_FRAME::Process_Special_Functions( wxCommandEvent& event )
        return;
        return;


    case ID_MENU3D_REALISTIC_MODE:
    case ID_MENU3D_REALISTIC_MODE:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_USE_REALISTIC_MODE] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_USE_REALISTIC_MODE, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_SHOW_BOARD_BODY:
    case ID_MENU3D_SHOW_BOARD_BODY:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SHOW_BOARD_BODY] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_SHOW_BOARD_BODY, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_AXIS_ONOFF:
    case ID_MENU3D_AXIS_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_AXIS] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_AXIS, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_MODULE_ONOFF:
    case ID_MENU3D_MODULE_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_MODULE] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_MODULE, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_USE_COPPER_THICKNESS:
    case ID_MENU3D_USE_COPPER_THICKNESS:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_USE_COPPER_THICKNESS] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_USE_COPPER_THICKNESS, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_ZONE_ONOFF:
    case ID_MENU3D_ZONE_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ZONE] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_ZONE, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_ADHESIVE_ONOFF:
    case ID_MENU3D_ADHESIVE_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ADHESIVE] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_ADHESIVE, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_SILKSCREEN_ONOFF:
    case ID_MENU3D_SILKSCREEN_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SILKSCREEN] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_SILKSCREEN, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_SOLDER_MASK_ONOFF:
    case ID_MENU3D_SOLDER_MASK_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SOLDERMASK] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_SOLDERMASK, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_SOLDER_PASTE_ONOFF:
    case ID_MENU3D_SOLDER_PASTE_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SOLDERPASTE] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_SOLDERPASTE, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_COMMENTS_ONOFF:
    case ID_MENU3D_COMMENTS_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_COMMENTS] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_COMMENTS, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


    case ID_MENU3D_ECO_ONOFF:
    case ID_MENU3D_ECO_ONOFF:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ECO] = isChecked;
        g_Parm_3D_Visu.SetFlag( FL_ECO, isChecked );
        NewDisplay();
        NewDisplay();
        return;
        return;


@@ -448,26 +470,26 @@ void EDA_3D_FRAME::On3DGridSelection( wxCommandEvent& event )
    switch( id )
    switch( id )
    {
    {
    case ID_MENU3D_GRID_NOGRID:
    case ID_MENU3D_GRID_NOGRID:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_GRID] = false;
        g_Parm_3D_Visu.SetFlag( FL_GRID, false );
        break;
        break;


    case ID_MENU3D_GRID_10_MM:
    case ID_MENU3D_GRID_10_MM:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_GRID] = true;
        g_Parm_3D_Visu.SetFlag( FL_GRID, true );
        g_Parm_3D_Visu.m_3D_Grid = 10.0;
        g_Parm_3D_Visu.m_3D_Grid = 10.0;
        break;
        break;


    case ID_MENU3D_GRID_5_MM:
    case ID_MENU3D_GRID_5_MM:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_GRID] = true;
        g_Parm_3D_Visu.SetFlag( FL_GRID, true );
        g_Parm_3D_Visu.m_3D_Grid = 5.0;
        g_Parm_3D_Visu.m_3D_Grid = 5.0;
        break;
        break;


    case ID_MENU3D_GRID_2P5_MM:
    case ID_MENU3D_GRID_2P5_MM:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_GRID] = true;
        g_Parm_3D_Visu.SetFlag( FL_GRID, true );
        g_Parm_3D_Visu.m_3D_Grid = 2.5;
        g_Parm_3D_Visu.m_3D_Grid = 2.5;
        break;
        break;


    case ID_MENU3D_GRID_1_MM:
    case ID_MENU3D_GRID_1_MM:
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_GRID] = true;
        g_Parm_3D_Visu.SetFlag( FL_GRID, true );
        g_Parm_3D_Visu.m_3D_Grid = 1.0;
        g_Parm_3D_Visu.m_3D_Grid = 1.0;
        break;
        break;


+19 −15
Original line number Original line Diff line number Diff line
/*
/*
 * This program source code file is part of KiCad, a free EDA CAD application.
 * This program source code file is part of KiCad, a free EDA CAD application.
 *
 *
 * Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
 * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
 * Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
 * Copyright (C) 2013 Wayne Stambaugh <stambaughw@verizon.net>
 * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
 * Copyright (C) 1992-2013 KiCad Developers, see AUTHORS.txt for contributors.
 *
 *
 * This program is free software; you can redistribute it and/or
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * modify it under the terms of the GNU General Public License
@@ -180,6 +180,8 @@ void EDA_3D_FRAME::CreateMenuBar()
    gridlistMenu->Append( ID_MENU3D_GRID_2P5_MM, _( "3D Grid 2.5 mm" ), wxEmptyString, true );
    gridlistMenu->Append( ID_MENU3D_GRID_2P5_MM, _( "3D Grid 2.5 mm" ), wxEmptyString, true );
    gridlistMenu->Append( ID_MENU3D_GRID_1_MM, _( "3D Grid 1 mm" ), wxEmptyString, true );
    gridlistMenu->Append( ID_MENU3D_GRID_1_MM, _( "3D Grid 1 mm" ), wxEmptyString, true );


    prefsMenu->AppendSeparator();

    AddMenuItem( prefsMenu, ID_MENU3D_SHOW_BOARD_BODY,
    AddMenuItem( prefsMenu, ID_MENU3D_SHOW_BOARD_BODY,
           _( "Show Board Body" ), KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
           _( "Show Board Body" ), KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );


@@ -192,6 +194,8 @@ void EDA_3D_FRAME::CreateMenuBar()
    AddMenuItem( prefsMenu, ID_MENU3D_ZONE_ONOFF,
    AddMenuItem( prefsMenu, ID_MENU3D_ZONE_ONOFF,
           _( "Show Zone &Filling" ), KiBitmap( add_zone_xpm ), wxITEM_CHECK );
           _( "Show Zone &Filling" ), KiBitmap( add_zone_xpm ), wxITEM_CHECK );


    prefsMenu->AppendSeparator();

    AddMenuItem( prefsMenu, ID_MENU3D_ADHESIVE_ONOFF,
    AddMenuItem( prefsMenu, ID_MENU3D_ADHESIVE_ONOFF,
           _( "Show &Adhesive Layers" ), KiBitmap( tools_xpm ), wxITEM_CHECK );
           _( "Show &Adhesive Layers" ), KiBitmap( tools_xpm ), wxITEM_CHECK );


@@ -224,40 +228,40 @@ void EDA_3D_FRAME::SetMenuBarOptionsState()
    wxMenuItem* item;
    wxMenuItem* item;
    // Set the state of toggle menus according to the current display options
    // Set the state of toggle menus according to the current display options
    item = menuBar->FindItem( ID_MENU3D_REALISTIC_MODE );
    item = menuBar->FindItem( ID_MENU3D_REALISTIC_MODE );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_USE_REALISTIC_MODE]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_USE_REALISTIC_MODE ) );


    item = menuBar->FindItem( ID_MENU3D_SHOW_BOARD_BODY );
    item = menuBar->FindItem( ID_MENU3D_SHOW_BOARD_BODY );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SHOW_BOARD_BODY]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_SHOW_BOARD_BODY ) );


    item = menuBar->FindItem( ID_MENU3D_USE_COPPER_THICKNESS );
    item = menuBar->FindItem( ID_MENU3D_USE_COPPER_THICKNESS );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_USE_COPPER_THICKNESS]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_USE_COPPER_THICKNESS ) );


    item = menuBar->FindItem( ID_MENU3D_MODULE_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_MODULE_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_MODULE]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_MODULE ) );


    item = menuBar->FindItem( ID_MENU3D_ZONE_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_ZONE_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ZONE]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_ZONE ) );


    item = menuBar->FindItem( ID_MENU3D_AXIS_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_AXIS_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_AXIS]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_AXIS ) );


    item = menuBar->FindItem( ID_MENU3D_ADHESIVE_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_ADHESIVE_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ADHESIVE]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_ADHESIVE ) );


    item = menuBar->FindItem( ID_MENU3D_SILKSCREEN_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_SILKSCREEN_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SILKSCREEN]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_SILKSCREEN ) );


    item = menuBar->FindItem( ID_MENU3D_SOLDER_MASK_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_SOLDER_MASK_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SOLDERMASK]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_SOLDERMASK ) );


    item = menuBar->FindItem( ID_MENU3D_SOLDER_PASTE_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_SOLDER_PASTE_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SOLDERPASTE]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_SOLDERPASTE ) );


    item = menuBar->FindItem( ID_MENU3D_COMMENTS_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_COMMENTS_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_COMMENTS]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_COMMENTS ) );


    item = menuBar->FindItem( ID_MENU3D_ECO_ONOFF );
    item = menuBar->FindItem( ID_MENU3D_ECO_ONOFF );
    item->Check(g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ECO]);
    item->Check(g_Parm_3D_Visu.GetFlag( FL_ECO ));
}
}


void EDA_3D_FRAME::SetToolbars()
void EDA_3D_FRAME::SetToolbars()
+21 −37
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ public:


private:
private:
    EDA_3D_FRAME* m_parent;
    EDA_3D_FRAME* m_parent;
    INFO3D_VISU & m_3Dprms;


    void initDialog();
    void initDialog();


@@ -31,7 +32,7 @@ void EDA_3D_FRAME::Install_3D_ViewOptionDialog( wxCommandEvent& event )




DIALOG_3D_VIEW_OPTIONS::DIALOG_3D_VIEW_OPTIONS( EDA_3D_FRAME* parent )
DIALOG_3D_VIEW_OPTIONS::DIALOG_3D_VIEW_OPTIONS( EDA_3D_FRAME* parent )
     :DIALOG_3D_VIEW_OPTIONS_BASE( parent )
     :DIALOG_3D_VIEW_OPTIONS_BASE( parent ), m_3Dprms( g_Parm_3D_Visu )
{
{
    m_parent = parent;
    m_parent = parent;


@@ -55,24 +56,15 @@ void DIALOG_3D_VIEW_OPTIONS::initDialog()
    m_bitmapECO->SetBitmap( KiBitmap( edit_sheet_xpm ) );
    m_bitmapECO->SetBitmap( KiBitmap( edit_sheet_xpm ) );


    // Check/uncheck checkboxes
    // Check/uncheck checkboxes
    m_checkBoxCuThickness->SetValue(
    m_checkBoxCuThickness->SetValue( m_3Dprms.GetFlag( FL_USE_COPPER_THICKNESS ) );
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_USE_COPPER_THICKNESS] );
    m_checkBox3Dshapes->SetValue( m_3Dprms.GetFlag( FL_MODULE ) );
    m_checkBox3Dshapes->SetValue(
    m_checkBoxAreas->SetValue( m_3Dprms.GetFlag( FL_ZONE ) );
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_MODULE] );
    m_checkBoxSilkscreen->SetValue( m_3Dprms.GetFlag( FL_SILKSCREEN ) );
    m_checkBoxAreas->SetValue(
    m_checkBoxSolderMask->SetValue( m_3Dprms.GetFlag( FL_SOLDERMASK ) );
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ZONE] );
    m_checkBoxSolderpaste->SetValue( m_3Dprms.GetFlag( FL_SOLDERPASTE ) );
    m_checkBoxSilkscreen->SetValue(
    m_checkBoxAdhesive->SetValue( m_3Dprms.GetFlag( FL_ADHESIVE ) );
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SILKSCREEN] );
    m_checkBoxComments->SetValue( m_3Dprms.GetFlag( FL_COMMENTS ) );
    m_checkBoxSolderMask->SetValue(
    m_checkBoxECO->SetValue( m_3Dprms.GetFlag( FL_ECO ) );
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SOLDERMASK] );
    m_checkBoxSolderpaste->SetValue(
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SOLDERPASTE] );
    m_checkBoxAdhesive->SetValue(
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ADHESIVE] );
    m_checkBoxComments->SetValue(
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_COMMENTS] );
    m_checkBoxECO->SetValue(
        g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ECO] );
}
}


void DIALOG_3D_VIEW_OPTIONS::OnShowAllClick( wxCommandEvent& event )
void DIALOG_3D_VIEW_OPTIONS::OnShowAllClick( wxCommandEvent& event )
@@ -105,24 +97,16 @@ void DIALOG_3D_VIEW_OPTIONS::OnShowNoneClick( wxCommandEvent& event )


void DIALOG_3D_VIEW_OPTIONS::OnOKClick( wxCommandEvent& event )
void DIALOG_3D_VIEW_OPTIONS::OnOKClick( wxCommandEvent& event )
{
{
    g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_USE_COPPER_THICKNESS] =
    m_3Dprms.SetFlag( FL_USE_COPPER_THICKNESS,
        m_checkBoxCuThickness->GetValue();
                            m_checkBoxCuThickness->GetValue() );
    g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_MODULE] =
    m_3Dprms.SetFlag( FL_MODULE, m_checkBox3Dshapes->GetValue() );
        m_checkBox3Dshapes->GetValue();
    m_3Dprms.SetFlag( FL_ZONE, m_checkBoxAreas->GetValue() );
    g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ZONE] =
    m_3Dprms.SetFlag( FL_SILKSCREEN, m_checkBoxSilkscreen->GetValue() );
        m_checkBoxAreas->GetValue();
    m_3Dprms.SetFlag( FL_SOLDERMASK, m_checkBoxSolderMask->GetValue() );
    g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SILKSCREEN] =
    m_3Dprms.SetFlag( FL_SOLDERPASTE, m_checkBoxSolderpaste->GetValue() );
        m_checkBoxSilkscreen->GetValue();
    m_3Dprms.SetFlag( FL_ADHESIVE, m_checkBoxAdhesive->GetValue() );
    g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SOLDERMASK] =
    m_3Dprms.SetFlag( FL_COMMENTS, m_checkBoxComments->GetValue() );
        m_checkBoxSolderMask->GetValue();
    m_3Dprms.SetFlag( FL_ECO, m_checkBoxECO->GetValue( ) );
    g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_SOLDERPASTE] =
        m_checkBoxSolderpaste->GetValue();
    g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ADHESIVE] =
        m_checkBoxAdhesive->GetValue();
    g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_COMMENTS] =
        m_checkBoxComments->GetValue();
     g_Parm_3D_Visu.m_DrawFlags[g_Parm_3D_Visu.FL_ECO] =
        m_checkBoxECO->GetValue();


    EndModal( wxID_OK );
    EndModal( wxID_OK );
}
}
+4 −4
Original line number Original line Diff line number Diff line
@@ -68,10 +68,10 @@ INFO3D_VISU::INFO3D_VISU()


    // default all special item layers Visible
    // default all special item layers Visible
    for( ii = 0; ii < FL_LAST; ii++ )
    for( ii = 0; ii < FL_LAST; ii++ )
        m_DrawFlags[ii] = true;
        m_drawFlags[ii] = true;


    m_DrawFlags[FL_GRID] = false;
    SetFlag( FL_GRID, false );
    m_DrawFlags[FL_USE_COPPER_THICKNESS] = false;
    SetFlag( FL_USE_COPPER_THICKNESS, false );
}
}




@@ -164,7 +164,7 @@ void INFO3D_VISU::InitSettings( BOARD* aBoard )
            break;
            break;


        case SOLDERMASK_N_FRONT:
        case SOLDERMASK_N_FRONT:
            zpos = zpos_copper_front + 2 * zpos_offset;
            zpos = zpos_copper_front + 1 * zpos_offset;
            break;
            break;


        case SILKSCREEN_N_BACK:
        case SILKSCREEN_N_BACK:
Loading