kicad-round-tracks

Track rounding plugin for KiCad
git clone https://git.mitxela.com/kicad-round-tracks.git
Log | Files | Refs | README

Branches

Name Last commit date Author
kicad-52022-01-25 13:45:09 +0000mitxela
master2023-03-24 14:22:20 +0000mitxela

Tags

Name Last commit date Author
1.02022-01-29 16:42:52 +0000mitxela
1.12022-02-14 16:16:51 +0000mitxela
1.22022-05-03 11:13:00 +0100mitxela
1.32023-03-09 14:18:00 +0000mitxela
1.42023-03-09 15:43:29 +0000mitxela
1.52023-03-24 14:22:20 +0000mitxela

File Tree (HEAD)

Name Size
.gitignore1.215K
LICENSE11.09K
README.md3.495K
__init__.py81B
icon.png5.657K
metadata.json.template1.131K
release.sh875B
round_tracks.png821B
round_tracks_action.py19.43K
round_tracks_gui.py3.688K
round_tracks_ui.fbp28.57K
round_tracks_utils.py2.378K

History

* 15756d1 (HEAD -> master, tag: 1.5) | mitxela 2023-03-24 14:16 | More robust track checking, for KiKit compatibility | * 4159d7f | mitxela 2023-03-11 23:44 | update readme | * db1c740 (tag: 1.4) | mitxela 2023-03-09 15:43 | Sadness that we have to do this | * bcc1ec6 (tag: 1.3) | mitxela 2023-03-09 14:18 | bump min version to 7.0.1 | * c0a4fb8 | mitxela 2023-02-26 14:48 | Improve progress reporting | * 46de68d | mitxela 2023-02-26 12:59 | Allow gui to update before showing the message box | * 6024770 | mitxela 2023-02-25 01:36 | Simple progress dialog | * b041c32 | mitxela 2023-02-24 16:36 | Update wxformbuilder fbp to be almost not wrong | * 247fc82 | mitxela 2023-02-24 14:16 | Check DataViewListCtrl still exists | * d3925b1 | mitxela 2023-02-24 14:14 | Ignore permission error on saving config | * 3f25df0 | mitxela 2023-02-22 13:02 | rename cloneWxPoint | * 10a469f | mitxela 2023-02-22 12:53 | Replace wxPoint with VECTOR2I | * 3b0e4b2 | mitxela 2023-02-22 12:52 | Fix GetNetClasses for KiCad 7.0 | * ee9821d (tag: 1.2) | mitxela 2022-05-03 11:13 | update readme | * 2e21e2d | mitxela 2022-05-03 00:15 | Rethink pad intersection logic | * 63a7747 | mitxela 2022-05-02 23:32 | Better (not perfect) detection of pad intersection | * 5247930 | mitxela 2022-05-02 18:00 | Make whitespace consistent in utils.py | * 86abe5c | mitxela 2022-05-02 16:46 | minor optimisation | * 9e06df3 | mitxela 2022-04-30 18:13 | Fix fixed-intersection behaviour for pads | * be730f9 | mitxela 2022-04-30 16:38 | Add option to ignore junctions | * 441323d | mitxela 2022-04-30 15:47 | Hide time taken dialog if processing was instant | * 15016c1 | mitxela 2022-04-16 23:48 | update readme | * 9de0f76 (tag: 1.1) | mitxela 2022-02-14 16:16 | Update readme | * f9447dd | mitxela 2022-02-14 15:53 | Now that's what I call UX | * 546744f | mitxela 2022-02-14 15:50 | Keep window open while running, report time taken | * 16a93d7 | mitxela 2022-02-14 15:40 | Show toolbar button by default | * 09201fc | mitxela 2022-02-14 15:28 | Fix track angle cache | * c45a7c7 | mitxela 2022-01-30 14:02 | update readme | * 5f39470 (tag: 1.0) | mitxela 2022-01-29 16:42 | Increase default radius | * a4be307 | mitxela 2022-01-29 16:34 | Updates for release via Plugin and Content Manager | * 067113f | mitxela 2022-01-27 14:40 | Handle vias on multilayer designs properly | * 17498a2 | mitxela 2022-01-27 13:26 | Remove redundant check | * 72a2de9 | mitxela 2022-01-26 15:32 | Update readme | * 193fdd8 | mitxela 2022-01-26 14:31 | Allow only processing selection | * 0bdc02e | mitxela 2022-01-25 16:45 | Cleanup, avoid leaving zero-length tracks | * a7ab8b4 | mitxela 2022-01-24 15:21 | Replace almost-straight arcs with ordinary tracks | * 75aa887 | mitxela 2022-01-24 14:18 | cache track angle difference before shortening | * 961d9da | mitxela 2022-01-23 20:42 | Ignore intersections where arcs are already present | * e83df32 | mitxela 2022-01-23 18:06 | Compensate for irritating native arc glitches | * 1747bd9 | mitxela 2022-01-23 17:58 | Cleanup filename stuff | * 6359c7d | mitxela 2022-01-23 16:04 | Save checkbox states to config file | * 7d0df33 | mitxela 2022-01-23 15:22 | Trig factors to get radii to match | * ca062c9 | mitxela 2022-01-23 13:24 | Initial support for native arcs | * 457d7df | mitxela 2022-01-21 20:16 | Update readme | * ca96f10 | mitxela 2022-01-21 20:11 | Possible fix for zombie process stuff | * c117504 | mitxela 2022-01-21 20:05 | half hearted attempt to keep .fbp up-to-date | * 1fa55ea | mitxela 2022-01-21 20:04 | Rename file instead of opening a new instance | * 099a871 | mitxela 2022-01-21 19:18 | Update readme | * 126e78a | mitxela 2022-01-21 19:16 | Update icon, make smaller | * 9f1a717 | mitxela 2022-01-21 19:15 | Cleanup | * 914678e | mitxela 2022-01-21 17:49 | Fixes for KiCad 6 compatibility | | * 970cf39 (kicad-5) |/ mitxela 2022-01-21 20:11 | Possible fix for zombie process stuff | * 16db1d3 | mitxela 2022-01-21 15:39 | Fix GUI hang on macOS, #1 | * 8271569 | mitxela 2022-01-17 13:57 | update readme | * d7af0de | mitxela 2021-01-09 16:34 | Update readme | * 268c51a | mitxela 2021-01-06 15:03 | Cleanup, will expand on readme later | * 97f3c78 | mitxela 2021-01-04 21:29 | UI improvements | * 2d22352 | mitxela 2021-01-04 19:55 | Use cosine factor to make segments equal lengths | * 67d955c | mitxela 2021-01-04 15:16 | Cache track lengths to make rounding symmetrical | * 59ccdae | Antoine Pintout 2019-05-14 13:32 | Explain new interface | * 2026293 | procsynth 2019-05-14 13:16 | Fix Exception when no config file, fix run in place | * 84c3622 | procsynth 2019-05-14 13:04 | Add per NetClass settings and zone refill after run | * a42e4ef | Antoine Pintout 2019-05-12 19:32 | Update README.md | * 09788b8 | Antoine Pintout 2019-05-12 17:41 | Update licence informations | * 411ae00 | Antoine Pintout 2019-05-10 21:25 | Update README | * 0b15d3c | Antoine Pintout 2019-05-10 21:07 | Initial commit (Antoine Pintout) | * 89da78d | mitxela 2021-01-06 13:47 | Intermediate commit to cleanly combine histories | * 4372df9 | Julian Loiacono 2019-01-29 00:34 | adding hexagon creator to this suite | * 8a0c83a | Julian Loiacono 2018-11-06 10:26 | small bug fix for 5-track case | * cd8457d |\ Julian Loiacono 2018-11-05 10:28 | | Merge branch 'master' of https://github.com/jcloiacon/pcbnewCornerRounder | | | * d447bcf | | Julian Loiacono 2018-10-31 23:25 | | Update README.md | | | * f668bc0 | | Julian Loiacono 2018-10-31 23:14 | | Update README.md | | | * 65488cd | | Julian Loiacono 2018-10-31 23:13 | | Update README.md | | | * 1e3c7ab | | Julian Loiacono 2018-10-31 23:11 | | Update README.md | | | * a6eb0ab | | Julian Loiacono 2018-10-31 22:58 | | Update README.md | | * | 453f55e |/ Julian Loiacono 2018-11-05 10:21 | removed old files | * a36db5b | Julian Loiacono 2018-10-31 22:51 | got rid of weird o folder | * 9b608d9 | Julian Loiacono 2018-10-31 22:50 | sufficiently functional for production | * 1a83fce | Julian Loiacono 2018-10-31 21:51 | hope i didnt f everything up | * e7f1285 Julian Loiacono 2018-10-29 21:04 first commit

