Curved Traces: Shower Singer to Professional?

Disclaimer: KiCad is extraordinary software. I promote it to everyone I can, including my day job. I also financially support it every year. I’m not a “hater”.

Curved Traces is a frequent topic on these forums. After years of discussion, and a few plugins, KiCad 7 got rudimentary native support for them with the Fillet Tracks feature. With effort, it can produce pretty results, but to say that KiCad now has curved traces “licked” because of this one button would be misleading. Adding curved traces to a KiCad layout is still just plain “not fun” and requires an clunky workflow that discourages their use.

Let’s look at the issues holding us back:

  • The KiCad Arc drawing tool is actually a fractional circle tool. It requires the creation of a circle and then the user decides how much of that circle to delete. This works well if the user needs to create multiple curves aligned around a common center point. For drawing footprints and simple board edges, it is perfectly serviceable. However there is no way for the user to precisely start or end an arc at an existing vertex. For drawing traces, KiCad’s arc tool is analogous to trying catch a greased pig.

  • Once an arc has been drawn, KiCad has limited editing capabilities, critically that once defined in one direction, an arc cannot easily cross the 180 degree threshold. A curve to the left cannot be made into a curve to the right and vice versa. In most cases, even minor adjustments to curved traces is best performed by deleting and recreating the entire trace. This affects board shapes too as Edge.Cuts designs of sufficient complexity are best drawn in other CAD software and then imported into KiCad.

  • The Arc tool creates graphical elements which require this workflow to be converted into traces:

  1. Draw an arc.
  2. Pick the Select tool.
  3. Right-click the arc and Create Tracks from Selection
  4. Delete the graphic.
  5. Click the arc and assign it a Net from the Inspector.
  • The Fillet Tracks feature helpfully added in KiCad 6 is “destructive”. Once a track has been filleted, if any changes are needed, the entire track generally must be redrawn and refilleted with the user guessing as to the correct curve amount in mm.

  • The rounded corner style of drawing traces (added in KiCad 6 and accessed by pressing Ctrl+/) draws a series of arcs mixed in with straight sections. It tries to make a best guess at what the user wants, but unless extreme care is taken, traces tend to dog leg back on themselves or abruptly transition from curves to straight lines. These transitions are largely NOT editable. Only the radius of the arcs can be edited. The endpoints cannot be dragged and the transition between arc and straight line cannot be changed except to completely redraw portions of the trace.

Possible Solutions:

  • Allow drawing an Arc from a starting vertex instead of starting with a circle.
  • Gracefully handle bending an arc from left-hand to right-hand instead of freaking out.
  • Allow us to have a Net and copper layer selected when drawing with the Arc tool so that each arc immediately becomes a valid trace.
  • Change Fillet Tracks from a destructive change to a Property of that trace that is remembered and applied to the viewport. “Filleted” and “Fillet curve mm” could be stored for the trace.
  • Add a bezier editor to KiCad.

KiCad 9 maybe? :slight_smile:

5 Likes

Please raise this as an issue as “wishlist”
You have some very clear suggestions in this post

1 Like

Some discussions have occurred in the past but nothing unified.

Hi, I recently posted this in another thread, about reporting on Gitlab.

Open Kicad, up top, Help > Report Bug.

Gitlab will ask you to register. Just follow the instructions. You will need an email account for Gitlab to send a number code for your confirmation. (All up about 5 minutes effort to register).
When you have a Gitlab account you will be able to create an issue.

When you wish to create an issue you will be confronted with a form that is titled “New Issue”.
It is best, before creating an issue, to left click “Issues” in the Left hand column and read a few current and past issues to see the procedure for creating an issue, then follow the instructions in “New Issue”.

If you have a “Feature Request” or “Wishlist Item”, Start the Title of the issue with that wording. This saves Gitlab sorters time and effort.

If an Issue is created through “Report Bug” your Kicad and OS versions will automatically be included in the Issue, so don’t worry about including this.

+1
We mostly do round PCBs and I agree that round traces are cumbersome in KiCAD. Once drawn, they are basically “read-only”. If you attempt to modify them (e.g. by moving a trace), havoc ensues. So it’s usually best to start over. I’d vote for a proper implementation.

1 Like

