mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-15 02:33:15 +02:00
OCCT 3D model export: support different line styles for graphics.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18873
This commit is contained in:
parent
16b4ee92bb
commit
ad12fbd2f9
@ -33,6 +33,7 @@
|
|||||||
#include <pcb_tablecell.h>
|
#include <pcb_tablecell.h>
|
||||||
#include <pcb_track.h>
|
#include <pcb_track.h>
|
||||||
#include <pcb_shape.h>
|
#include <pcb_shape.h>
|
||||||
|
#include <pcb_painter.h>
|
||||||
#include <pad.h>
|
#include <pad.h>
|
||||||
#include <zone.h>
|
#include <zone.h>
|
||||||
#include <fp_lib_table.h>
|
#include <fp_lib_table.h>
|
||||||
@ -530,8 +531,39 @@ bool EXPORTER_STEP::buildGraphic3DShape( BOARD_ITEM* aItem, VECTOR2D aOrigin )
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
graphic->TransformShapeToPolySet( m_poly_shapes[pcblayer], pcblayer, 0, maxError,
|
LINE_STYLE lineStyle = graphic->GetLineStyle();
|
||||||
ERROR_INSIDE );
|
|
||||||
|
if( lineStyle == LINE_STYLE::SOLID )
|
||||||
|
{
|
||||||
|
graphic->TransformShapeToPolySet( m_poly_shapes[pcblayer], pcblayer, 0, maxError,
|
||||||
|
ERROR_INSIDE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::vector<SHAPE*> shapes = graphic->MakeEffectiveShapes( true );
|
||||||
|
const PCB_PLOT_PARAMS& plotParams = m_board->GetPlotOptions();
|
||||||
|
KIGFX::PCB_RENDER_SETTINGS renderSettings;
|
||||||
|
|
||||||
|
renderSettings.SetDashLengthRatio( plotParams.GetDashedLineDashRatio() );
|
||||||
|
renderSettings.SetGapLengthRatio( plotParams.GetDashedLineGapRatio() );
|
||||||
|
|
||||||
|
for( SHAPE* shape : shapes )
|
||||||
|
{
|
||||||
|
STROKE_PARAMS::Stroke( shape, lineStyle, graphic->GetWidth(), &renderSettings,
|
||||||
|
[&]( const VECTOR2I& a, const VECTOR2I& b )
|
||||||
|
{
|
||||||
|
SHAPE_SEGMENT seg( a, b, graphic->GetWidth() );
|
||||||
|
seg.TransformToPolygon( m_poly_shapes[pcblayer],
|
||||||
|
maxError, ERROR_INSIDE );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
for( SHAPE* shape : shapes )
|
||||||
|
delete shape;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( graphic->IsHatchedFill() )
|
||||||
|
m_poly_shapes[pcblayer].Append( graphic->GetHatching() );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user