Eeschema: Adding dashed line support to DXF plot
NEW: Dashed, dotted and dash-dot line support to DXF plot in eeschema.
This commit is contained in:
parent
7c0a7f9f7b
commit
13ef1a911f
|
@ -94,6 +94,19 @@ static const struct
|
||||||
{ "YELLOW4", 2 }
|
{ "YELLOW4", 2 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Line types in the boilerplate DXF header. The
|
||||||
|
* element indices correspond to the eeschema line
|
||||||
|
* types.
|
||||||
|
*/
|
||||||
|
static const char *dxf_lines[] =
|
||||||
|
{
|
||||||
|
[ PLOTDASHTYPE_SOLID ] = "CONTINUOUS",
|
||||||
|
[ PLOTDASHTYPE_DASH ] = "DASHED",
|
||||||
|
[ PLOTDASHTYPE_DOT ] = "DOTTED",
|
||||||
|
[ PLOTDASHTYPE_DASHDOT ] = "DASHDOT"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// A helper function to create a color name acceptable in DXF files
|
// A helper function to create a color name acceptable in DXF files
|
||||||
// DXF files do not use a RGB definition
|
// DXF files do not use a RGB definition
|
||||||
|
@ -144,7 +157,7 @@ bool DXF_PLOTTER::StartPlot()
|
||||||
|
|
||||||
// DXF HEADER - Boilerplate
|
// DXF HEADER - Boilerplate
|
||||||
// Defines the minimum for drawing i.e. the angle system and the
|
// Defines the minimum for drawing i.e. the angle system and the
|
||||||
// continuous linetype
|
// 4 linetypes (CONTINUOUS, DOTDASH, DASHED and DOTTED)
|
||||||
fputs( " 0\n"
|
fputs( " 0\n"
|
||||||
"SECTION\n"
|
"SECTION\n"
|
||||||
" 2\n"
|
" 2\n"
|
||||||
|
@ -172,9 +185,11 @@ bool DXF_PLOTTER::StartPlot()
|
||||||
" 2\n"
|
" 2\n"
|
||||||
"LTYPE\n"
|
"LTYPE\n"
|
||||||
" 70\n"
|
" 70\n"
|
||||||
"1\n"
|
"4\n"
|
||||||
" 0\n"
|
" 0\n"
|
||||||
"LTYPE\n"
|
"LTYPE\n"
|
||||||
|
" 5\n"
|
||||||
|
"40F\n"
|
||||||
" 2\n"
|
" 2\n"
|
||||||
"CONTINUOUS\n"
|
"CONTINUOUS\n"
|
||||||
" 70\n"
|
" 70\n"
|
||||||
|
@ -188,6 +203,70 @@ bool DXF_PLOTTER::StartPlot()
|
||||||
" 40\n"
|
" 40\n"
|
||||||
"0.0\n"
|
"0.0\n"
|
||||||
" 0\n"
|
" 0\n"
|
||||||
|
"LTYPE\n"
|
||||||
|
" 5\n"
|
||||||
|
"410\n"
|
||||||
|
" 2\n"
|
||||||
|
"DASHDOT\n"
|
||||||
|
" 70\n"
|
||||||
|
"0\n"
|
||||||
|
" 3\n"
|
||||||
|
"Dash Dot ____ _ ____ _\n"
|
||||||
|
" 72\n"
|
||||||
|
"65\n"
|
||||||
|
" 73\n"
|
||||||
|
"4\n"
|
||||||
|
" 40\n"
|
||||||
|
"2.0\n"
|
||||||
|
" 49\n"
|
||||||
|
"1.25\n"
|
||||||
|
" 49\n"
|
||||||
|
"-0.25\n"
|
||||||
|
" 49\n"
|
||||||
|
"0.25\n"
|
||||||
|
" 49\n"
|
||||||
|
"-0.25\n"
|
||||||
|
" 0\n"
|
||||||
|
"LTYPE\n"
|
||||||
|
" 5\n"
|
||||||
|
"411\n"
|
||||||
|
" 2\n"
|
||||||
|
"DASHED\n"
|
||||||
|
" 70\n"
|
||||||
|
"0\n"
|
||||||
|
" 3\n"
|
||||||
|
"Dashed __ __ __ __ __\n"
|
||||||
|
" 72\n"
|
||||||
|
"65\n"
|
||||||
|
" 73\n"
|
||||||
|
"2\n"
|
||||||
|
" 40\n"
|
||||||
|
"0.75\n"
|
||||||
|
" 49\n"
|
||||||
|
"0.5\n"
|
||||||
|
" 49\n"
|
||||||
|
"-0.25\n"
|
||||||
|
" 0\n"
|
||||||
|
"LTYPE\n"
|
||||||
|
" 5\n"
|
||||||
|
"43B\n"
|
||||||
|
" 2\n"
|
||||||
|
"DOTTED\n"
|
||||||
|
" 70\n"
|
||||||
|
"0\n"
|
||||||
|
" 3\n"
|
||||||
|
"Dotted . . . .\n"
|
||||||
|
" 72\n"
|
||||||
|
"65\n"
|
||||||
|
" 73\n"
|
||||||
|
"2\n"
|
||||||
|
" 40\n"
|
||||||
|
"0.2\n"
|
||||||
|
" 49\n"
|
||||||
|
"0.0\n"
|
||||||
|
" 49\n"
|
||||||
|
"-0.2\n"
|
||||||
|
" 0\n"
|
||||||
"ENDTAB\n",
|
"ENDTAB\n",
|
||||||
outputFile );
|
outputFile );
|
||||||
|
|
||||||
|
@ -483,22 +562,22 @@ void DXF_PLOTTER::PenTo( const wxPoint& pos, char plume )
|
||||||
|
|
||||||
if( penLastpos != pos && plume == 'D' )
|
if( penLastpos != pos && plume == 'D' )
|
||||||
{
|
{
|
||||||
|
wxASSERT( m_currentLineType >= 0 && m_currentLineType < 4 );
|
||||||
// DXF LINE
|
// DXF LINE
|
||||||
wxString cname = getDXFColorName( m_currentColor );
|
wxString cname = getDXFColorName( m_currentColor );
|
||||||
fprintf( outputFile, "0\nLINE\n8\n%s\n10\n%g\n20\n%g\n11\n%g\n21\n%g\n",
|
const char *lname = dxf_lines[ m_currentLineType ];
|
||||||
TO_UTF8( cname ),
|
fprintf( outputFile, "0\nLINE\n8\n%s\n6\n%s\n10\n%g\n20\n%g\n11\n%g\n21\n%g\n",
|
||||||
|
TO_UTF8( cname ), lname,
|
||||||
pen_lastpos_dev.x, pen_lastpos_dev.y, pos_dev.x, pos_dev.y );
|
pen_lastpos_dev.x, pen_lastpos_dev.y, pos_dev.x, pos_dev.y );
|
||||||
}
|
}
|
||||||
penLastpos = pos;
|
penLastpos = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dashed lines are not (yet) supported by DXF_PLOTTER
|
|
||||||
*/
|
|
||||||
void DXF_PLOTTER::SetDash( int dashed )
|
void DXF_PLOTTER::SetDash( int dashed )
|
||||||
{
|
{
|
||||||
// NOP for now
|
wxASSERT( dashed >= 0 && dashed < 4 );
|
||||||
|
m_currentLineType = dashed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1224,6 +1224,7 @@ public:
|
||||||
{
|
{
|
||||||
textAsLines = true;
|
textAsLines = true;
|
||||||
m_currentColor = COLOR4D::BLACK;
|
m_currentColor = COLOR4D::BLACK;
|
||||||
|
m_currentLineType = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual PlotFormat GetPlotterType() const override
|
virtual PlotFormat GetPlotterType() const override
|
||||||
|
@ -1309,6 +1310,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
bool textAsLines;
|
bool textAsLines;
|
||||||
COLOR4D m_currentColor;
|
COLOR4D m_currentColor;
|
||||||
|
int m_currentLineType;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TITLE_BLOCK;
|
class TITLE_BLOCK;
|
||||||
|
|
Loading…
Reference in New Issue