Diff pair router should be able to start in the middle of existing track segments
Description
The diff pair placer, unlike the single track placer, is unable to split an existing segment to start a route in the middle of it. A feature to do this where possible should be added.
We should identify the coupled segment for the selected starting segment, and if so, slice it at a point normal to the starting segment to use as the start point. If the coupled segment is shorter and doesn't exist at the normal point, we should backtrack and start at the end of the coupled segment. If a coupled segment does not exist, we should backtrack from the start item to the nearest item on the line that does have a coupled segment, and start it at the end of that pair.
KiCad Version
Application: KiCad PCB Editor arm64 on arm64
Version: 7.99.0-3842-g0c1fba8686, debug build
Libraries:
wxWidgets 3.2.4
FreeType 2.13.2
HarfBuzz 8.3.0
FontConfig 2.14.2
Platform: macOS Sonoma Version 14.1.2 (Build 23B92), 64 bit, Little endian, wxMac
wxWidgets: 3.2.4 (wchar_t,wx containers)
Boost: 1.82.0
OCC: 7.7.2
Curl: 8.1.2
ngspice: 37
Compiler: Clang 15.0.0 with C++ ABI 1002
Build settings:
KICAD_STDLIB_DEBUG=OFF
KICAD_STDLIB_LIGHT_DEBUG=OFF
KICAD_SANITIZE_ADDRESS=OFF
KICAD_SANITIZE_THREADS=OFF
Edited by Jon Evans