only one remark regarding your third point (arcs ↔ tracks): with v7.99nightly (== upcoming v8) the possibility to assign netnames to arcs (and all other graphic shapes) was added: Post-v7 new features and development news - #24 by craftyjon

You should examine and test that feature, maybe it already fulfills that part of your suggestions.

2 Likes

I expect to get a “not possible” or similar answer to this, but FreeCAD has a halfways usable interface for drawing 2D polygons that include arcs, or just arcs in general. It would seem as a viable option to have this interface brought over to KiCad. At least theoretically this should be possible in the free open software world; I’m talking from a licensing perspective.
Probably some reimplementing or adaption of the code would be needed because of a different inner structure of the code between the two projects, but the user interface for arc drawing and editing would be an improvement in my estimation.

Many implementations are possible to address the function of “curved traces” the question is what is required ? what can not be done without ?

I don’t currently use curved traces, I do use rounded corners for Edge Cuts and where I need something more complex for an edge cut I’ll pull in a DXF . . . so I don’t have an additional requirement at all.

I can see how it would be nice to be able to draw proper curves, specify tangential relationships to straight lines, be able to edit the radius and centre point of arcs and work with splines . . . and also have all these curves move in a pleasing way when I have the Interactive Router set to shove mode . . . . and I know nobody has mentioned these types of features but to implement curved tracks these features must be considered also.

Do I need these features ? no, before I need this kind of feature I need Variants.

1 Like

Different people have different needs. Take for example the thread below (From 2019). Doing this in KiCad is still very much a struggle.

I don’t need Variants :slight_smile: and I can cope with arcs as they are now, but doing some tasks (circle RFID antennas) would be easier with better curved traces editions possible.
When I moved from Protel 3 (from 1997) to KiCad V4 what I missed the most were rounded tracks.

I don’t expect these to necessarily address your specific or general points, but a few more things to add to your toolbox if you weren’t aware of them:

  • as mentioned, graphic shapes on copper layers can have nets in v8
  • there are multiple arc editing modes, you might like one better than the other. Right click the arc tool button on the right toolbar
  • [edit: sorry, I missed that you included this in your post, but leaving for posterity] filleting isn’t the only way to round track corners; you can also create them directly while routing by changing the corner mode to rounded (press ctrl+/ while routing to cycle through corner modes). Corner modes are 45deg angle, 45deg round, 90deg angle, 90deg round.

If you do make feature requests on gitlab, please keep them focused to one specific request, e.g “create arcs starting with endpoints” or “nondestructive fillet operation”.

One persons nice is another persons tool to get the job done with reasonable efficiency

Do I need these features ? no, before I need this kind of feature I need Variants.

I actually need multiple PCBs in the same project before I need a full-fledged Curved Traces implementation. I didn’t create this because it should be prioritized over something else. I created it because there is a belief that KiCad “already has curved traces” and no further development is required. I’m thrilled that KiCad has SOME support, but it is too clunky for serious use. And overall improvements in the arc drawing tools would have ripple effects throughout the software. Right now, people use CAD software to draw Edge.Cuts and graphics because KiCad’s CAD tools are less mature than other parts of this awesome software.

I’m not trying to rabble rouse but to raise the profile on something that could be better. The discussion has been interesting and useful so far. I created it here as a discussion instead of as an Issue in the bug tracker because I know such an issue would be immediately closed as duplicate/solved and I’d rather avoid an adversarial situation in Issue comments.

1 Like

All the examples you have given are about use cases that the existing curved traces features are not even supposed to address. So it is strange to call it “too clunky for use” – it is just intended to be used for something different, and for those different applications I don’t think it is that clunky personally (having used various other CAD tools) although there is still room for improvement. It’s definitely good enough for serious use – for the intended applications.

Curved traces are not supposed to be a replacement for using CAD software to design complicated board outlines or graphics. They are just supposed to be for people who need regular 45/90 degree track routing, but with rounded instead of sharp corners.

We need specific feature requests opened for specific instances of things that people need, and then we can use those to see the relative popularity of these different specific use cases and discuss possible solutions.

This thread is conflating many different things that aren’t actually related (the ability to route with rounded corners and the ability to route arbitrary non-circular curving splines are very different, and also different from various requests relating to modifying existing shapes)

3 Likes

The topic seems to have run its course. Please close it. Thank you in advance.