altium: Unify arc parsing
This commit is contained in:
parent
0b176eb5fc
commit
fe861459a7
|
@ -2127,17 +2127,18 @@ void ALTIUM_PCB::ConvertArcs6ToBoardItemOnLayer( const AARC6& aElem, PCB_LAYER_I
|
||||||
EDA_ANGLE angle( aElem.startangle - aElem.endangle, DEGREES_T );
|
EDA_ANGLE angle( aElem.startangle - aElem.endangle, DEGREES_T );
|
||||||
angle.Normalize();
|
angle.Normalize();
|
||||||
|
|
||||||
double startradiant = DEG2RAD( aElem.startangle );
|
EDA_ANGLE startAngle( aElem.endangle, DEGREES_T );
|
||||||
VECTOR2I arcStartOffset = VECTOR2I( KiROUND( std::cos( startradiant ) * aElem.radius ),
|
VECTOR2I startOffset =
|
||||||
-KiROUND( std::sin( startradiant ) * aElem.radius ) );
|
VECTOR2I( KiROUND( std::cos( startAngle.AsRadians() ) * aElem.radius ),
|
||||||
|
-KiROUND( std::sin( startAngle.AsRadians() ) * aElem.radius ) );
|
||||||
|
|
||||||
arcStartOffset += aElem.center;
|
startOffset += aElem.center;
|
||||||
|
|
||||||
// If it's a circle then add two 180-degree arcs
|
// If it's a circle then add two 180-degree arcs
|
||||||
if( aElem.startangle == 0.0 && aElem.endangle == 360.0 )
|
if( aElem.startangle == 0.0 && aElem.endangle == 360.0 )
|
||||||
angle = ANGLE_180;
|
angle = ANGLE_180;
|
||||||
|
|
||||||
SHAPE_ARC shapeArc( aElem.center, arcStartOffset, angle, aElem.width );
|
SHAPE_ARC shapeArc( aElem.center, startOffset, angle, aElem.width );
|
||||||
PCB_ARC* arc = new PCB_ARC( m_board, &shapeArc );
|
PCB_ARC* arc = new PCB_ARC( m_board, &shapeArc );
|
||||||
m_board->Add( arc, ADD_MODE::APPEND );
|
m_board->Add( arc, ADD_MODE::APPEND );
|
||||||
|
|
||||||
|
@ -2149,7 +2150,7 @@ void ALTIUM_PCB::ConvertArcs6ToBoardItemOnLayer( const AARC6& aElem, PCB_LAYER_I
|
||||||
// TODO: can we remove this workaround?
|
// TODO: can we remove this workaround?
|
||||||
if( aElem.startangle == 0. && aElem.endangle == 360. )
|
if( aElem.startangle == 0. && aElem.endangle == 360. )
|
||||||
{
|
{
|
||||||
shapeArc = SHAPE_ARC( aElem.center, arcStartOffset, -angle, aElem.width );
|
shapeArc = SHAPE_ARC( aElem.center, startOffset, -angle, aElem.width );
|
||||||
arc = new PCB_ARC( m_board, &shapeArc );
|
arc = new PCB_ARC( m_board, &shapeArc );
|
||||||
m_board->Add( arc, ADD_MODE::APPEND );
|
m_board->Add( arc, ADD_MODE::APPEND );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue