Creating a footprint with drilled holes

[quote=“jwr, post:10, topic:1625, full:true”]
. . . the “All copper layers” setting makes little sense to me in this case . . . [/quote]
Like Joan_Sparky said, you probably have to accept this as a bit of quirkiness that helps make KiCAD so “unique”, “versatile”, “charming”, “weird”, “thought provoking”, etc. (Think, for example, of all the different adjectives my wife uses to describe me, depending on what day you ask.)

There probably IS a reasonable explanation in the realm of data and “virtual objects”. It appears that in the KiCAD universe, “holes” don’t exist as objects in their own right. They are always associated with a copper “pad”. In the grand scheme of things this may be either a wise decision or foolish, but for now we must accept that it pleased the Creator to define the universe in this way.

We must also accept that a “pad” must be associated with at least one copper layer. Yeah, this contradicts what we encounter in the “Pad Properties” editing box. (Can somebody give an example where the “None” option is a correct selection in the “Copper Layers” section of the “Pad Properties” dialog? Perhaps it is time for a bug report.)

To create a simple, basic, hole in the KiCAD universe we must define both the hole and its associated pad as having the same size. In the physical world where we live and breathe this is a degenerate case - the hole completely swallows the pad, leaving nothing. (To begin with, since a hole is a place where there is nothing, are we arguing about nothing?) But in the KiCAD universe, both the hole and the pad are virtual objects, they can exist simultaneously, and neither can annihilate the other. Other EDA programs I’ve used would squawk this degenerate case, citing something like “inadequate annular ring”, but KiCAD is more tolerant and less legalistic in that regard.

Even though the KiCAD hole has reduced its associated pad to nothing, that nothing must be placed on a copper layer. And in KiCAD, a hole goes through all the layers so we must specify “All Copper Layers” for its associated pad as well. I know a few good machinists who can make half a hole rather than a whole hole but they obviously aren’t allowed into the KiCAD universe - only complete holes, leaving nothing on any copper layer. Now, since we must specify “ALL Copper Layers” for the pad attributes associated with a simple, basic, hole . . . shouldn’t we also be required to include ALL of the “Technical Layers” in the pad definition?

Is there a less convoluted justification for the definition and behavior of simple holes? Perhaps it’s time to rethink the way holes are defined and used. I see that selecting “NPTH, Mechanical” automatically disables the “Net Name” and “Pad Number” input boxes - could selecting “NPTH” also force the selection of other options? In most cases there won’t be any copper ring around a NPTH, but occasionally you might want a copper ring around the hole as either a chassis grounding connection, or for mechanical reasons. (The slightly elastic copper absorbs vibration and thermal expansion under a fastener, where brittle glass-fiber board material abrades away.)

Dale

1 Like

Hey, I ran into this exact same issue a few weeks ago. There are two issues:

  1. You cannot create a pad that’s not an a copper layer with the same drill and pad sizes.
  2. You can create a NPTH mechanical drill, but I got a separate drill file for that when plotting Gerbers and my boardhouse (in this case Oshpark) does not handle two drill files well.
  3. Looking at existing footprints in the library, like the Mounting Hole, they use exactly what I want - a normal pad, not on any copper layers and same size drill and pad.

I remember there be a bug report for the issue of not being able to create a PTH that is not on a specific layer, but I can’t find it anywhere.

In the end, I just assigned it to the top/bottom copper layers, it leaves the soldermask out and the copper gets drilled out. :frowning:

it is possible to merge NPTH with PTH, during gerber generation, so it should no need to do any workaround

Merging of PTH / NPTH has been removed.

@madworm … I missed that! thanks :smile:

Date:
2015-10-26 07:43:30 UTC
Revision ID:
jp.charras@wanadoo.fr-20151026074330-l735o9z79l6o4wn6
Pcbnew, dialog create drill file: remove option to merge plated holes and not plated holes:
reasons:

  • This option is called “bad practice” in gerber files format specifications and is even forbidden in gerber drill files
  • Generates problems with some board makers because these holes are not identified in a single NC file
  • No one was able to explain us how to identified them in a single NC file
  • Recent change in drill file generation is not compatible with merged holes (minor reason)

That is an option I just used to create gerbers… I’m not sure I understand what the behavior will be from now on. Will we get one drill file, or two files?

Both OSHpark and Itead (where I make my boards) want one drill file, so I’m not sure what to make of this.

@jwr,
I think, if the devs don’t re-introduce that feature, the only option would be to switch from NPTH to a PTH with drill equal to pad size on your footprint…
that will produce a single file and it should be treated as the previous version from OSHpark…
probably OSHpark just doesn’t do the plating when the annular is not present

Maurice

So now I have to go back to manually merging the two drill files for all the PCB services that only take a single file? Sure, it might be bad practice in theory, but the solution forces many people to repeatedly waste their time in practice.

I suspect some user will soon offer a script to merge the drill files.

the best would be that someone whos missing that feature, would file the request as bug / whishlist at


to let the k developers that this is required by e.g. OSHpark
probably OSHpark people just treat NPTH as PTH, and they do not plate the drill in case of no annular