Contents of README.md:

KiCad Round Tracks

A subdivision- and/or native arc-based track rounding plugin for KiCad.

The goal is to algorithmically melt a PCB design, smoothing all tracks in a predictable manner.

example

For best results, use in conjunction with this teardrop plugin.

I have written extensively about my kicad melting experiments here and here.

Use

For the KiCad 5 compatible version, please use the kicad-5 branch.

The intended use is to have a source PCB file, which is easy to edit, and a rendered output file, generated by this plugin. After running DRC on the output, you can then go back and adjust the original file before running the plugin again.

If you select part of the board, only the selected tracks will get melted. If nothing is selected, the whole file will be processed.

"Create a new file" does not immediately write anything to disk, it merely appends "-rounded" to the filename so that the next time you hit Save it won't overwrite the original.

If "use native" is ticked, the rounded sections are implemented using KiCad 6's native PCB arcs. These can be adjusted after the script has run, but I still recommend keeping the unrounded source PCB file. I have tried hard to ensure that the output PCB is the same, regardless of if native or subdivision-based arcs are used. If "use native" is ticked, the number-of-passes parameter is ignored.

Otherwise, the curves are generated from many small straight sections. 2 or 3 passes is usually sufficient. There is no loading bar, so if the design is complicated the interface might freeze for a few seconds while it runs. You can set the number of passes to be 1, and run the plugin repeatedly, and it will give the same results, while letting you inspect the intermediate stages.

