Vutrax Drill File Problems - Chapter 2

We have seen a decrease in the number of NC Drill files coming in that lack the drill file sizes (see [chapter one). It still happens regularly, but at least it’s not every order these days.

The newest problem is a very odd incomplete coordinate problem.

http://www.sparkfun.com/tutorial/PCB/NC … Coords.jpg

Our cam software cannot make sense of files like these. They end in CNC and seem to be drill info, but the drill sizes are lacking and either the X or Y coordinate is lacking on some hits.

What software is creating this and does anyone have recommendations on how to fix it?

Customers must now export NC Drill files in the 2.3 trailing format. Drill sizes and full coordinates must be included.

On a side note, how in the world are other PCB fab houses dealing with this nightmare of inconsistant file formats? We are a nobody in the PCB so there must be some very expensive solution via software that I do not know of for all this!

-Nathan](http://www.sparkfun.com/cgi-bin/phpbb/viewtopic.php?t=748)

The lack of drill sizes makes the file useless anyway, however I’d interpret the lack of an X or Y coordinate on some lines to mean that it is unchanged from the previous hole. That would save 38 or 39 coordinate value’s worth of file size on a 40-pin DIP, for example.

It would be easy enough to write a script to fill in the missing coordinates, however there wouldn’t be any point to it unless you were seeing files that had this problem but did have the tool sizes.

Our cam software cannot make sense of files like these. They end in CNC and seem to be drill info, but the drill sizes are lacking and either the X or Y coordinate is lacking on some hits.

The drill file is correct. It’s part of RS274D format, whether for gerber files, drill files, or CNC milling machine files that if the X or Y (or Z!) coordinate doesn’t change then it doesn’t need to appear in a ‘block’.

What software is creating this and does anyone have recommendations on how to fix it?

It doesn’t need fixing because it ain’t broke :wink: If your CAM software can’t read the files then that’s what needs fixing.

The problem of the missing tool definitions is another issue. It used to be quite common for software to export tool files without tool definitions, or gerber files without embedded aperture definitions. That old software would export separate files with tool and aperture information. You can either import these somehow, or type them in to your CAM software manually. I’d say this file came from some older software.

On a side note, how in the world are other PCB fab houses dealing with this nightmare of inconsistant file formats?

We cope with it by understanding the format and some manual editing. I don’t know if you’ve read any my posts complaining about crap drill files output by various packages, but… Now you know why I complain :wink:

Steve.

the ‘modal’ use of x,y coordinates is what is making the php drc difficult, this would create 4 points of a square:

X00001Y00001

Y00006

X00006

Y00001

hehe

What software is creating this?

Vutrax (latest version) does this. Here is an example of the files:

Drill.cnc:

%
T01
X0011657Y0004874
X0011157
X0010657
X0010157
X0009657
X0009157
T02
X0007825Y0000689
X0011325
X0013976Y0000407
Y0003907
X0013404Y000462
Y000562
X0014537Y000564
Y000464
X0015659Y000462
Y000562
X0017717Y000561
X0018717
Y0004567
X0017717
X0018711Y0003573
X0015211
X001748Y0007451
X0018524Y0009325
Y0010325
X0018392Y0011437
X0017688Y0013583
X0015787
X0014838Y0015053
X0015389Y0016116
X0017908Y00171
X0016569Y0018895
X0016136Y0019843
X0017136
X0014657Y0019862
X0013657
X0012657
X0011657
X0010657
X0009657
X0008657
X0007657
X0006161Y0017067
X0007608Y0011762
Y0008262
X0009872Y0007848
Y0008848
X0009675Y001002
X0013474Y0009488
X0013888Y0011437
X0012888
X0014892
X0013578Y0018675
X0005157Y0007195
T03
X0007675Y001698
X0008675
X0018967Y0001693
Y0000693

CNC.nnb:

CNC      0.7                        +0.0 -0.0 A USED  "0.0280 inch dia Drill"  "T01"
CNC      0.9                        +0.0 -0.0 A USED  "0.0360 inch dia Drill"  "T02"
CNC      1.0                        +0.0 -0.0 A USED  "0.0400 inch dia Drill"  "T03"

Summary.asc:

c:\vutrax\work\mpic3_c\mpic3_c.art 20Apr2005 13:28 R0 C ...x\gbr274x.hxy N 
    gerb274x.hnb Q64 V ""VZ5000 (AAAAZ2) H 

Tool Selection Sequence and Usage:-

1.85 Draw/Circular               selected as D15                             
      0 Tracks     0 Rounds,     0 Script Texts &    52 Pads,
        requiring      0 Draws &     52 Flashes
1.0 2.0 Elongated                selected as D16                             
      0 Tracks     0 Rounds,     0 Script Texts &     6 Pads,
        requiring      0 Draws &      6 Flashes

-------------------------------------------------------------------------------

If it is just the way I am doing things and someone knows how to get Vutrax to output just one file please let me know.

I have submitted these files to SFE and hope that they can get it to work, If they can and send me the new merged drill file I will write an app to merge the files.

This could be done in PHP as a SFE upload page, the customer could select the format / layout program used then the PHP could do the combining for SFE.

Updated - Just Saw the NEW Online DRC, Great Job guys.

Hi Lucky,

From the sample you gave, your file should start like this:-

M48

INCH,LZ

T01C0.028

T02C0.036

T03C0.04

%

T01

X0011657Y0004874

…etc.

M48 = Start of header

INCH,LZ = Inch mode, leading zeroes used

TnnCmmm = tool number and diameter

% = end of header

Unfortunately, in Excellon format there’s no way of specifying the digit format. That is, how many integer and fractional digits make up the coordinates. Actual Excellon machines only use 2.4 format for INCH, though, so when in doubt that’s the one to use.

Your coordinates have 7 digits, so… they might be 3.4 or 4.3 or…

Sparky has requested 2.3 trailing zero mode, so it might be worth checking your software options to see if you can do this.

Steve.

Hi Steve,

Thank you for your help. After playing with the settings again today I have got what looks to be a good file:

M48
METRIC,TZ,0000.00
T01C0.70
T02C0.90
T03C1.00
%
T01
X2961Y1238
X2326
X2707
X2580
X2453
X2834
T02
X1988Y175
X2877
X3550Y104
X3864Y908
X3693Y1433
X3978Y1428
Y1174
X3405
Y1428
X3423Y2410
X3274Y2905
X3528
X3783
X4705Y2623
X4672Y2905
X4440Y1893
X4500Y1160
Y1425
X3693Y1179
X4754Y1160
Y1425
X4705Y2369
X4493Y3450
X3769Y3824
X3909Y4094
X3449Y4744
X4353Y5040
X4099
X3723Y5045
X2961
X3215
X4209Y4799
X3469Y5045
X2453
X2707
X2199
X1945
X1565Y4335
X1933Y2988
Y2099
X2458Y2545
X2508Y1994
Y2248
X1310Y1828
X3550Y993
X4753Y908
X4010Y3450
X4549Y4344
T03
X2204Y4313
X1950
X4818Y430
Y176
T00
M30

but I now have the problem that when imported into GC Prevue on top of one of the Gerber layers the two don’t line up. I can’t see any obvious way to change this in Vutrax.

lucky:
but I now have the problem that when imported into GC Prevue on top of one of the Gerber layers the two don’t line up. I can’t see any obvious way to change this in Vutrax.

When you import your drill.cnc file into GC-Prevue, you probably need to change the format from 3.4 to 4.3. Right after you select the drill.cnc file, the **Import - Verify File Information** window pops up. Double-click on this line: 3.4 / Abs / inches / Trailing. The **Load Drill data** window will then pop up. Change Whole Digits from 3 to 4 and Precision from 4 to 3.

Don

Thanks for wading through all this lucky! Sounds like you are exporting RS274D format? Can you look to see if you can export RS274X format? You’ve got the sizes included which is a huge step. Now we would like to see the full x and y coordinates.

Vutrax - I’ll change the topic name.

-Nathan

For what it is worth…

I am using Cadence Allegro and am having similar problems with my drill file. I have submitted many (100s) of RS274X files to other services without problems. I never gave the file too much thought, but looking at it I see that my file only lists the drill sizes in the header of the file and appears to be commented out. I also have seen the incomplete XY information sometimes as mentioned in the beginning of this thread.

;LEADER: 12

;HEADER:

;CODE : ASCII

;FILE : ncdrill1 for layers TOP and BOTTOM

;Holesize 1. = 13.000000 PLATED MILS

;Holesize 2. = 32.000000 PLATED MILS

;Holesize 3. = 35.000000 PLATED MILS

;Holesize 4. = 43.000000 PLATED MILS

;Holesize 5. = 93.000000 PLATED MILS

G90

X00600Y00975

X00625Y02175

I have found a few interesting things on my way hopefully to a resolution. Allegro has a repeat codes option. When unchecked, the file appears to skip the X or the Y if it was the same on the previous hole. If I check it, I get XY for all holes. There is also a Auto Tool Select option. If you check this and provide an nc_tools.txt file with drill information like below the drill sizes will appear in the file.

20 P T01C0.020

32 P TO2C0.032

35 P TO3C0.035

43 P TO4C0.043

93 P TO5C0.093

There is also an option for the the decimal format. The thread above appears to suggest 2.3 is prefered.

I think some of the other services I have used must have been manually editing the files for me. I can see at $2.50 or $5.00 per square inch you don’t want to touch the files. If I finally get my drill file to work, I will post a complete write up on how to do it with Allegro.

PS: I am a big fan on all things Sparkfun. I have turned on a lot of people to your site. Let’s get the kinks worked out of this drill file issue and get back to having fun :stuck_out_tongue:

Hi all, and thanks for your help.

I think I have cracked it! I had to create a new .NXY rule file for Vutrax. I was able to get full X,Y OR Drill info using the standard Vutrax files but not both, so with a bit of merging in textpad I created Sparkfun.nxy and it seems to work.

M48
METRIC,TZ,0000.00
T01C0.70
T02C0.90
T03C1.00
%
T01
X02961Y01238
X02326Y01238
X02707Y01238
X02580Y01238
X02453Y01238
X02834Y01238
T02
X01988Y00175
X02877Y00175
X03550Y00104
X03864Y00908
X03693Y01433
X03978Y01428
X03978Y01174
X03405Y01174
X03405Y01428
X03423Y02410
X03274Y02905
X03528Y02905
X03783Y02905
X04705Y02623
X04672Y02905
X04440Y01893
X04500Y01160
X04500Y01425
X03693Y01179
X04754Y01160
X04754Y01425
X04705Y02369
X04493Y03450
X03769Y03824
X03909Y04094
X03449Y04744
X04353Y05040
X04099Y05040
X03723Y05045
X02961Y05045
X03215Y05045
X04209Y04799
X03469Y05045
X02453Y05045
X02707Y05045
X02199Y05045
X01945Y05045
X01565Y04335
X01933Y02988
X01933Y02099
X02458Y02545
X02508Y01994
X02508Y02248
X01310Y01828
X03550Y00993
X04753Y00908
X04010Y03450
X04549Y04344
T03
X02204Y04313
X01950Y04313
X04818Y00430
X04818Y00176
T00
M30

I will re-submit this file and if it gets through OK then I will put Sparkfun.nxy on my website / let Sparky put it up on this site for anyone else that uses Vutrax.

M48

METRIC,TZ,0000.00

T01C0.70

T02C0.90

T03C1.00

%

I'll take back some of the nasty things I've said about PCB CAD programmers. The people at Vutrax obviously know what they're doing ;)

Ooops, I’ll just reconfirm my original opinion. That drill file is actually incorrect.

The header specifies 6 digits with trailing zeroes.

METRIC,TZ,0000.00

But this line, for example, has a leading zero, no trailing zero, and is only 5 digits.

X02961Y01238

Also, the Tool selection at the end of the file:-

T00 ← Is an error. Tools number starting from 1

M30

Oh well… :wink:

You know, for nearly 9 years I’ve been wondering whether it’s valid to specify the digit format the way it’s specified in that Vutrax drill header. That is, the 0000.00 part.

By coincidence, today I finally found an Excellon manual that defines it clearly. The previous Excellon manuals I’ve read were so poorly written that I couldn’t figure out whether the 0000.00 was supposed to be in the drill file or if it was just an example.

My boss bought three massive old Excellon multihead drill machines from a company that was closing down, and he got them very cheap :wink: The manuals for them turned up today, so I spent half the afternoon reading them and it was nice to finally get an old question answered :wink:

Now that I know the rules, I’ll share them.

The resolution of Excellon drill machines (meaning the motor encoders combined with the screw that drives the table movement) is 2.5 microns, or very close to 0.0001"

So, in INCH mode, all real Excellon files are in 00.0000 mode and the manual defines the INCH specification as:-

INCH(,Z) where Z is optional and can be either LZ or TZ. If you don’t specify LZ or TZ, the last setting will be used, or the machine will default to LZ mode if there was no previous setting.

METRIC(,F)(,Z) where Z is as above, and F can be one of 000.00, 0000.00, or 000.000

Decimal points are allowed in coordinate data, and if present will override the current (,F) and (,Z) setting.

But I know for a fact that some PCB CAM software doesn’t recognise decimal points in drill files.

Steve.

Hi Steve,

Thanks for looking at this. I spotted the 0000.00 but had assumed that this was not read by the machine. I could not find a way to change this.

I am waiting for Ben @ SFE to come back to me.

Thanks for looking at this. I spotted the 0000.00 but had assumed that this was not read by the machine. I could not find a way to change this.

A real Excellon drill controller will understand the 0000.00 (at least in METRIC mdoe) but I suspect that very few CAM programs will recognise it. However, any future software I write will use that method of specifying interger/fraction digits.

There’s no other way of specifying digit format inside a drill file, and if someone tries to load it into a CAM program that doesn’t recognise it, at least they can edit the drill file, learn what the format is supposed to be, and delete it quite easily.

hehe… A funny thing just happened…

I checked the output from a drill editor I wrote years ago and I already support that method :wink:

M48

VER,1

FMAT,2

METRIC,TZ,0000.00

T01C0.7112

T10C0.8128

%

M71

G90

G05

T01

X4166Y29464

Y29591

So, there you go… I’m already way ahead of myself…

On the other hand, I did a bad job of rounding off the tool sizes. The drills we use are metric, so… 0.75 and 0.85 would probably be better choices.

Steve.

Steve:
I’ll take back some of the nasty things I’ve said about PCB CAD programmers. The people at Vutrax obviously know what they’re doing :wink:

Vutrax does seem to be very good but it is not very user friendly (from a software engineers point of view).

I will take another look to see if I can remove or edit the 0000.00 from within the code, but if not I will just hand edit the file.

Thanks again Steve.

Just to poke in - we got 12 inches of snow last night and Ben wasn’t able to make his commute. PCBs will be review on Monday.

Spring in Boulder can be soggy and sometimes very snowy.

-Nathan

There have been several comments about 2.3 being the preferred format for drill files. My first board, which i just received, used 2.4 format and it came out fine. In fact it appeared to pass DRC without any problems since I got no comments back from SFE so I assume this format is fine also and caused no problem with your software.

I assume that you do not modify files without letting us know.

Please let me know if this is not true.

Thanks,

Bob Gardner

just out of curiosity, does 2.4 format pass the Online DRC?

Thanks,

  • Martyn

Hi Bob,

I assume that you do not modify files without letting us know.

Please let me know if this is not true.

Also just out of curiousity, would you consider it a bad thing if your drill files lost that last digit of precision (2.4 → 2.3) during processing?

Steve.

Martyn,

I just ran the drill file through the online DRC checker and it passed just fine.

Steve,

Losing the 4th decimal place would not be a problem especially since they all are zero anyway.

I’m actually using an older program called PC Trace which doesn’t appear to be supported any longer. The 274X export feature actually produces two drill files - one with the drill sizes and one with the coordinates. I merge the two files manually. Maybe I’ll make the switch to FreePCB - it has some nice features, besides being free.

I guess this means I am good to go with 2.4 for the time being.

Thanks,

Bob