I’ve read that copper going over the edge or over drill holes will get them plated for the hard-to-communicate-with chinese fabs (*).
This naturally implies that the CAM system processes both the gerber and drill file together at some point.

*) found my source: http://electronics.stackexchange.com/questions/78094/how-to-specify-castellations-in-gerber-files

… most board fabs will plate any copper that is over or directly touches
the edge of a hole or routed feature. So a ‘standard’ way of defining
this is just to have copper over the edges of your castellations. This
is how vias and plated through holes work - and conversely, this is how
non-plated holes work as well (you just pull back the copper a little
bit from the hole).

So to distinguish between PTH and NPTH in a single NC drill file the CAM system needs the copper layers.

Has someone filed this prob to launchpad bug?
There is still little time after RC2 has been rolled out, to include that feature before the stable will be released…

I just keep using BZR6097 and maybe the boardhouse I use can handle PTH/NPTH in separate files in the future when I upgrade :slight_smile:
But yeah, if you open a wish for that I’ll vote in favor of getting this feature back in there. Although I can see the point in staying with the specification and not working around stuff.

I did not, because I don’t feel like I understand the whole issue. I can’t believe someone would deliberately remove the option to merge both drill files, since every board fab I used requires one drill file, not two, and merging them manually is not obvious. Basically, this move would make KiCad unusable for work with OSHpark, ITEAD, Seeed and probably many others.

So, there must be something I’m missing?

I filed it…
[I updated the link because I moved my comment to a new bug file, as suggested by the bug manager]

the reason is summarized as following by the author:
Revision ID:
jp.charras@wanadoo.fr-20151026074330-l735o9z79l6o4wn6
Pcbnew, dialog create drill file: remove option to merge plated holes and not plated holes:
reasons:

  • This option is called “bad practice” in gerber files format specifications and is even forbidden in gerber drill files
  • Generates problems with some board makers because these holes are not identified in a single NC file
  • No one was able to explain us how to identified them in a single NC file
  • Recent change in drill file generation is not compatible with merged holes (minor reason)

if someone wants to add a comment it would help to see if the merging could be added again :slight_smile:

Hm… I have to rethink my support stance in this matter.
Have you seen these @maui?

Seems KiCAD was missing this ‘workaround-the-specs’ feature until 2014?

Also, the gerber specification is the source of this bit:

This option is called “bad practice” in gerber files format specifications and is even forbidden in gerber drill files

https://www.ucamco.com/files/downloads/file/81/the_gerber_file_format_specification.pdf (page 141)

OSH park and any other board house is clearly in “violation of the rules” set forth by the gerber specifications and this kind of behavior is definitely frowned up on.
Now I understand ideal vs real world and in the end the finished product counts, but it’s pretty clear who is to blame here.


The version of GerbView that comes with BZR6097 doesn’t have the option of exporting gerber files though… or it’s a different program, dunno?
http://gerbv.geda-project.org/

And some more googling found this bit ( https://www.reddit.com/r/KiCad/comments/2av8bl/nonplated_through_holes_with_osh_park_and_kicad/ ):

somewhen around July 2014…
It might not be a problem much longer! We’re currently putting in a fix to automatically combine the drill files, so if that works out well then it won’t matter if you have two drill files. For the immediate future, you’d need to merge the files into a single drill file with both plated and non-plated holes. We use GerbV for this, which is pretty quick and easy. If you’d like, you can send the files over and I can help out as well.

Also keep an eye on the Drill File support pages, since I’ll be updating those to show the proper state of the server as soon as our fix goes live. Could be as soon as tomorrow!

Might be time to check up on that with OSH park and not demand work-around-the-spec features from KiCAD?


Don’t see any updates on that page though…

@Joan_Sparky

GerbV version 2.61 (the latest stable) does not support correctly oval drill, so if you merge PTH and NPTH drill files with that tool, you will have a wrong result and you will produce a bad board… and I wouldn’t trust the buggy GerbV beta version (which is not been updated since an year)

I know that kicad is acting in the right way, but at the same time I would appreciate the option to merge the files internally, only when needed to give those files to the ‘blamed’ fabs :slight_smile:

thanks to @Joan_Sparky for pointing out the OSHPark support

"We support both vias (plated holes) and unplated holes. The fab uses 
the presence of copper underneath the drill hit to determine plating. 
Copper  underneath the drill indicates a via/plated hole, no copper 
indicates an unplated hole. "

and espitall (damien-espitallier)
for let me know that

Altium Designer (15.1) default setting is to use only one file. 
It add ";TYPE=PLATED" or ";TYPE=NON_PLATED" before the tool definition list of each kind.

as @firewalker pointed out here

merging option is back :slight_smile:

Yes! Good to hear that! :smile:

Unfortunately, the Ubuntu packages haven’t caught up yet. But they did catch up with the removal of the option. So now I’m stuck and can’t order boards because of this.

I hope developers will understand that they need to be a bit more careful with arbitrary option removal now that KiCad gets used more widely.