3D viewer: do not show via/pad shapes of pads not connected on copper layers.
Show the same vias/pad shapes as plot functions.
This commit is contained in:
parent
a06a0c1236
commit
29d6fe88f0
|
@ -460,6 +460,10 @@ void BOARD_ADAPTER::AddPadsShapesWithClearanceToContainer( const MODULE* aModule
|
||||||
if( !pad->IsOnLayer( aLayerId ) )
|
if( !pad->IsOnLayer( aLayerId ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// Skip pad annulus when not connected on this layer (if removing is enabled)
|
||||||
|
if( !pad->IsPadOnLayer( aLayerId ) && IsCopperLayer( aLayerId ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
// NPTH pads are not drawn on layers if the
|
// NPTH pads are not drawn on layers if the
|
||||||
// shape size and pos is the same as their hole:
|
// shape size and pos is the same as their hole:
|
||||||
if( aSkipNPTHPadsWihNoCopper && (pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED) )
|
if( aSkipNPTHPadsWihNoCopper && (pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED) )
|
||||||
|
|
|
@ -220,7 +220,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
|
|
||||||
CBVHCONTAINER2D *layerContainer = m_layers_container2D[curr_layer_id];
|
CBVHCONTAINER2D *layerContainer = m_layers_container2D[curr_layer_id];
|
||||||
|
|
||||||
// ADD TRACKS
|
// Add track segments shapes and via annulus shapes
|
||||||
unsigned int nTracks = trackList.size();
|
unsigned int nTracks = trackList.size();
|
||||||
|
|
||||||
for( unsigned int trackIdx = 0; trackIdx < nTracks; ++trackIdx )
|
for( unsigned int trackIdx = 0; trackIdx < nTracks; ++trackIdx )
|
||||||
|
@ -231,6 +231,12 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
if( !track->IsOnLayer( curr_layer_id ) )
|
if( !track->IsOnLayer( curr_layer_id ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// Skip vias annulus when not connected on this layer (if removing is enabled)
|
||||||
|
const VIA *via = dyn_cast< const VIA*>( track );
|
||||||
|
|
||||||
|
if( via && !via->IsPadOnLayer( curr_layer_id ) && IsCopperLayer( curr_layer_id ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
// Add object item to layer container
|
// Add object item to layer container
|
||||||
createNewTrack( track, layerContainer, 0.0f );
|
createNewTrack( track, layerContainer, 0.0f );
|
||||||
}
|
}
|
||||||
|
@ -353,9 +359,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
|
|
||||||
if( viatype != VIATYPE::THROUGH )
|
if( viatype != VIATYPE::THROUGH )
|
||||||
{
|
{
|
||||||
|
|
||||||
// Add VIA hole contourns
|
// Add VIA hole contourns
|
||||||
// /////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// Add outer holes of VIAs
|
// Add outer holes of VIAs
|
||||||
SHAPE_POLY_SET *layerOuterHolesPoly = NULL;
|
SHAPE_POLY_SET *layerOuterHolesPoly = NULL;
|
||||||
|
@ -409,10 +413,11 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
TransformCircleToPolygon( m_through_inner_holes_poly, via->GetStart(),
|
TransformCircleToPolygon( m_through_inner_holes_poly, via->GetStart(),
|
||||||
holediameter / 2, ARC_HIGH_DEF );
|
holediameter / 2, ARC_HIGH_DEF );
|
||||||
|
|
||||||
// Add samething for vias only
|
// Add same thing for vias only
|
||||||
|
|
||||||
TransformCircleToPolygon( m_through_outer_holes_vias_poly,
|
TransformCircleToPolygon( m_through_outer_holes_vias_poly,
|
||||||
via->GetStart(), hole_outer_radius, ARC_HIGH_DEF );
|
via->GetStart(), hole_outer_radius, ARC_HIGH_DEF );
|
||||||
|
|
||||||
if( GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
if( GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
||||||
{
|
{
|
||||||
TransformCircleToPolygon( m_through_outer_ring_holes_vias_poly,
|
TransformCircleToPolygon( m_through_outer_ring_holes_vias_poly,
|
||||||
|
@ -433,7 +438,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
start_Time = GetRunningMicroSecs();
|
start_Time = GetRunningMicroSecs();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Creates outline contours of the tracks and add it to the poly of the layer
|
// Creates vertical outline contours of the tracks and add it to the poly of the layer
|
||||||
// /////////////////////////////////////////////////////////////////////////
|
// /////////////////////////////////////////////////////////////////////////
|
||||||
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
|
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
|
||||||
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
|
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
|
||||||
|
@ -454,7 +459,13 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
if( !track->IsOnLayer( curr_layer_id ) )
|
if( !track->IsOnLayer( curr_layer_id ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Add the track contour
|
// Skip vias annulus when not connected on this layer (if removing is enabled)
|
||||||
|
const VIA *via = dyn_cast< const VIA*>( track );
|
||||||
|
|
||||||
|
if( via && !via->IsPadOnLayer( curr_layer_id ) && IsCopperLayer( curr_layer_id ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Add the track/via contour
|
||||||
track->TransformShapeWithClearanceToPolygon( *layerPoly, 0 );
|
track->TransformShapeWithClearanceToPolygon( *layerPoly, 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -486,10 +497,12 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
pad->GetDrillSize().y ) / 2.0f ) * m_biuTo3Dunits;
|
pad->GetDrillSize().y ) / 2.0f ) * m_biuTo3Dunits;
|
||||||
|
|
||||||
m_through_holes_outer.Add( createNewPadDrill( pad, inflate ) );
|
m_through_holes_outer.Add( createNewPadDrill( pad, inflate ) );
|
||||||
|
|
||||||
if( GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
if( GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
||||||
{
|
{
|
||||||
m_through_holes_outer_ring.Add( createNewPadDrill( pad, inflate ) );
|
m_through_holes_outer_ring.Add( createNewPadDrill( pad, inflate ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_through_holes_inner.Add( createNewPadDrill( pad, 0 ) );
|
m_through_holes_inner.Add( createNewPadDrill( pad, 0 ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -565,8 +578,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
start_Time = GetRunningMicroSecs();
|
start_Time = GetRunningMicroSecs();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Add modules PADs poly contourns
|
// Add modules PADs poly contourns (vertical outlines)
|
||||||
// /////////////////////////////////////////////////////////////////////////
|
|
||||||
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
|
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
|
||||||
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
|
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
|
||||||
{
|
{
|
||||||
|
@ -576,12 +588,9 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
|
|
||||||
SHAPE_POLY_SET *layerPoly = m_layers_poly[curr_layer_id];
|
SHAPE_POLY_SET *layerPoly = m_layers_poly[curr_layer_id];
|
||||||
|
|
||||||
// ADD PADS
|
// Add pads to polygon list
|
||||||
for( auto module : m_board->Modules() )
|
for( auto module : m_board->Modules() )
|
||||||
{
|
{
|
||||||
// Construct polys
|
|
||||||
// /////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// Note: NPTH pads are not drawn on copper layers when the pad
|
// Note: NPTH pads are not drawn on copper layers when the pad
|
||||||
// has same shape as its hole
|
// has same shape as its hole
|
||||||
module->TransformPadsShapesWithClearanceToPolygon( curr_layer_id,
|
module->TransformPadsShapesWithClearanceToPolygon( curr_layer_id,
|
||||||
|
@ -589,11 +598,6 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
0,
|
0,
|
||||||
true );
|
true );
|
||||||
|
|
||||||
// Micro-wave modules may have items on copper layers
|
|
||||||
module->TransformGraphicTextWithClearanceToPolygonSet( curr_layer_id,
|
|
||||||
*layerPoly,
|
|
||||||
0 );
|
|
||||||
|
|
||||||
transformGraphicModuleEdgeToPolygonSet( module, curr_layer_id, *layerPoly );
|
transformGraphicModuleEdgeToPolygonSet( module, curr_layer_id, *layerPoly );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,11 +121,14 @@ void MODULE::TransformPadsShapesWithClearanceToPolygon( PCB_LAYER_ID aLayer,
|
||||||
SHAPE_POLY_SET& aCornerBuffer, int aInflateValue, int aMaxError,
|
SHAPE_POLY_SET& aCornerBuffer, int aInflateValue, int aMaxError,
|
||||||
bool aSkipNPTHPadsWihNoCopper ) const
|
bool aSkipNPTHPadsWihNoCopper ) const
|
||||||
{
|
{
|
||||||
for( auto pad : m_pads )
|
for( D_PAD* pad : m_pads )
|
||||||
{
|
{
|
||||||
if( aLayer != UNDEFINED_LAYER && !pad->IsOnLayer(aLayer) )
|
if( aLayer != UNDEFINED_LAYER && !pad->IsOnLayer(aLayer) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if( !pad->IsPadOnLayer( aLayer ) && IsCopperLayer( aLayer ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
// NPTH pads are not drawn on layers if the shape size and pos is the same
|
// NPTH pads are not drawn on layers if the shape size and pos is the same
|
||||||
// as their hole:
|
// as their hole:
|
||||||
if( aSkipNPTHPadsWihNoCopper && pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED )
|
if( aSkipNPTHPadsWihNoCopper && pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED )
|
||||||
|
|
Loading…
Reference in New Issue