I can only repeat myself - get involved, join the dev mailing list, download the source and get your hands dirty.
Be the change you want to see.
I chose KiCad over any other pcb CAD software because it works for professional jobs. And it works well.
It has pros and cons. So far, I have managed to find a workaround for every issue I have met. Sometimes it is difficult to obtain a custom-shaped pad, a bit tricky.
KiCad is being improved nearly every day.
I have read all the posts under this topic and other similar topics.
Most complaints seem to want KiCad to be the free version of Altium, Eagle, Orcad, Pads or any other software. I canāt imagine anyone asking any of these vendors a KiCad specific feature.
āHey, I come from KiCad where Iāve been for 12 years, Iām used to a Y axis down increase. Please implement this behaviour.ā
I donāt want to persuade anybody to use KiCad. But if someone wants/needs this program, my advice is try to open your mind to a different way to do the same things you are used to.
Itās been said before, KiCad is not a commercial product, so considerations of āmarket penetrationā are quite irrelevant.
Some engineers get exercised about the Y axis issue, for me it has never really been a big deal. Placing components accurately is not that hard, though I donāt need to do that very often. Not being able to set a real origin is a minor inconvenience.
If I really need precision I write code to edit the pcb file.
When you look at the number of open bugs and feature requests Open bugs (1000+ as of today), and then consider that most of the developers are unpaid volunteers, you get a different perspective. Hey, if it was my code, maybe I would change the coordinate system, and make it fully configurable and backward compatible etc. That would probably take several weeks to get it right and nicely working. But I might also consider that I am not really fixing anything, and one of the 1000 other issues might be more useful to work on.
Things like polygonal pads, making the menu design logical, the schematic rewrite and library management are far more pressing than a negative Y axis
I was not much bothered by the coordinate system when I started to use KiCad.
I do wish wish the editing of graphic lines like board outlines had been better. Creating an irregular shaped out line (often necessary to accommodate shape of enclosures) is quite a bit of the pain as noted above because one cannot move lines, and each lines end coordinate of what should have been corner of a polygon is edited independently in the dialog, not as a closed polygon. Thus making a closed board outline without errors can be quite a chore, also because the initial drawing process if one are not careful often leaves small almost invisible line segments that will throw errors and are very hard to find.
However these are feature details that the hard work of developers are likely to take on at some point. What is important is that KiCad has a solid base and thoughtful design that works quite well. For instance I do not see how one can edit boards efficiently in Eagle without the help of traces having the visible net labels and the logic that goes with that ( based on my evaluation of Eagle 6.5), which is present as a base feature in KiCad . I sort of feel blind when looking at some Eagle example boards. After all ECAD is quite different than a regular drawing program.
I have to pose the question; What is the difference between professional and commercial?
My interpretation would be that a commercial package aims to generate profit - full stop.
With CERN providing developer support and acting as a portal for accepting donations to provide additional development time, the project is definitely aiming to be a professional package. As opposed to a powerful tool, useful to those in research but inevitably riddled with obtuse implementations and un-documented processes as is usually the case (all power to those that can code and dance in linux, iām just not one of them).
KiCad is definitely in the realms of professional tool, but still requires further development to reach the goal of being a acceptable tool to not just researchers, but also the those subcontracted to provide open designs and develop equipment for publicly funded projects. So there should be expectation that commonly assumed features / behaviours would be not necessarily the default, but provided for in setup options.
Thinking about little differences, generates significant additional effort and requires that much more effort to deal with. For instance Iād dabbled with kicad on several occasions before the buyout of eagle by autodesk caused me to force myself into getting past the hotkeys and frankly weird inflexible co-ordinate setup (a co-ordinate key/symbol would help a lot here as a visual indication of letter and direction).
Thanks, checking it out I just discovered that while the click to drag end point of graphic line does not work in classic mode, it has been introduced in OpenGL mode and Cairo [v. 4.05]). This sort of makes my point that shortcomings like these are likely to be taken on by developers sooner or later; in this case developers were ahead of me (I have only occasionally used OpenGL mode). Looks like I need to get updated.
OpenGL mode is the way ahead and by not using it you are losing the push and shove router, net highlighting (Nightly only) and other developments. Legacy is only there for a few features not ported yet
Yes, I realize it has come to the point where most of the previous shortcomings of OpenGL mode are gone. I would also like to get back to using the development version again, but may be too risky for my current two for work projects, unless there is a particularly stable version I could jump into.
Yes, you can edit line segments (or arcs) but you canāt edit vertices (the common endpoint of two segments or arcs) as a single operation.
Dale
If I havenāt worked in KiCAD for a couple of days it takes anywhere from an hour to half a day to re-acclimate my intuition to the downward-positive Y-axis. Annoying, but (like my list of āThings my NEXT wife will NOT do.ā), something I can adjust to.
What would REALLY enhance my productivity is some way to place the {0,0} coordinate origin on the board. Being able to set a relative origin is helpful, but far from a solution.
Dale
And being able to import a dxf so that the lines were at an exact position, as I use FreeCad to draw complex PCBs
Iāve used ExpressPCB, Eagle, DesignSpark, and KiCad. While nowhere near as intuitive and flexible as ExpressPCB, KiCad is far less user-hostile than Eagle and DesignSpark. There are still many unintuitive things but the all-important tasks of creating new components from scratch or by duplicating existing ones are not difficult to master. The assisted manual routing is pretty awesome once you get used to it.
Thereās a small but non-zero chance Iāll do this. I have way too many irons in the fire as it is, but this really annoys me. And if I fix this, Iāll probably fix the Y-axis direction too. Hypothetically it should be relatively easy, but Iāve only just started looking at the code.
I think weāve veered way off topic here. Further discussion of how this should work should be in a separate thread.
-Reece
Be warned, this is one of those areas where some of the lead developers may be of the opinion that itās better the way it is now, in which case you may have a hard time selling your patch. I strongly recommend joining the developersā mailing list and proposing such a change (and a brief outline of plan to make the change) before spending any real time working on it.
When you import a DXF outline there is an option to place the DXF origin at some specific point on the PCB canvas; you can even select mm or inch for the units.
Interesting, I will have a try.
Improving import from parametric CAD tools like FreeCad is a far more efficient use of developer effort than making KiCads native board outline drawing more sophisticated.
This process needs:
Control of layers - outline to Edge Cuts, connector centres to Dwgs.User perhaps? Keep outs?
More than just DXF, which goes against the open format philosophy
Being able to set the origin at the middle of the page or at least a sane way of predicting where this import is going to end up (edit 100,100 would be a better default than 0,0)
Documentation
Defaulting a reversal could break a lot of things. Anything you do with coordinate systems HAS to play nicely with existing third party tools like FreeRouting
Last famous words
Which reminds me of this:
and this:
Sales-pitch:
- an option in the display dialog to revert the Y axis
- changing the visualization of coordinate readouts only, not the underlying mechanics
- affected areas for PCBnew alone:
- Coordinate readout at right bottom of editor window
- Footprint properties
- Pad properties
- Track&Via properties
- Line Segment, Circle, Arc, Text and Dimension properties
This should be the path of least resistance in regards to opposition to the change itself, but I guess the most hackish way to go about it, as all those separate places of change will cause a lot of trouble down the road for maintainability IMHO
The input and display of coordinates should be selectable by the user, with the intended origin (and maybe the coordinate orientation) stored in the board file.
I want to be able to send my board files to fab houses and not worry that they donāt have the latest patches. That means keeping the file format backwards compatible, so no changes to the coordinate system saved in the files. Nor would I change the internal representation to avoid cascading breakage.
Itās the user display and input interfaces that would have to change. Anything that reports a coordinate to the user, or accepts a coordinate from the user, should go through a common class. That class applies whatever transformations are required between internal and external representations. The default behavior uses the base class transformation, which results in the current behavior. Want polar coordinate input? Extend the class.
What I havenāt done is dig around in the code to see whether the basics of this already exist, and how painful it would be to make this happen.
BTW, while Iām a hobbyist in electronics and PCB design, āin real lifeā Iām a professional C/C++ programmer with well over 30 years experience. This isnāt my first time making changes in production code. If I can find time to do this Iāll do it right so it integrates nicely.