Add automatic breadboard component placement and routing - #4323
Add automatic breadboard component placement and routing#4323justin-romano wants to merge 4 commits into
Conversation
Add deterministic, topology-aware component placement with spatial indexing, multi-board support, route graph optimization, progress reporting, and automated routing tests. Update the README to mention automatic breadboard placement and routing.
|
cc @KjellMorgenstern - I would value your guidance on whether this is the right direction for Breadboard view integration, especially given the scope of the placement/routing changes. |
|
You might want to discuss or at least analyze and explain the use case. Disclaimer: We already have quite a number of exiting improvements and features of similar complexity, that we will hopfully manage to land in one of the next Fritzing releases. |
|
Fixing coding issues now. |
PR 4323 analysis flagged 115 issues; this clears the mechanical rules: - S1121: no assignments inside expressions (split chained assignments, incl. pre-existing MainWindow initializer chains our diff touched) - S6004: C++17 if-init declarations where a variable only feeds the if - S995/S5350: pointer-to-const parameters and locals - S5945: std::array instead of C-style arrays - S6012: CTAD (QList, not QVector - alias templates lack CTAD in C++17) - S3358: unnested conditional operator (bendable swap mode) - S924: single break in the legacy bus Dijkstra loop - S886: std::iota for union-find parent initialisation No behaviour change intended; Boost suites green (5 + 12 cases). Remaining Sonar work tracked separately: structural rules (S134, S3776, S1820, S1448) and the C++20/Qt-idiom dismissals (S6197, S6177, S6187, S5025). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Thanks Guys,
I guess I should have shown you some screenshots.
[image: image.png]
[image: image.png]
[image: image.png]
Crazy bulshit schematic for stress testing.
[image: image.png]
[image: image.png]
Only places objects that are breadboard compatible.
[image: image.png]
And not ratnests after routing.
20 second render Everything shows in progress bar.
Undo works also.
Uses multi threads to do the placements and the roughting in parallel.
[image: image.png]
I have always wanted this feature for testing my own home projects. But it
just so happens my skills as a Senior Dev + subscription to Claude Fable
did most of the heavy lifting here, and heavily steered due to the maths
complexity of the code.
Don't you think this is an excellent donation grabber if it works well? I
know its one of the first features mentioned in the README. Now it
auto-routes!
…On Thu, Jul 16, 2026 at 8:57 PM Kjell ***@***.***> wrote:
*KjellMorgenstern* left a comment (fritzing/fritzing-app#4323)
<#4323 (comment)>
You might want to discuss or at least analyze and explain the use case.
Is this an experiment you found interesting? Or does it solve a problem
you frequently encounter? Can you reference requests similar to this from
other users, open issues or existing discussions in the forum?
Disclaimer: We already have quite a number of exiting improvements and
features of similar complexity, that we will hopfully manage to land in one
of the next Fritzing releases.
—
Reply to this email directly, view it on GitHub
<#4323?email_source=notifications&email_token=AANAZWV2P3VY6VE4VRMGLGL5FCKF3A5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJYHE4TSOBXGMZKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#issuecomment-4989998732>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AANAZWV4ETN2W4M5ID46AFT5FCKF3AVCNFSNUABEKJSXA33TNF2G64TZHMZDGMZSGI3DMMZ3JFZXG5LFHM2DQOJZGMZTIMJZHGQXMAQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
--
Justin Romaine
Senior Architect
Titanium Solutions Ltd.
***@***.***
+64 21 764 506
hm 09 445 9166
|
|
The email only came through half. Again, could you describe the use case? |
|
Good catch. Just what I need to clear these issues. |
The intended use case is:
The goal is to remove the most laborious part of translating a schematic into a physical breadboard prototype, while also reducing wiring complexity and the potential for assembly errors. |
|
Please strictly isolate the AI from posting here. I'll have to keep my responses to a minimum. The OP should be the human in the loop, not me. |
|
Sorry. Did Claude do that? I do not recall posting those obviously automated agent comments. |
|
Did you agree with the uses case? I'm knew this feature was missing years ago, and was going to do something about it but had no time. These days I'm a bit faster at writing 3000 lines of C++. Not vibed. Very steered. |
|
@KjellMorgenstern. I have those fixes in my clone. Ran out of time. Will push next weekend. |




Summary
Adds automatic component placement and jumper-wire routing to Fritzing's Breadboard view.
The autorouter:
Implementation
BreadboardTopologymodels holes and electrically connected buses.BreadboardPartPolicyclassifies placeable, peripheral, and ignored parts.BreadboardPlacementKerneluses spatial indexing to reduce placement-search cost.BreadboardRouteGraphCoreprovides deterministic graph routing independent of the GUI.Validation
Optimization priorities
Limitations
Placement and routing use deterministic heuristics and do not guarantee a globally optimal result. Parts with incomplete or unusual breadboard connector geometry may remain unplaced.