Fix 3D hole knock-out of silkscreen.
It still doesn't knock-out the board edges, but this is a good first step. Fixes https://gitlab.com/kicad/code/kicad/issues/4837
This commit is contained in:
parent
42350a4928
commit
3c01147f10
|
@ -253,9 +253,9 @@ bool BOARD_ADAPTER::ShouldModuleBeDisplayed( MODULE_ATTR_T aModuleAttributs ) co
|
||||||
#define COPPER_THICKNESS KiROUND( 0.035 * IU_PER_MM ) // for 35 um
|
#define COPPER_THICKNESS KiROUND( 0.035 * IU_PER_MM ) // for 35 um
|
||||||
#define TECH_LAYER_THICKNESS KiROUND( 0.04 * IU_PER_MM )
|
#define TECH_LAYER_THICKNESS KiROUND( 0.04 * IU_PER_MM )
|
||||||
|
|
||||||
int BOARD_ADAPTER::GetCopperThicknessBIU() const noexcept
|
int BOARD_ADAPTER::GetHolePlatingThicknessBIU() const noexcept
|
||||||
{
|
{
|
||||||
return COPPER_THICKNESS;
|
return m_board->GetDesignSettings().GetHolePlatingThickness();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int BOARD_ADAPTER::GetNrSegmentsCircle( float aDiameter3DU ) const
|
unsigned int BOARD_ADAPTER::GetNrSegmentsCircle( float aDiameter3DU ) const
|
||||||
|
|
|
@ -199,7 +199,7 @@ class BOARD_ADAPTER
|
||||||
* @brief GetCopperThicknessBIU - Get the current copper layer thickness
|
* @brief GetCopperThicknessBIU - Get the current copper layer thickness
|
||||||
* @return thickness in board unities
|
* @return thickness in board unities
|
||||||
*/
|
*/
|
||||||
int GetCopperThicknessBIU() const noexcept;
|
int GetHolePlatingThicknessBIU() const noexcept;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GetBoardSizeBIU - Get the board size
|
* @brief GetBoardSizeBIU - Get the board size
|
||||||
|
@ -400,19 +400,16 @@ class BOARD_ADAPTER
|
||||||
return m_through_holes_outer_ring;
|
return m_through_holes_outer_ring;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief GetThroughHole_Outer_poly -
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
const SHAPE_POLY_SET &GetThroughHole_Outer_poly() const noexcept
|
const SHAPE_POLY_SET &GetThroughHole_Outer_poly() const noexcept
|
||||||
{
|
{
|
||||||
return m_through_outer_holes_poly;
|
return m_through_outer_holes_poly;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
const SHAPE_POLY_SET &GetThroughHole_Outer_Ring_poly() const noexcept
|
||||||
* @brief GetThroughHole_Outer_poly_NPTH -
|
{
|
||||||
* @return
|
return m_through_outer_ring_holes_poly;
|
||||||
*/
|
}
|
||||||
|
|
||||||
const SHAPE_POLY_SET &GetThroughHole_Outer_poly_NPTH() const noexcept
|
const SHAPE_POLY_SET &GetThroughHole_Outer_poly_NPTH() const noexcept
|
||||||
{
|
{
|
||||||
return m_through_outer_holes_poly_NPTH;
|
return m_through_outer_holes_poly_NPTH;
|
||||||
|
@ -427,40 +424,11 @@ class BOARD_ADAPTER
|
||||||
return m_through_holes_vias_outer;
|
return m_through_holes_vias_outer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief GetThroughHole_Vias_Outer_Ring -
|
|
||||||
* @return a container with via THT holes only, including annular ring size
|
|
||||||
*/
|
|
||||||
const CBVHCONTAINER2D& GetThroughHole_Vias_Outer_Ring() const noexcept
|
|
||||||
{
|
|
||||||
return m_through_holes_vias_outer_ring;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief GetThroughHole_Vias_Inner -
|
|
||||||
* @return a container with via THT holes only
|
|
||||||
*/
|
|
||||||
const CBVHCONTAINER2D &GetThroughHole_Vias_Inner() const noexcept
|
|
||||||
{
|
|
||||||
return m_through_holes_vias_inner;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief GetThroughHole_Vias_Outer_poly -
|
|
||||||
*/
|
|
||||||
const SHAPE_POLY_SET &GetThroughHole_Vias_Outer_poly() const noexcept
|
const SHAPE_POLY_SET &GetThroughHole_Vias_Outer_poly() const noexcept
|
||||||
{
|
{
|
||||||
return m_through_outer_holes_vias_poly;
|
return m_through_outer_holes_vias_poly;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief GetThroughHole_Vias_Outer_Ring_poly -
|
|
||||||
*/
|
|
||||||
const SHAPE_POLY_SET& GetThroughHole_Vias_Outer_Ring_poly() const noexcept
|
|
||||||
{
|
|
||||||
return m_through_outer_ring_holes_vias_poly;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GetThroughHole_Inner - Get the ThroughHole container
|
* @brief GetThroughHole_Inner - Get the ThroughHole container
|
||||||
* @return a container with holes
|
* @return a container with holes
|
||||||
|
@ -720,7 +688,7 @@ private:
|
||||||
SHAPE_POLY_SET m_through_outer_holes_vias_poly;
|
SHAPE_POLY_SET m_through_outer_holes_vias_poly;
|
||||||
|
|
||||||
/// It contains polygon contours for through holes vias (outer annular ring)
|
/// It contains polygon contours for through holes vias (outer annular ring)
|
||||||
SHAPE_POLY_SET m_through_outer_ring_holes_vias_poly;
|
SHAPE_POLY_SET m_through_outer_ring_holes_poly;
|
||||||
|
|
||||||
/// PCB board outline polygon
|
/// PCB board outline polygon
|
||||||
SHAPE_POLY_SET m_board_poly;
|
SHAPE_POLY_SET m_board_poly;
|
||||||
|
@ -753,10 +721,6 @@ private:
|
||||||
/// the radius of the hole is inflated with the copper tickness
|
/// the radius of the hole is inflated with the copper tickness
|
||||||
CBVHCONTAINER2D m_through_holes_vias_outer;
|
CBVHCONTAINER2D m_through_holes_vias_outer;
|
||||||
|
|
||||||
/// It contains the list of throughHoles vias of the board,
|
|
||||||
/// the radius of the hole is inflated with the annular ring size
|
|
||||||
CBVHCONTAINER2D m_through_holes_vias_outer_ring;
|
|
||||||
|
|
||||||
/// It contains the list of throughHoles vias of the board,
|
/// It contains the list of throughHoles vias of the board,
|
||||||
/// the radius of the hole
|
/// the radius of the hole
|
||||||
CBVHCONTAINER2D m_through_holes_vias_inner;
|
CBVHCONTAINER2D m_through_holes_vias_inner;
|
||||||
|
|
|
@ -111,13 +111,12 @@ void BOARD_ADAPTER::destroyLayers()
|
||||||
m_through_holes_outer.Clear();
|
m_through_holes_outer.Clear();
|
||||||
m_through_holes_outer_ring.Clear();
|
m_through_holes_outer_ring.Clear();
|
||||||
m_through_holes_vias_outer.Clear();
|
m_through_holes_vias_outer.Clear();
|
||||||
m_through_holes_vias_outer_ring.Clear();
|
|
||||||
m_through_holes_vias_inner.Clear();
|
m_through_holes_vias_inner.Clear();
|
||||||
m_through_outer_holes_poly_NPTH.RemoveAllContours();
|
m_through_outer_holes_poly_NPTH.RemoveAllContours();
|
||||||
m_through_outer_holes_poly.RemoveAllContours();
|
m_through_outer_holes_poly.RemoveAllContours();
|
||||||
|
|
||||||
m_through_outer_holes_vias_poly.RemoveAllContours();
|
m_through_outer_holes_vias_poly.RemoveAllContours();
|
||||||
m_through_outer_ring_holes_vias_poly.RemoveAllContours();
|
m_through_outer_ring_holes_poly.RemoveAllContours();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -319,10 +318,9 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
|
|
||||||
if( GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
if( GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
||||||
{
|
{
|
||||||
m_through_holes_outer_ring.Add(
|
m_through_holes_outer_ring.Add( new CFILLEDCIRCLE2D( via_center,
|
||||||
new CFILLEDCIRCLE2D( via_center, ring_radius, *track ) );
|
ring_radius,
|
||||||
m_through_holes_vias_outer_ring.Add(
|
*track ) );
|
||||||
new CFILLEDCIRCLE2D( via_center, ring_radius, *track ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_through_holes_inner.Add( new CFILLEDCIRCLE2D( via_center,
|
m_through_holes_inner.Add( new CFILLEDCIRCLE2D( via_center,
|
||||||
|
@ -391,7 +389,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
}
|
}
|
||||||
|
|
||||||
const int holediameter = via->GetDrillValue();
|
const int holediameter = via->GetDrillValue();
|
||||||
const int hole_outer_radius = (holediameter / 2) + GetCopperThicknessBIU();
|
const int hole_outer_radius = (holediameter / 2) + GetHolePlatingThicknessBIU();
|
||||||
|
|
||||||
TransformCircleToPolygon( *layerOuterHolesPoly, via->GetStart(),
|
TransformCircleToPolygon( *layerOuterHolesPoly, via->GetStart(),
|
||||||
hole_outer_radius, ARC_HIGH_DEF );
|
hole_outer_radius, ARC_HIGH_DEF );
|
||||||
|
@ -402,7 +400,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
else if( curr_layer_id == layer_id[0] ) // it only adds once the THT holes
|
else if( curr_layer_id == layer_id[0] ) // it only adds once the THT holes
|
||||||
{
|
{
|
||||||
const int holediameter = via->GetDrillValue();
|
const int holediameter = via->GetDrillValue();
|
||||||
const int hole_outer_radius = (holediameter / 2)+ GetCopperThicknessBIU();
|
const int hole_outer_radius = (holediameter / 2) + GetHolePlatingThicknessBIU();
|
||||||
const int hole_outer_ring_radius = via->GetWidth() / 2.0f;
|
const int hole_outer_ring_radius = via->GetWidth() / 2.0f;
|
||||||
|
|
||||||
// Add through hole contourns
|
// Add through hole contourns
|
||||||
|
@ -417,8 +415,8 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
|
|
||||||
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_poly,
|
||||||
via->GetStart(), hole_outer_ring_radius, ARC_HIGH_DEF );
|
via->GetStart(), hole_outer_ring_radius, ARC_HIGH_DEF );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -469,10 +467,9 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
if( !padHole.x ) // Not drilled pad like SMD pad
|
if( !padHole.x ) // Not drilled pad like SMD pad
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// The hole in the body is inflated by copper thickness,
|
// The hole in the body is inflated by copper thickness, if not plated, no copper
|
||||||
// if not plated, no copper
|
|
||||||
const int inflate = ( pad->GetAttribute () != PAD_ATTRIB_NPTH ) ?
|
const int inflate = ( pad->GetAttribute () != PAD_ATTRIB_NPTH ) ?
|
||||||
GetCopperThicknessBIU() : 0;
|
GetHolePlatingThicknessBIU() : 0;
|
||||||
|
|
||||||
m_stats_nr_holes++;
|
m_stats_nr_holes++;
|
||||||
m_stats_hole_med_diameter += ( ( pad->GetDrillSize().x +
|
m_stats_hole_med_diameter += ( ( pad->GetDrillSize().x +
|
||||||
|
@ -504,16 +501,22 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// The hole in the body is inflated by copper thickness.
|
// The hole in the body is inflated by copper thickness.
|
||||||
const int inflate = GetCopperThicknessBIU();
|
const int inflate = GetHolePlatingThicknessBIU();
|
||||||
|
|
||||||
if( pad->GetAttribute () != PAD_ATTRIB_NPTH )
|
if( pad->GetAttribute () != PAD_ATTRIB_NPTH )
|
||||||
{
|
{
|
||||||
|
if( GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
||||||
|
pad->TransformHoleWithClearanceToPolygon( m_through_outer_ring_holes_poly, inflate );
|
||||||
|
|
||||||
pad->TransformHoleWithClearanceToPolygon( m_through_outer_holes_poly, inflate );
|
pad->TransformHoleWithClearanceToPolygon( m_through_outer_holes_poly, inflate );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// If not plated, no copper.
|
// If not plated, no copper.
|
||||||
pad->TransformHoleWithClearanceToPolygon( m_through_outer_holes_poly_NPTH, inflate );
|
if( GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
||||||
|
pad->TransformHoleWithClearanceToPolygon( m_through_outer_ring_holes_poly, 0 );
|
||||||
|
|
||||||
|
pad->TransformHoleWithClearanceToPolygon( m_through_outer_holes_poly_NPTH, 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -877,7 +880,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
m_through_outer_holes_poly.Simplify( SHAPE_POLY_SET::PM_FAST );
|
m_through_outer_holes_poly.Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||||
m_through_outer_holes_poly_NPTH.Simplify( SHAPE_POLY_SET::PM_FAST );
|
m_through_outer_holes_poly_NPTH.Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||||
m_through_outer_holes_vias_poly.Simplify( SHAPE_POLY_SET::PM_FAST );
|
m_through_outer_holes_vias_poly.Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||||
m_through_outer_ring_holes_vias_poly.Simplify( SHAPE_POLY_SET::PM_FAST );
|
m_through_outer_ring_holes_poly.Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||||
|
|
||||||
// Build Tech layers
|
// Build Tech layers
|
||||||
// Based on: https://github.com/KiCad/kicad-source-mirror/blob/master/3d-viewer/3d_draw.cpp#L1059
|
// Based on: https://github.com/KiCad/kicad-source-mirror/blob/master/3d-viewer/3d_draw.cpp#L1059
|
||||||
|
@ -1070,7 +1073,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
|
||||||
|
|
||||||
if( !m_layers_holes2D.empty() )
|
if( !m_layers_holes2D.empty() )
|
||||||
{
|
{
|
||||||
for( auto& hole : m_layers_holes2D)
|
for( auto& hole : m_layers_holes2D )
|
||||||
hole.second->BuildBVH();
|
hole.second->BuildBVH();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -530,9 +530,9 @@ void C3D_RENDER_OGL_LEGACY::reload( REPORTER* aStatusReporter, REPORTER* aWarnin
|
||||||
|
|
||||||
if( m_boardAdapter.GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
if( m_boardAdapter.GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS ) )
|
||||||
{
|
{
|
||||||
m_ogl_disp_list_through_holes_vias_outer_ring = generate_holes_display_list(
|
m_ogl_disp_list_through_holes_outer_ring = generate_holes_display_list(
|
||||||
m_boardAdapter.GetThroughHole_Vias_Outer_Ring().GetList(),
|
m_boardAdapter.GetThroughHole_Outer_Ring().GetList(),
|
||||||
m_boardAdapter.GetThroughHole_Vias_Outer_Ring_poly(),
|
m_boardAdapter.GetThroughHole_Outer_Ring_poly(),
|
||||||
1.0f,
|
1.0f,
|
||||||
0.0f,
|
0.0f,
|
||||||
false );
|
false );
|
||||||
|
@ -802,7 +802,7 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
|
||||||
if( !hasHole )
|
if( !hasHole )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const int copperThickness = m_boardAdapter.GetCopperThicknessBIU();
|
const int copperThickness = m_boardAdapter.GetHolePlatingThicknessBIU();
|
||||||
|
|
||||||
pad->TransformHoleWithClearanceToPolygon( tht_outer_holes_poly,
|
pad->TransformHoleWithClearanceToPolygon( tht_outer_holes_poly,
|
||||||
copperThickness, ARC_LOW_DEF );
|
copperThickness, ARC_LOW_DEF );
|
||||||
|
|
|
@ -65,8 +65,8 @@ C3D_RENDER_OGL_LEGACY::C3D_RENDER_OGL_LEGACY( BOARD_ADAPTER& aAdapter, CCAMERA&
|
||||||
|
|
||||||
m_ogl_disp_list_through_holes_outer_with_npth = NULL;
|
m_ogl_disp_list_through_holes_outer_with_npth = NULL;
|
||||||
m_ogl_disp_list_through_holes_outer = NULL;
|
m_ogl_disp_list_through_holes_outer = NULL;
|
||||||
|
m_ogl_disp_list_through_holes_outer_ring = NULL;
|
||||||
m_ogl_disp_list_through_holes_vias_outer = NULL;
|
m_ogl_disp_list_through_holes_vias_outer = NULL;
|
||||||
m_ogl_disp_list_through_holes_vias_outer_ring = NULL;
|
|
||||||
//m_ogl_disp_list_through_holes_vias_inner = NULL;
|
//m_ogl_disp_list_through_holes_vias_inner = NULL;
|
||||||
m_ogl_disp_list_via = NULL;
|
m_ogl_disp_list_via = NULL;
|
||||||
m_ogl_disp_list_pads_holes = NULL;
|
m_ogl_disp_list_pads_holes = NULL;
|
||||||
|
@ -834,14 +834,14 @@ bool C3D_RENDER_OGL_LEGACY::Redraw(
|
||||||
{
|
{
|
||||||
set_layer_material( layer_id );
|
set_layer_material( layer_id );
|
||||||
|
|
||||||
CLAYERS_OGL_DISP_LISTS* dispListThoughHolesOuter =
|
CLAYERS_OGL_DISP_LISTS* dispListThroughHolesOuter =
|
||||||
( m_boardAdapter.GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS )
|
( m_boardAdapter.GetFlag( FL_CLIP_SILK_ON_VIA_ANNULUS )
|
||||||
&& ( ( layer_id == B_SilkS ) || ( layer_id == F_SilkS ) ) ) ?
|
&& ( ( layer_id == B_SilkS ) || ( layer_id == F_SilkS ) ) ) ?
|
||||||
m_ogl_disp_list_through_holes_vias_outer_ring :
|
m_ogl_disp_list_through_holes_outer_ring :
|
||||||
m_ogl_disp_list_through_holes_vias_outer;
|
m_ogl_disp_list_through_holes_outer;
|
||||||
|
|
||||||
if( dispListThoughHolesOuter )
|
if( dispListThroughHolesOuter )
|
||||||
dispListThoughHolesOuter->ApplyScalePosition( pLayerDispList->GetZBot(),
|
dispListThroughHolesOuter->ApplyScalePosition( pLayerDispList->GetZBot(),
|
||||||
pLayerDispList->GetZTop() - pLayerDispList->GetZBot() );
|
pLayerDispList->GetZTop() - pLayerDispList->GetZBot() );
|
||||||
|
|
||||||
if( (!skipRenderHoles) &&
|
if( (!skipRenderHoles) &&
|
||||||
|
@ -856,23 +856,23 @@ bool C3D_RENDER_OGL_LEGACY::Redraw(
|
||||||
const CLAYERS_OGL_DISP_LISTS *pLayerDispListMask = m_ogl_disp_lists_layers.at( layerMask_id );
|
const CLAYERS_OGL_DISP_LISTS *pLayerDispListMask = m_ogl_disp_lists_layers.at( layerMask_id );
|
||||||
|
|
||||||
pLayerDispList->DrawAllCameraCulledSubtractLayer(
|
pLayerDispList->DrawAllCameraCulledSubtractLayer(
|
||||||
pLayerDispListMask,
|
pLayerDispListMask,
|
||||||
dispListThoughHolesOuter,
|
dispListThroughHolesOuter,
|
||||||
drawMiddleSegments );
|
drawMiddleSegments );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( (!skipRenderHoles) &&
|
if((!skipRenderHoles) &&
|
||||||
dispListThoughHolesOuter &&
|
dispListThroughHolesOuter &&
|
||||||
( ( layer_id == B_SilkS ) || ( layer_id == F_SilkS )
|
( ( layer_id == B_SilkS ) || ( layer_id == F_SilkS )
|
||||||
// Remove vias on SolderPaste can be added as an option in future
|
// Remove vias on SolderPaste can be added as an option in future
|
||||||
// ( layer_id == B_Paste ) || ( layer_id == F_Paste ) )
|
// ( layer_id == B_Paste ) || ( layer_id == F_Paste ) )
|
||||||
) )
|
) )
|
||||||
{
|
{
|
||||||
pLayerDispList->DrawAllCameraCulledSubtractLayer(
|
pLayerDispList->DrawAllCameraCulledSubtractLayer(
|
||||||
NULL,
|
NULL,
|
||||||
dispListThoughHolesOuter,
|
dispListThroughHolesOuter,
|
||||||
drawMiddleSegments );
|
drawMiddleSegments );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1147,8 +1147,8 @@ void C3D_RENDER_OGL_LEGACY::ogl_free_all_display_lists()
|
||||||
delete m_ogl_disp_list_through_holes_vias_outer;
|
delete m_ogl_disp_list_through_holes_vias_outer;
|
||||||
m_ogl_disp_list_through_holes_vias_outer = 0;
|
m_ogl_disp_list_through_holes_vias_outer = 0;
|
||||||
|
|
||||||
delete m_ogl_disp_list_through_holes_vias_outer_ring;
|
delete m_ogl_disp_list_through_holes_outer_ring;
|
||||||
m_ogl_disp_list_through_holes_vias_outer_ring = 0;
|
m_ogl_disp_list_through_holes_outer_ring = 0;
|
||||||
|
|
||||||
delete m_ogl_disp_list_via;
|
delete m_ogl_disp_list_via;
|
||||||
m_ogl_disp_list_via = 0;
|
m_ogl_disp_list_via = 0;
|
||||||
|
|
|
@ -90,7 +90,7 @@ private:
|
||||||
CLAYERS_OGL_DISP_LISTS* m_ogl_disp_list_through_holes_outer_with_npth;
|
CLAYERS_OGL_DISP_LISTS* m_ogl_disp_list_through_holes_outer_with_npth;
|
||||||
|
|
||||||
CLAYERS_OGL_DISP_LISTS* m_ogl_disp_list_through_holes_vias_outer;
|
CLAYERS_OGL_DISP_LISTS* m_ogl_disp_list_through_holes_vias_outer;
|
||||||
CLAYERS_OGL_DISP_LISTS* m_ogl_disp_list_through_holes_vias_outer_ring;
|
CLAYERS_OGL_DISP_LISTS* m_ogl_disp_list_through_holes_outer_ring;
|
||||||
//CLAYERS_OGL_DISP_LISTS* m_ogl_disp_list_through_holes_vias_inner; // Not in use
|
//CLAYERS_OGL_DISP_LISTS* m_ogl_disp_list_through_holes_vias_inner; // Not in use
|
||||||
|
|
||||||
// This is for pads holes of the modules
|
// This is for pads holes of the modules
|
||||||
|
|
|
@ -1059,7 +1059,7 @@ void C3D_RENDER_RAYTRACING::insert3DViaHole( const VIA* aVia )
|
||||||
|
|
||||||
CRING2D *ring = new CRING2D( center,
|
CRING2D *ring = new CRING2D( center,
|
||||||
radiusBUI * m_boardAdapter.BiuTo3Dunits(),
|
radiusBUI * m_boardAdapter.BiuTo3Dunits(),
|
||||||
( radiusBUI + m_boardAdapter.GetCopperThicknessBIU() ) *
|
( radiusBUI + m_boardAdapter.GetHolePlatingThicknessBIU() ) *
|
||||||
m_boardAdapter.BiuTo3Dunits(),
|
m_boardAdapter.BiuTo3Dunits(),
|
||||||
*aVia );
|
*aVia );
|
||||||
|
|
||||||
|
@ -1110,11 +1110,11 @@ void C3D_RENDER_RAYTRACING::insert3DPadHole( const D_PAD* aPad )
|
||||||
SFVEC2F center = SFVEC2F( aPad->GetPosition().x * m_boardAdapter.BiuTo3Dunits(),
|
SFVEC2F center = SFVEC2F( aPad->GetPosition().x * m_boardAdapter.BiuTo3Dunits(),
|
||||||
-aPad->GetPosition().y * m_boardAdapter.BiuTo3Dunits() );
|
-aPad->GetPosition().y * m_boardAdapter.BiuTo3Dunits() );
|
||||||
|
|
||||||
|
int innerRadius = drillsize.x / 2;
|
||||||
|
int outerRadius = innerRadius + m_boardAdapter.GetHolePlatingThicknessBIU();
|
||||||
CRING2D *ring = new CRING2D( center,
|
CRING2D *ring = new CRING2D( center,
|
||||||
( drillsize.x / 2 ) * m_boardAdapter.BiuTo3Dunits(),
|
innerRadius * m_boardAdapter.BiuTo3Dunits(),
|
||||||
(( drillsize.x / 2 ) +
|
outerRadius * m_boardAdapter.BiuTo3Dunits(),
|
||||||
m_boardAdapter.GetCopperThicknessBIU() ) *
|
|
||||||
m_boardAdapter.BiuTo3Dunits(),
|
|
||||||
*aPad );
|
*aPad );
|
||||||
|
|
||||||
m_containerWithObjectsToDelete.Add( ring );
|
m_containerWithObjectsToDelete.Add( ring );
|
||||||
|
@ -1155,8 +1155,7 @@ void C3D_RENDER_RAYTRACING::insert3DPadHole( const D_PAD* aPad )
|
||||||
-start.y * m_boardAdapter.BiuTo3Dunits() ),
|
-start.y * m_boardAdapter.BiuTo3Dunits() ),
|
||||||
SFVEC2F( end.x * m_boardAdapter.BiuTo3Dunits(),
|
SFVEC2F( end.x * m_boardAdapter.BiuTo3Dunits(),
|
||||||
-end.y * m_boardAdapter.BiuTo3Dunits() ),
|
-end.y * m_boardAdapter.BiuTo3Dunits() ),
|
||||||
( width + m_boardAdapter.GetCopperThicknessBIU() * 2 ) *
|
( width + m_boardAdapter.GetHolePlatingThicknessBIU() * 2 ) * m_boardAdapter.BiuTo3Dunits(),
|
||||||
m_boardAdapter.BiuTo3Dunits(),
|
|
||||||
*aPad );
|
*aPad );
|
||||||
|
|
||||||
// NOTE: the round segment width is the "diameter", so we double the thickness
|
// NOTE: the round segment width is the "diameter", so we double the thickness
|
||||||
|
|
Loading…
Reference in New Issue