Splitting DRAWSEGMENTs with POINT_EDITOR.
This commit is contained in:
parent
17ec7ace4c
commit
9783aaf3e6
|
@ -38,6 +38,7 @@
|
||||||
#include <class_drawsegment.h>
|
#include <class_drawsegment.h>
|
||||||
#include <class_dimension.h>
|
#include <class_dimension.h>
|
||||||
#include <class_zone.h>
|
#include <class_zone.h>
|
||||||
|
#include <class_board.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class POINT_EDITOR
|
* Class POINT_EDITOR
|
||||||
|
@ -653,4 +654,30 @@ void POINT_EDITOR::breakOutline( const VECTOR2I& aBreakPoint )
|
||||||
|
|
||||||
outline->InsertCorner( nearestIdx, nearestPoint.x, nearestPoint.y );
|
outline->InsertCorner( nearestIdx, nearestPoint.x, nearestPoint.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if( item->Type() == PCB_LINE_T )
|
||||||
|
{
|
||||||
|
getEditFrame<PCB_EDIT_FRAME>()->OnModify();
|
||||||
|
getEditFrame<PCB_EDIT_FRAME>()->SaveCopyInUndoList( selection.items, UR_CHANGED );
|
||||||
|
|
||||||
|
DRAWSEGMENT* segment = static_cast<DRAWSEGMENT*>( item );
|
||||||
|
|
||||||
|
if( segment->GetShape() == S_SEGMENT )
|
||||||
|
{
|
||||||
|
SEG seg( segment->GetStart(), segment->GetEnd() );
|
||||||
|
VECTOR2I nearestPoint = seg.NearestPoint( aBreakPoint );
|
||||||
|
|
||||||
|
// Move the end of the line to the break point..
|
||||||
|
segment->SetEnd( wxPoint( nearestPoint.x, nearestPoint.y ) );
|
||||||
|
|
||||||
|
// and add another one starting from the break point
|
||||||
|
DRAWSEGMENT* newSegment = new DRAWSEGMENT( *segment );
|
||||||
|
newSegment->ClearSelected();
|
||||||
|
newSegment->SetStart( wxPoint( nearestPoint.x, nearestPoint.y ) );
|
||||||
|
newSegment->SetEnd( wxPoint( seg.B.x, seg.B.y ) );
|
||||||
|
|
||||||
|
getModel<BOARD>( PCB_T )->Add( newSegment );
|
||||||
|
getView()->Add( newSegment );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue