Create Array is useless for real world application

Bug #1541097 reported by Art
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
KiCad
Expired
Undecided
Unassigned

Bug Description

Not trying to pee on your GAL mode parade here, but every time I try to use it I find it less and less useful really for anything and it scares me to think that you guys are heralding it as a future of KiCad . There is a feature in this mode called Create Array. I gave it a try, hoping that at the very least I can back-import it to the normal usable mode. First of all, let me say that even if I'd tried to make it more confusing intentionally, I probably would've failed. There is horizontal and vertical spacing, but then there is horizontal and vertical offset, and on top of that (actually on the bottom) one of the most mysterious settings called stagger, which doesn't even have units specified. Why would you even want to stagger panels?! Half of the window is dedicated to some obscure complicated numbering schemes. What are we numbering? Individual panels? Components? Who cares! Nobody needs that. I've got a feeling that whoever designed this tool never actually had a board manufactured in his/her life.

Now about the complete uselessness. By many trial and error itterations I finally figured out what each setting does.. I think.. more or less...and made an "array". Unfortunately it comes out unusable on the other end. Those who have ever submitted files to a board house know that you need to specify either tab-routing or V-scoring to be able to separate individual panels later on (unless your target audience is hardcore DIYers who cut them apart on a table saw) KiCad doesn't really have a layer dedicated for routing. So I used User Drawing layer to specify routing around the panels and outlines the tabs. I give you three tries to guess what layer this cool tool arbitrarily chooses to omit. And there is not even a setting to clarify your selection to make sure that User Drawing layer is included when you highlight the board (or at least I can't find it). Selection clarification is a subject of another diatribe.

If you would be actually serious about making something usable, you should've created a simple clear tool where you specify:

-array dimensions (number of panels in X and Y directions)
-Tab routing/V-scoring
-Array Edge Dimensions
If Tab routing is selected:
-number of tabs per panel side
-tabs width
-routing width
-tabs perforation (number, diameter)

And that's it! The program creates a new PCB and automatically spaces the panels, adds routing lines (or v-scoring lines), adds NPTH holes for tabs if those are perforated, draws the array edges with all the panels centered inside and voila! Something that you can make Gerbers out of and send it out - no additional tinkering required.

Art (diametrix)
description: updated
Art (diametrix)
description: updated
description: updated
Revision history for this message
Chris Pavlina (pavlina-chris) wrote :

Do you feel better now?

Revision history for this message
Chris Pavlina (pavlina-chris) wrote :

Yes, you misunderstood the purpose of the tool. It's nominally for making arrays of components, though can be used to make arrays of other things as well. Hence the numbering and such, and the lack of features for arraying sub-boards. Apologies for the confusion, perhaps it would better be called Create Array of Footprints and Possibly Other Things You Might Want to Array.

If you think "spacing", "offset", and "stagger" are confusing, what would you rather call them? I'm all for adjusting the interface to make it more obvious. Perhaps you could try proposing more politely this time though, you might find more people read it.

"Stagger", by the way, makes arrays like this (view with monospace font ;)

O O O O
 O O O O
O O O O

I find it useful for via stitching, as a staggered array tends to fit better among diagonal traces.

Revision history for this message
Art (diametrix) wrote :

Array of footprints? There are better any easier ways to implement via stitching if you design it from scratch. Other than that I have hard time imagining why else would you want to array footprints. Design should be driven by schematics. That aside I have hard time understanding why would anybody design an footprint array tool which in my book has very limited usability, and not consider board penalizing, which would be used almost all the time for boards meant to be manufactured.

Revision history for this message
Chris Pavlina (pavlina-chris) wrote :

A number of us have found it useful. That said, nobody should have to use it if they don't want to. Tell me who forced you to use it and I'll have them arrested for EDA assault!

Revision history for this message
Joan (joanthesparky) wrote :

Well, putting ArtG's 'subtile' way of communicating issues aside, he's got a point with "Design should be driven by schematics" imho.

So this array tool is good for some fill work when one needs a lot of the same thing that don't appear in the schematic.
Nice.
I would hide/disable/remove the numbering then - it's unneeded for those purposes.

The array interface seems to be made for the footprint editor really (to create arrays of pads, etc) and putting it into pcbnew without modification will cause confusion - especially with all those numbering options there.

Once that is done the purpose and applications for an array tool in pcbnew should be evaluated (you already got some feedback on use cases it seems ;-) and some modifications made to allow the creation of not just footprint arrays, but arrays of boards.

The options for count, spacing and offset are OK considering KiCADs background. CAD software let's you chose graphical elements (lines, axis, edges) as directions for rows/columns, so it's OK that KiCAD does it this way.

I attached some screenshots of the interface that Autodesk Inventor 2015 uses for this kind of purpose in comparison to what KiCAD has got atm.
- There one doesn't need the numbering so it's missing.
- They also (as already mentioned) select existing geometry for direction instead of horizontal/vertical, so they have a button to activate the pick tool.
- Then there is a button that hides/unhides more complex, less often needed options for the tool.
- They have graphical icons for the functions of the fields instead of text - way faster and more intuitive to the user imho.
- If they want the array to go the other direction there is a button for that, where as in KiCAD one has to use negative numbers for the spacing.. I'd say the version with clicking on a button beats the click into field, hit [-] key, especially as the button depicts the function intuitively.

Revision history for this message
Joan (joanthesparky) wrote :
Revision history for this message
Art (diametrix) wrote :

Chis, I can find people who would find a punch in the nose useful. It doesn't mean that you should go around and apply it to everybody. If you really want to make something useful ask people for feedback and not only your small group of developers (nothing personal against you guys) but people who design boards for living every day. Ask for feedback on the KiCad forum, you are there all the time anyhow. There are some smart people there, some of whom already have addressed the problem or at least have a pretty good idea how to do it the right way. For example, using this array tool for footprint design would be even worse than using it in PCBNew. However, there was a guy recently on the forum who started a thread with a humble name "This is what the footprint editor should look like" (https://forum.kicad.info/t/this-is-what-the-footprint-editor-should-look-like/1499) who actually made a python script of a footprint editor and I would have to agree (and I'm not the only one) that the native KiCad footprint editor should've been utilizing parametric design. Guess how many developers commented on the thread? None as far as I can tell. You guys may spend your time better reading the forum before you spend all that time reinventing the wheel.

Anyhow back to the matter at hands. Even if you use array tool for stitching via replication, I can't imagine a scenario when it would be useful in any more or less high density design. First and foremost, it is just a band aid (plaster if you are from Britain) to the existing problem. Stitching vias should be just that - VIAS, not footprints. So if your goal was to address that problem, you should've done it properly and design a way to use actual vias for stitching. Second, throwing a net of vias on a busy board for the purpose of stitching ground planes is as useless as a screen door on a submarine. You would spend more time deleting the ones that are not needed than you would've placing the ones you need, had there been a way to do it efficiently. Once again the wheel has been invented long time ago - you just need a way to "Place Via" with the assigned net to it (the one that not going to be deleted or net reassigned) and preferably with a keyboard shortcut. Then you just set you grid to the required step size (which has been recently handicapped as well :) and stitch your entire board in less than a minute.

@Joan - I would be cautious about applying logic from unrelated packages to the EDA tool, more often than not you will end with a flop. I work with mechanical CAD packages all the time. Sometimes you can find some jewels there (like parametric layout for the footprints) but for the most part methodology and goals are too different to try to copy behavior of mechanical CAD tool.

Revision history for this message
Chris Pavlina (pavlina-chris) wrote : Re: [Bug 1541097] Re: Create Array is useless for real world application
Download full text (4.1 KiB)

You talk as if you think the entire development team sat around writing a
"useless" array tool and doing nothing else. It was written by a single
contributor, not otherwise a major developer, who thought he'd write
something he found useful. How kind of him, actually contributing. You
can't possibly think the rest of us are unaware of the things you mention.
We have a limited number of developers, very few of whom are paid to do
this, and have to address things as we can.

Again, stop being rude. It isn't going to get you anything but ignored.
People who contribute to a project in their free time generally can't be
arsed to deal with problem users.

Perhaps your time would be better spent contributing rather than ranting.
Or, since you think KiCad is so terrible, maybe it'd be better spent
evaluating other packages. Either way, none of us is impressed with your
abuse, please leave it at the door next time.
On Feb 3, 2016 7:55 AM, "Art" <email address hidden> wrote:

> Chis, I can find people who would find a punch in the nose useful. It
> doesn't mean that you should go around and apply it to everybody. If
> you really want to make something useful ask people for feedback and not
> only your small group of developers (nothing personal against you guys)
> but people who design boards for living every day. Ask for feedback on
> the KiCad forum, you are there all the time anyhow. There are some
> smart people there, some of whom already have addressed the problem or
> at least have a pretty good idea how to do it the right way. For
> example, using this array tool for footprint design would be even worse
> than using it in PCBNew. However, there was a guy recently on the forum
> who started a thread with a humble name "This is what the footprint
> editor should look like" (https://forum.kicad.info/t/this-is-what-the-
> footprint-editor-should-look-like/1499) who actually made a python
> script of a footprint editor and I would have to agree (and I'm not the
> only one) that the native KiCad footprint editor should've been
> utilizing parametric design. Guess how many developers commented on the
> thread? None as far as I can tell. You guys may spend your time
> better reading the forum before you spend all that time reinventing the
> wheel.
>
> Anyhow back to the matter at hands. Even if you use array tool for
> stitching via replication, I can't imagine a scenario when it would be
> useful in any more or less high density design. First and foremost, it
> is just a band aid (plaster if you are from Britain) to the existing
> problem. Stitching vias should be just that - VIAS, not footprints. So
> if your goal was to address that problem, you should've done it properly
> and design a way to use actual vias for stitching. Second, throwing a
> net of vias on a busy board for the purpose of stitching ground planes
> is as useless as a screen door on a submarine. You would spend more
> time deleting the ones that are not needed than you would've placing the
> ones you need, had there been a way to do it efficiently. Once again
> the wheel has been invented long time ago - you just need a way to
> "Place Via" with the assigned net to i...

Read more...

Revision history for this message
Art (diametrix) wrote :

Chris, if its ok with you I will decide for myself how my time would be spent better. This is a natural fallback response: "since you don't pay - you'd better shut up" I, for one, don't think that open source software should suck just because we don't pay for it. I don't care how many people designed this tool. It is immaterial to the subject being discussed. What I said is that currently I don't see a strong feedback loop in the development of KiCad and I think everybody can benefit if that would change.

If I did offend your sensibilities with this post I'm sorry, however you can heed your own advice and stop reading. As far as the second most popular fallback answer of the open source developers: "since you don't contribute, you should shut up" I can say that everybody can contribute in any way they can. You might not believe it, but feedback can be a contribution as well, if you choose to actually listen and not treat it as mere annoying complaining of stupid users who don't know anything. If you are not capable of getting over the style of the message and to the substance - this post is not for you. Besides, let me say this again, I'm not here to "get anything for myself" as you so eloquently put it. I'm not here with my hand out asking for favors. I reported a flaw in the design, what to do with it is up to you guys. You can ignore it or you can improve it.

Enough time wasted.

Changed in kicad:
status: New → Opinion
Revision history for this message
fluffyfrog (frotteefrosch) wrote :

Let me tell you I just had to design a LED flash panel with 70 LEDs on it and was delighted to find this dialog :)

Revision history for this message
Maaatth (matthieu-rouy) wrote :

I am trying to make an LED array, and I do find the interface terrible.

For an earlier project I could make an array, by convoluted and imaginative (i.e. no reliable) use of the existing features.

Moving this thread from bug to opinion is rudest than anything Art could have said, as it dismisses the legitimate need to place footprints in a clear and safe way.

Or maybe I missed something in the manual and there are better ways to make such arrays.

Revision history for this message
eelik (eelik) wrote :

I again disagree with the tone of some of the critics, but I agree in principle. Usability isn't good. I have used this before, but after that have forgot half about it, and it required about 10 iterations to get it right. Here are some usability problems of Grid Array, possibly/probably repeated from above, but I represent my view here, also trying to remember my earlier confusions:

Spacing: the term is ambigous. Does it mean space between the items? From rightmost edge of the left side item to leftmost edge of the right side item? When talking about pads it's actually "pitch". Simple tooltip would help even if the field title is kept.

Offset: I still don't know what it means. Let me check... OK, it affects where each next item in column/row is positioned. "Offset" is probably a good term, but "vertical/horizontal" is as good as random choice for a word. How about "Next row offset" instead of Horizontal and "Next column offset" for Vertical? And tooltips would help, of course. For example "This value is added to X coordinate of each item row by row" or preferably something better.

Stagger: I can't come up with anything better, but the user just has to see it to understand it. Or maybe a tooltip would help? However, it's difficult to explain even though it's easy to understand when you see e.g. some connector which has "staggered" pins. Technical explanation could be "Every row (for Rows stagger type)/column (for Column stagger type) until n'th row/column is moved right/down pitch/n mm."

An ideal solution in addition to tooltips - which would be applicable in many other dialogs, too - would be to add a preview to the dialog. It would show the effects of the choices real time.

Revision history for this message
Heitor (heitorpbittencourt) wrote :

When I don't know what a parameter is, I open the documentation. There are some nice images there and a good explanation of each field: http://docs.kicad-pcb.org/5.1.2/en/pcbnew/pcbnew.html#array_tools

Revision history for this message
Jeff Young (jeyjey) wrote :

This is our step-child feature. As far as I understand it the development team would like nothing better than to remove it and replace it with Python scripts (a la the Footprint Wizard). There's just no way to cover the things people want to do with it in a GUI.

However, every time we try to do that we have users who complain that they use the existing one. So the can gets kicked down the road....

Revision history for this message
Art (diametrix) wrote :

@Heitor

GUI is like a joke. If you have to explain it - it's not really good.

@Jeff

They complain because there is no real alternative right now. If you make a tool that works better - nobody would be complaining, regardless of what programmatic approach you take. I'm not big on python scripts myself. I think this feature can benefit from some well planned development. After a while it gets pretty old to try to do your array layout, manually place all the things mentioned above just to redo it all after you need to modify the layout of the original board.

Revision history for this message
KiCad Janitor (kicad-janitor) wrote :

KiCad bug tracker has moved to Gitlab. Try searching for "lp:#1541097" on https://gitlab.com/kicad/code/kicad/-/issues

Changed in kicad:
status: Opinion → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.