Commit Graph

141 Commits

Author SHA1 Message Date
Mikolaj Wielgus b7fd6a0cab feat(autorouter/autorouter): Impl. rudimentary multilayer reconfigurator (not yet functional) 2025-10-21 18:00:55 +02:00
Mikolaj Wielgus 1b3ecc37b1 refactor(specctra-core): Remove `layer_count` from `SpecctraMesadata`
This information is already stored in `Drawing`, I somehow missed that
when I was adding this field.
2025-10-20 14:24:41 +02:00
Mikolaj Wielgus 8f59319902 feat(autorouter/autorouter): Have separate ratsnest for each (principal) layer 2025-10-15 15:15:02 +02:00
Mikolaj Wielgus 2895277e73 fix: Fix build and test errors due to botched last commit 2025-10-14 02:21:48 +02:00
Mikolaj Wielgus cd73c766a5 refactor(topola-egui): Move storing principal layer to planar autoroute options
I've done some struct renaming while at it.
2025-10-13 21:38:47 +02:00
Mikolaj Wielgus 4c1a72dc1d refactor(autorouter/autorouter): Put ratsnest in wrapper, mostly transparent for now 2025-10-13 00:32:53 +02:00
Mikolaj Wielgus 43f8d69281 fix(topola-egui): Don't filter out translayer ratlines 2025-10-08 23:00:04 +02:00
Mikolaj Wielgus 8235c66c7e fix(autorouter/anterouter): Correctly calculate fanout lengths 2025-10-08 02:18:56 +02:00
Mikolaj Wielgus a3521e7286 feat(autorouter/anterouter): Add option to set fanout clearance 2025-10-07 22:37:50 +02:00
Mikolaj Wielgus 9a5b2095d5 feat(autorouter/autorouter): Implement germ of multilayer autorouting 2025-09-27 15:45:10 +02:00
Mikolaj Wielgus 0e12f32db4 chore: Correct copyright lines (MIT, not MIT OR Apache-2.0) 2025-09-26 00:56:08 +02:00
Mikolaj Wielgus d74a06b2ea feat(topola-egui): Hide ratlines that were already routed 2025-09-22 15:03:14 +02:00
Mikolaj Wielgus 00aa79ff31 feat(drawing/query): Don't infringe or collide primitives on different layers 2025-09-22 01:27:08 +02:00
Mikolaj Wielgus 3078d9d546 feat(topola-egui): Highlight node index of the obstacling primitive 2025-09-21 14:40:26 +02:00
Mikolaj Wielgus d75c73b540 feat(topola-egui): Add option to display primitive indices on debug overlay 2025-09-21 13:09:48 +02:00
Mikolaj Wielgus 7c4bc87301 refactor(drawing/primitive): Rename Primitive<...> to PrimitiveRef<...> with its variants 2025-09-15 22:42:45 +02:00
Mikolaj Wielgus aee8c42720 feat(autorouter/presorter): Take into account ratline-pad intersections 2025-09-11 23:25:03 +02:00
Mikolaj Wielgus 1b485e81a6 feat(autorouter/permuter): Implement permutation by ratline cut
Not yet used, and can get stuck in an infinite loop, but the cut seems
to work.
2025-09-09 16:24:15 +02:00
Mikolaj Wielgus 4a057d3499 fix(math/mod): Move code pertaining to circles to new file, circle.rs 2025-08-29 13:36:48 +02:00
Mikolaj Wielgus fca8e44269 feat(router/router): Backtrack if initial parent was on the same compound 2025-08-24 00:12:38 +02:00
Mikolaj Wielgus 3738bacf6f fix(math/bitangents): Calculate bitangents even for intersecting circles
This fixes the bug where the router was failing to draw around SMD pads.
2025-08-19 15:46:12 +02:00
Mikolaj Wielgus 5fd4926fb6 feat(topola-egui): Display guide-bitangents on debug overlay 2025-08-16 01:17:29 +02:00
Mikolaj Wielgus 177c8abb18 refactor(drawing/guide): Instead of trait, just impl guide methods on `Drawing` 2025-08-15 23:31:23 +02:00
Mikolaj Wielgus 9819879617 feat(topola-egui): Display guide-circles on debug overlay 2025-08-15 16:18:31 +02:00
Mikolaj Wielgus 987a4c6e9e fix: Flip by X instead of rotating by 180 degrees
Obviously -- flip is undone by a flip, not a rotation. This corrects the
previous commit.
2025-08-11 21:15:40 +02:00
Mikolaj Wielgus b7a5d2ccb8 fix(specctra-core): Rotate components placed on back by 180 degrees 2025-08-11 20:21:45 +02:00
Mikolaj Wielgus 09c98f2d17 feat(autorouter/autoroute): Add option to toggle permutation
Updated with the following command in Fish shell:

