Hi,
the Library FileFormats doc describes Bezier Curves in the drawing section. However, I can’t find it in the library editor. Has this been emplemented yet?
Hi,
the Library FileFormats doc describes Bezier Curves in the drawing section. However, I can’t find it in the library editor. Has this been emplemented yet?
Can you be more specific? My FileFormats.pdf file makes no mention of Bezier Curves.
LibraryFileFormats.pdf (120.8 KB)
I have tried to attach the file which I downloaded a some time ago.
The footprint format does seem to support Bezier curves but they are not rendered. By that I mean that a footprint that contains a Bezier curve (fp_curve) is read without error but no curve is rendered either in PCBNew or the footprint editor. Perhaps someone else here knows more.
Some support for Bezier curves was started, but never finished.
There is no support for bezier curves in gerber, so there should be limited reasons to implement them. They would need to be rendered by segments if used in a gerber output, which in the end is pretty much what KiCad is all about. As an esoteric extra for svg or pdf printing they could be fun for the random home etcher perhaps =)
I think having bezier curve support would be a great addition. There is already support for splines in the backend code and there was some discussion on the developer list about this.
Splines can be approximated with line and circle segments quite well, and both are supported by the Gerber format. If you take a look at board designs made using PCBMode (just google for it) you will definitely change your mind why KiCad should support free form artwork.
Still there is quite a lot of stuff missing. The spline to line/circle segment approximation algorithm needs to be added so that gerber export is possible. Also this requires support in the design rule checker. (the static one and the on the fly one used for push and shove)
I really hope to see it be part of KiCad some day but it is not a trivial task.
Admittedly that is very cool indeed Perhaps not the most pressing development need, but at least they’ve certainly opened the door to eventually implementing some kind of curves/splines.
Bi-Arc instead of Bezier?
There are a lot of different algorithms for generating curvy lines and I don’t really understand why the Bezier curves are so popular.
Bi-Arc’s have some nice properties over other curves.
A bi-arc always goes through all control points which is very nice for intuitive and exact drawing.
And because the result of a bi-arc curve is only a bunch of arc’s there is no need for any conversion ( = loss of precision) when exporting to to post processing tools which understand arc’s (gerber etc).
The reason one uses Béziers is because Adobe has decided to use Béziers in PostScirpt. And as a result PDF, and SVG support Béziers. Personally I would prefer Rational B-Splines, (which would make the STEP exporter easier to make as well as 2 or 3 order continuity). Anyway the reason why you want to use curves that have tangential control points is that they are easier to fit and aren’t as prone to oscillations (specifically in the case of polynomials)
The end result of using Béziers is that:
True the underlying system might not support Béziers, but it does not have to. We users can still benefit form the Bézier support. Implementing Biarc is pretty trivial
No, and after a number of discussions on the dev list we have an almost unanimous decision not to support beziers as such. Ideally if we import any curves which contain Beziers we should convert to a series of circular arcs; hopefully that will be done one day, but there is a lot of work to do on kicad’s underlying geometry code before it makes sense to do that.
You can use Inkscape scripts like this one to export directly to a 1 px : 1 mil dimensioned footprint in gEDA PCB format, which KiCad can load easily enough:
The chief advantage of converting beziers and cubic splines to line segments is that line elements are supported by DRC in KiCad.
If there is demand, I could create an additional script for export to a KiCad native format.
pcb-rnd and gEDA PCB support arcs on copper, but until KiCad does, conversion to bi-arcs would not make a lot of sense for copper layers.
There are other workflows too, that have been described before:
Cheers,
Erich.