"Radius" is the maximum radius curve that would result from a 90° bend. A smaller curve will be used if the tracks are shorter, or if the angle between them is sharper. The resulting curves will always pass through at least one point of the original tracks, so individual curves can be controlled by splitting tracks into smaller sections. If a curve has too large a radius, placing a small 45° bend will make it smaller. Similarly, if a bigger radius is needed for certain tracks, you can draw an approximate curve with free-angle tracks to achieve this.

Installation

Now available from the Plugin and Content manager.

For manual install, clone or unzip this repository in a KiCad plugin folder. You can list the exact paths where KiCad will search for plugins by opening the scripting console in pcbnew and running:

import pcbnew
print(pcbnew.GetWizardsSearchPaths())

Under Preferences / Preferences / PCB Editor / Action Plugins, you can choose whether to have a button on the toolbar for quick access to the plugin.

History

This plugin is based on flexRoundingSuite by Julian Loiacono and kicad-round-tracks by Antoine Pintout. My contribution updated the algorithm so that subdivisions are applied equally, resulting in smoother tracks with fewer clearance errors.

Original copyright Miles McCoo, 2017
Extensively modified by Julian Loiacono, Oct 2018
Multi-layer support and repacked as action plugin by Antoine Pintout, May 2019
Updated subdivision algorithm by mitxela, Jan 2021