```
for f in tests/**.cmd; jq ".done?.[].Autoroute[1].permutate |= false" $f | sponge $f; end
```
2025-07-19 21:42:47 +02:00
Mikolaj Wielgus d7129354a1 feat(autorouter/autoroute): Record band assigns so undo actually works
Aborting the autoroute stepper was unimplemented and it would make the
autorouting job finish instead. This is fixed now.
2025-07-17 21:08:42 +02:00
Ellen Emilia Anna Zscheile 4fea23c9ac chore: Fix warnings about lifetime annotations 2025-07-17 12:33:31 +02:00
Mikolaj Wielgus ab4ba4e0b8 refactor(topola-egui): Split out some display code to new file, displayer.rs 2025-07-15 15:40:45 +02:00
Mikolaj Wielgus 800db3d4c0 refactor(topola-egui): Split some parts of `Viewport` code to methods 2025-07-15 02:13:56 +02:00
Mikolaj Wielgus 43005eb864 feat(autorouter/autorouter): Add presorting by ratline intersection count and length
Sadly, this does not work well for the DE-9 to DE-9 test, but it is a
step forward.
2025-07-14 13:26:38 +02:00
Mikolaj Wielgus 68d9844d0d feat(topola-egui): Add progress bar for the currently routed ratline
The capability to measure progress will later be useful to choose slower
but better optimization strategies if more time is available.
2025-07-10 22:38:46 +02:00
Mikolaj Wielgus 29dc59df04 refactor(router/navmesh): Split out navmesh triangulation into "prenavmesh" module 2025-07-09 14:55:40 +02:00
Mikolaj Wielgus 9742740b9e refactor(router/navmesh): Factor out some repeating code 2025-07-09 14:55:40 +02:00
Mikolaj Wielgus 3e322d7b34 feat(topola-egui): Add showing of triangulation constraints to debug overlay 2025-07-09 14:55:40 +02:00
Mikolaj Wielgus f3245b9607 feat(router/navmesh): Add constraint edges for loose segs
This does not work entirely correctly. I will investigate in subsequent
commits.
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus b25ad863ba refactor(autorouter/invoker): Merge debug overlay data traits into one trait
The name of this new trait shall be `GetDebugOverlayData`.
2025-07-06 23:09:08 +02:00
Ellen Emilia Anna Zscheile d3dc826be4 feat: Implement TopoNavmesh DualOuter-DualOuter extraction
This also fixes a sign bug in LineIntersection calculation
2025-06-27 15:15:26 +02:00
Ellen Emilia Anna Zscheile cfde2eac20 fix(planar-incr-embed): Fix Edge lhs vs. rhs association 2025-06-27 15:15:26 +02:00
Ellen Emilia Anna Zscheile ed06170db5 feat: Debug print various TopoNavmesh structures / updates
- feat(autorouter/execution): Debug-print the whole TopoNavmesh on completion
- feat(router/ng/poly): Emit log output on route_to_exit success
2025-06-27 15:15:26 +02:00
Ellen Emilia Anna Zscheile a561b278fc feat(router/ng/router): Implementation of the topological router
- feat(autorouter): Prepare for population of planar Topo-Navmesh with existing routes
  See also issue #166.
- feat(topola-egui): Add dialog for topological navmesh layer selection
- feat(router/ng/eval): Optionally restrict set of allowed TopoNavmesh edges
- fix(router/ng/eval): Use poly_ext_handover
2025-06-27 15:15:24 +02:00
Ellen Emilia Anna Zscheile c8848ef269 refactor(topola-egui): Move InteractiveEvent handling from Viewport into Workspace 2025-06-27 06:51:20 +02:00
Ellen Emilia Anna Zscheile c66089bca9 fix(interactor/interactor): Factor out the logic for on-event activity updates 2025-06-27 06:12:38 +02:00
Ellen Emilia Anna Zscheile a4b1b3893c feat: Add interaction stepper for route building 2025-06-27 06:02:05 +02:00
Mikolaj Wielgus 6f20994dab feat(topola-egui): Add checkbox to hide pathfinding scores 2025-06-18 18:07:43 +02:00
Ellen Emilia Anna Zscheile 353ee9a7ab fix(specctra-core): Actually use Keepouts structure 2025-06-12 23:27:52 +02:00
Ellen Emilia Anna Zscheile 9ea058bd0a fix(specctra-core): Proper support for all kinds of keepouts 2025-06-12 20:08:08 +02:00
Mikolaj Wielgus d0c304adbd feat(router/thetastar): Implement Theta* search algorithm
Closes https://codeberg.org/topola/topola/issues/121
2025-06-12 16:45:07 +02:00
Mikolaj Wielgus 0702b7eb8c refactor(router/astar): Use getters instead of `pub` members 2025-06-12 16:45:07 +02:00