Fixes for rectangle segments in STEP plugin.
This commit is contained in:
parent
96f4e8f6f8
commit
3b9c47a1be
|
@ -226,6 +226,8 @@ bool KICADPCB::parsePCB( SEXPR::SEXPR* data )
|
||||||
result = result && parseCurve( child, CURVE_ARC );
|
result = result && parseCurve( child, CURVE_ARC );
|
||||||
else if( symname == "gr_line" )
|
else if( symname == "gr_line" )
|
||||||
result = result && parseCurve( child, CURVE_LINE );
|
result = result && parseCurve( child, CURVE_LINE );
|
||||||
|
else if( symname == "gr_rect" )
|
||||||
|
result = result && parseRect( child );
|
||||||
else if( symname == "gr_circle" )
|
else if( symname == "gr_circle" )
|
||||||
result = result && parseCurve( child, CURVE_CIRCLE );
|
result = result && parseCurve( child, CURVE_CIRCLE );
|
||||||
}
|
}
|
||||||
|
@ -377,6 +379,45 @@ bool KICADPCB::parseModule( SEXPR::SEXPR* data )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool KICADPCB::parseRect( SEXPR::SEXPR* data )
|
||||||
|
{
|
||||||
|
KICADCURVE* mp = new KICADCURVE();
|
||||||
|
|
||||||
|
if( !mp->Read( data, CURVE_LINE ) )
|
||||||
|
{
|
||||||
|
delete mp;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// reject any curves not on the Edge.Cuts layer
|
||||||
|
if( mp->GetLayer() != LAYER_EDGE )
|
||||||
|
{
|
||||||
|
delete mp;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
KICADCURVE* top( mp );
|
||||||
|
KICADCURVE* right( mp );
|
||||||
|
KICADCURVE* bottom( mp );
|
||||||
|
KICADCURVE* left( mp );
|
||||||
|
delete mp;
|
||||||
|
|
||||||
|
top->m_end.y = top->m_start.y;
|
||||||
|
m_curves.push_back( top );
|
||||||
|
|
||||||
|
right->m_start.x = right->m_end.x;
|
||||||
|
m_curves.push_back( right );
|
||||||
|
|
||||||
|
bottom->m_start.y = bottom->m_end.y;
|
||||||
|
m_curves.push_back( bottom );
|
||||||
|
|
||||||
|
left->m_end.x = left->m_start.x;
|
||||||
|
m_curves.push_back( left );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool KICADPCB::parseCurve( SEXPR::SEXPR* data, CURVE_TYPE aCurveType )
|
bool KICADPCB::parseCurve( SEXPR::SEXPR* data, CURVE_TYPE aCurveType )
|
||||||
{
|
{
|
||||||
KICADCURVE* mp = new KICADCURVE();
|
KICADCURVE* mp = new KICADCURVE();
|
||||||
|
|
|
@ -80,6 +80,7 @@ private:
|
||||||
bool parseLayers( SEXPR::SEXPR* data );
|
bool parseLayers( SEXPR::SEXPR* data );
|
||||||
bool parseModule( SEXPR::SEXPR* data );
|
bool parseModule( SEXPR::SEXPR* data );
|
||||||
bool parseCurve( SEXPR::SEXPR* data, CURVE_TYPE aCurveType );
|
bool parseCurve( SEXPR::SEXPR* data, CURVE_TYPE aCurveType );
|
||||||
|
bool parseRect( SEXPR::SEXPR* data );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
KICADPCB();
|
KICADPCB();
|
||||||
|
|
Loading…
Reference in New Issue