Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-30 Thread dfro

Markus,

I will add the patch and give it a try.

How and when do your latest gcode patches get merged into the main branch?

Thanks,
Dave

On 11/29/2010 09:25 AM, Markus Hitter wrote:


Am 16.11.2010 um 22:51 schrieb d...@umich.edu:


However, the gcode export always crashes if I try to define the
outline with a rectangle.


It crashed also when the outline layer contains only a single vertical
or horizontal line. Fixed in a new patchset:

http://sourceforge.net/tracker/index.php?func=detailaid=3100354group_id=73743atid=538813



Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user






___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-29 Thread Markus Hitter


Am 16.11.2010 um 22:51 schrieb d...@umich.edu:

However, the gcode export always crashes if I try to define the  
outline with a rectangle.


It crashed also when the outline layer contains only a single  
vertical or horizontal line. Fixed in a new patchset:


http://sourceforge.net/tracker/index.php? 
func=detailaid=3100354group_id=73743atid=538813



Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-16 Thread dfro

Markus,

The outline layer is working fine now, when I draw a rectangle with 
lines - even a sloppy rectangle where the lines have kinks, or an 
unclosed rectangle. The exporter adds the tool offset as well. Very 
nice! However, the gcode export always crashes if I try to define the 
outline with a rectangle.


I have not been able to replicate my earlier problem. I must have really 
made a big mistake.


Thanks,
Dave

On 11/15/2010 09:44 AM, Markus Hitter wrote:


Am 15.11.2010 um 06:55 schrieb d...@umich.edu:


I tried to draw an outline in an 'outline' layer and 'pcb' just turned
the trace lines into an isolation routing outline.


Ouch. This shouldn't happen. Did you apply all 24 patches? If yes, could
you send me (not to the list) the .pcb file showing this behaviour ?


I must not be getting your explanation. Do I use a rectangle in the
'outline' layer to define the outline?


Exactly. A rectangle, or any number of lines drawing another area.
Milled is always a rectangle, though.


Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user






___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-15 Thread Markus Hitter


Am 15.11.2010 um 06:55 schrieb d...@umich.edu:

I tried to draw an outline in an 'outline' layer and 'pcb' just  
turned the trace lines into an isolation routing outline.


Ouch. This shouldn't happen. Did you apply all 24 patches? If yes,  
could you send me (not to the list) the .pcb file showing this  
behaviour ?


I must not be getting your explanation. Do I use a rectangle in the  
'outline' layer to define the outline?


Exactly. A rectangle, or any number of lines drawing another area.  
Milled is always a rectangle, though.



Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-15 Thread Stephan Boettcher
Markus Hitter m...@jump-ing.de writes:

 Exactly. A rectangle, or any number of lines drawing another
 area. Milled is always a rectangle, though.

Hmm, why?  The outline layer is especially useful for boards that are
not rectangular shaped.  

-- 
Stephan


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-15 Thread Markus Hitter


Am 15.11.2010 um 18:06 schrieb Stephan Boettcher:


Markus Hitter m...@jump-ing.de writes:


Exactly. A rectangle, or any number of lines drawing another
area. Milled is always a rectangle, though.


Hmm, why?  The outline layer is especially useful for boards that are
not rectangular shaped.


As I explained earlier, simply because nobody implemented it yet. The  
spot in the code is even marked with a comment.



Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-14 Thread dfro

Markus,

I have figured out how to add your 24 patches with git, I recompiled 
'pcb', and I am trying out the new version.


The grouping of the drill operation for different drill sizes is great. 
Adding a tool table might be cool.  There could be a field in the 
Preferences window, where the user enters the path to their tool table. 
That way tool change g-code (M06) could be easily added, with a set of 
Tool Function (T) numbers and bit diameters that match the designer's 
machine. I would again suggest copying emc2's .tbl file format in case 
you or another 'pcb' programmer might want to create a window where 
people can read, edit, and write their emc2 tool table directly from 
'pcb'. If someone is using another nc program, the 'pcb' tool table just 
gets stored in the emc2 format.


Here is a sample of the sim.tlb file when emc2 is first installed:

...
T1 P1 D0.125000 Z+0.511000 ;1/8 end mill
T2 P2 D0.062500 Z+0.10 ;1/16 end mill
T3 P3 D0.201000 Z+1.273000 ;#7 tap drill
T9 P9 Z+0.10 ;big tool number
...


In regards to cutting the board outline:

What I am noticing is that the global board dimensions set in 
Preferences get turned into a xxx-outline.cnc file. Correct?


I think there should be an outline layer in the main window (along 
with the solder, component, and other layers in 'pcb') where you can 
draw your outline with a trace line. This way the pcb designer can 
create complex or odd shaped board outlines; or, they can add breaks in 
the outline traces, which will end up as tabs that get easily cut and 
filed smooth when the board is done. They can also deal with offsetting 
by first setting the trace line to the width of their milling bit and 
then drawing the line so that its edge just touches their ground plane 
rectangle, for example.


Also, a box to input the feed rate (F) would be nice.

Thanks for the great work!

Dave

On 11/12/2010 03:15 AM, Markus Hitter wrote:


Am 12.11.2010 um 01:58 schrieb d...@umich.edu:


Markus,

That is good news.

Could someone tell be how to add these files to the current
pcb-20100929 source download and recompile?


Use

git am  00xxx.patch

Recompilation is done as before, not even a configure run is needed.



On page 1 of the LPKF brochure
(http://www.lpkfusa.com/datasheets/prototyping/rp_brochure.pdf ), it
shows a screenshot of their pcb artwork software. The thick grey
traces are used to route the border of the part. I noticed the breaks
in the trace in order to create attachment tabs, which you can see in
the picture to the right of the mill making some boards.

You could have a field in the g-code export window where you can
choose a layer from pcb, which contains the traces for the border
routing operation. The user can customize with a simple series of
thick (or thin) traces exactly what shape they want the pcb border to
be, i.e. with or without tabs, what diameter endmill to use, etc.


This layer is there already, it's the one named outline, all lower
case. What isn't there is code to calculate the offset of the lines and
polygons on this layer, as I couldn't find existing functions in the
remaining pcb source code and I lack the resources to write it myself.

So, feel free to add this. The 0023 patch roughly shows a good place to
start.


Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user






___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-14 Thread Markus Hitter


Am 13.11.2010 um 11:43 schrieb d...@umich.edu:

I will keep R-ing the F-ing M's to try and figure out what git  
am  00xxx.patch means.


It's a command to be typed in the command line. Replace the xxx  
with the corresponding name of the actual patch file, of course.


To apply all patches without getting thick fingers, here's a small  
script, also to be typed in a terminal/bash shell:


for F in 00*.patch; do
git am  $F
done

Before doing so, you have to download all of them, of course.


Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-14 Thread Markus Hitter


Am 14.11.2010 um 10:38 schrieb d...@umich.edu:

I have figured out how to add your 24 patches with git, I  
recompiled 'pcb', and I am trying out the new version.


That's great. Just a second before I sent further comments :-)


Adding a tool table might be cool.


As far as I understand, this is done in pcb on a different level:

http://pcb.gpleda.org/pcb-cvs/pcb.html#Vendor-drill-mapping

Didn't test it yet, though.


In regards to cutting the board outline:

What I am noticing is that the global board dimensions set in  
Preferences get turned into a xxx-outline.cnc file. Correct?


If there is no outline layer, yes.

I think there should be an outline layer in the main window  
(along with the solder, component, and other layers in 'pcb')  
where you can draw your outline with a trace line.


Sure, go ahead and create it. You create layers somewhere in  
preferences. I hope the exporter's behaviour is correct for both,  
adding the outline layer to the component side as well as adding it  
to the solder side. In the later case, general milling is mirrored,  
just like isolation milling.


Not that mirroring an x-y-aligned rectangle changes anything, but  
with some luck somebody will find the time to implement milling of  
complex outlines one day.



Also, a box to input the feed rate (F) would be nice.


Yepp, that's on the to do list. Five feedrates: isolation milling  
approach, isolation milling work, drilling approach, general milling  
approach, general milling work. Many tools prefer different feedrates  
for vertical vs. horizontal movements.



Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-14 Thread dfro

Markus,

Thanks for the note.

On 11/14/2010 05:55 AM, Markus Hitter wrote:


Am 14.11.2010 um 10:38 schrieb d...@umich.edu:


I have figured out how to add your 24 patches with git, I recompiled
'pcb', and I am trying out the new version.


That's great. Just a second before I sent further comments :-)



No problem. I learned a lot about git, while trying to get your patches 
working. Now I am going to use git on a dozen other personal projects I 
have going. So, thanks for writing those juicy patches that forced me to 
RTFM:


http://progit.org/book/

The explanation of 'git am' in there was enough to get me back in business.


Adding a tool table might be cool.


As far as I understand, this is done in pcb on a different level:

http://pcb.gpleda.org/pcb-cvs/pcb.html#Vendor-drill-mapping

Didn't test it yet, though.



Vendor drill mapping is a great feature. I did not know it was there. I 
will definitely use it, now that I know about it. A tool table would 
contain a lot more information, though, and have a very different 
purpose than quantizing the holes in a pcb design.


An EMC2 .tbl file in mill format contains a table with a Pocket 
column, and FMS column (the T numbers which coincide with a user's 
machine), a TLO column representing tool length offset, a Diameter 
column, and a Comment column - i.e. 1/16 end mill


If you are interested, check out section 9.4 of the EMC2 User Manual:

http://linuxcnc.org/docs/EMC2_User_Manual.pdf
http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?EmcKnowledgeBase

Having said this, The drill grouping and comments in the 'pcb' generated 
g-code make it very easy for a user to find the drill bit/end mill 
changes and add the M06/Txx lines for their machine by hand.



In regards to cutting the board outline:

What I am noticing is that the global board dimensions set in
Preferences get turned into a xxx-outline.cnc file. Correct?


If there is no outline layer, yes.


I think there should be an outline layer in the main window (along
with the solder, component, and other layers in 'pcb') where you
can draw your outline with a trace line.


Sure, go ahead and create it. You create layers somewhere in
preferences. I hope the exporter's behaviour is correct for both, adding
the outline layer to the component side as well as adding it to the
solder side. In the later case, general milling is mirrored, just like
isolation milling.

Not that mirroring an x-y-aligned rectangle changes anything, but with
some luck somebody will find the time to implement milling of complex
outlines one day.



I agree. Milling of complex outlines would be a great feature.

I will have to play with this more to figure out how it currently works. 
I tried to draw an outline in an 'outline' layer and 'pcb' just turned 
the trace lines into an isolation routing outline.


I must not be getting your explanation. Do I use a rectangle in the 
'outline' layer to define the outline?



Also, a box to input the feed rate (F) would be nice.


Yepp, that's on the to do list. Five feedrates: isolation milling
approach, isolation milling work, drilling approach, general milling
approach, general milling work. Many tools prefer different feedrates
for vertical vs. horizontal movements.



Great!

Thanks,
Dave


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-13 Thread dfro

Markus,

I cloned and compiled the latest pcb.git version. The program runs, but 
I don't think the latest g-code patches are in there. Could you 
elaborate a little more on what I have to do to get the latest g-code 
patches in my pcb source file? I will keep R-ing the F-ing M's to try 
and figure out what git am  00xxx.patch means.


Thanks,
Dave

On 11/12/2010 03:15 AM, Markus Hitter wrote:


Am 12.11.2010 um 01:58 schrieb d...@umich.edu:


Markus,

That is good news.

Could someone tell be how to add these files to the current
pcb-20100929 source download and recompile?


Use

git am  00xxx.patch

Recompilation is done as before, not even a configure run is needed.






___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-11 Thread Markus Hitter


Am 11.11.2010 um 05:11 schrieb d...@umich.edu:

I like that the gound plane outline is machined. The circular pads  
could use some more lines to round them out. Have you thought about  
programming g-code arcs (G02, G03) for them? HeeksCAD/CNC does this  
(see below).


Using G02/G03 isn't trivial, as the isolation milling paths aren't  
calculated by offseting all the existing lines and pads by some  
geometric calculation, but by drawing all the traces, widened by the  
tool radius, to a pixel-based intermediate image, then figuring the  
required paths from there. All this algorithm was done by Alberto  
Maccioni and some research brought up the statement, this is the only  
reliable way for offseting all the traces. Doing exact offsets is  
said to fail in edge cases.


If you want more precision, you can raise the accuracy, which is set  
to 600 dpi = 1.7 mil by default.


Having a dxf file allows people to tweak all of the milling  
variables (depths of cut, jogs, feed rates, number of passes,  
pocketing, drilling, etc) in a CAM program, rather than go through  
the g-code by hand.


Except for multiple passes and clearing out pockets completely, this  
functionality exists already. Feed rates have to be hand-edited in  
the resulting file currently - a single spot near the top of the file  
- but this is a subject to change soon.


A few tests with Eagle's G-code exporter using multiple passes show  
results worse than with a single pass, but your mileage may vary  
here. You need a really stiff and precise machine for such things, as  
the typical engraving tips are more pressing the copper aside than  
really cutting it.


An DXF exporter would be an entirely different exporter and good luck  
finding an algorithm to connect all the lines and circles together.


That said, you can use the PostScript exporter and load that into  
Inkscape. Create an outline path for all the lines there, stitch  
everything together and export it to G-code with Inkscape's G-code  
functionality (an add-on) - and you'll soon be happy with pcb's G- 
code exporter als any attempt via the DXF route is a lot more work. :-)



Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-11 Thread dfro

Markus,

Thanks for the reply. I tried the 'gEDA - Inkscape - pstoedit - dxf' 
route and was not happy with the round-off errors that Inkscape 
introduced into the image.


In 'pcb', I tried a dpi of 2000 in the g-code exporter and the resulting 
pcb image is beautiful! FOSS pcb milling has arrived!


With a dxf file, in a CAM program, you can program your fine line 
cutting with a tiny v bit, then program a pocket operation with a larger 
bit to remove the remaining copper.


I have started trying to find the specifications for the dxf file format 
on the web to study. Here are my initial thoughts on adding a dxf 
exporter that builds on the pcb g-code exporter:


You could have a process that first produces g-code with a mill bit of 
0.000 diameter and 0.000 depth of cut. Take out all of the G0-rapid 
positioning code and the G1 code with Z information. Then, take the 
g-code line plots and do a (fairly simple, I think) conversion of all 
the line plots to dxf format. Save the file. Now you have a dxf with all 
the lines at 0 on the Z axis. What do you think?


Other thoughts on the g-code exporter (which I am sure you have thought 
about, and are in the works);


The drill xxx.gcode.drill.cnc file goes through the board drilling all 
of the holes without differentiating the different drill sizes (found in 
the xxx.fab.gbr file). And, there are no tool change g-codes for 
changing between drill sizes.


I think it is important to at least organize the drilling operations by 
drill size - generate g-code for one drill size, then the next, ext. 
Also, it would be helpful if the exporter generated some notes in each 
g-code drilling block specifying which drill size is being drilled. The 
cnc machinist can find those spots easily and add the tool change codes 
as needed, by hand.


If tool change options are added to the g-code exporter, you would 
probably want to read and write to a tool table file, so all of the tool 
numbers match the tool table for a particular machine. You could 
possibly code it to directly read EMC2's tool table file. (example 
location: ~/emc2/configs/sim/sim.tbl). The emc2 users manual explains 
the format.


Thanks,
Dave

On 11/11/2010 04:28 AM, Markus Hitter wrote:


Am 11.11.2010 um 05:11 schrieb d...@umich.edu:


I like that the gound plane outline is machined. The circular pads
could use some more lines to round them out. Have you thought about
programming g-code arcs (G02, G03) for them? HeeksCAD/CNC does this
(see below).


Using G02/G03 isn't trivial, as the isolation milling paths aren't
calculated by offseting all the existing lines and pads by some
geometric calculation, but by drawing all the traces, widened by the
tool radius, to a pixel-based intermediate image, then figuring the
required paths from there. All this algorithm was done by Alberto
Maccioni and some research brought up the statement, this is the only
reliable way for offseting all the traces. Doing exact offsets is said
to fail in edge cases.

If you want more precision, you can raise the accuracy, which is set to
600 dpi = 1.7 mil by default.


Having a dxf file allows people to tweak all of the milling variables
(depths of cut, jogs, feed rates, number of passes, pocketing,
drilling, etc) in a CAM program, rather than go through the g-code by
hand.


Except for multiple passes and clearing out pockets completely, this
functionality exists already. Feed rates have to be hand-edited in the
resulting file currently - a single spot near the top of the file - but
this is a subject to change soon.

A few tests with Eagle's G-code exporter using multiple passes show
results worse than with a single pass, but your mileage may vary here.
You need a really stiff and precise machine for such things, as the
typical engraving tips are more pressing the copper aside than really
cutting it.

An DXF exporter would be an entirely different exporter and good luck
finding an algorithm to connect all the lines and circles together.

That said, you can use the PostScript exporter and load that into
Inkscape. Create an outline path for all the lines there, stitch
everything together and export it to G-code with Inkscape's G-code
functionality (an add-on) - and you'll soon be happy with pcb's G-code
exporter als any attempt via the DXF route is a lot more work. :-)


Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user






___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-11 Thread Alberto Maccioni
 All this algorithm was done by Alberto Maccioni and some research brought up
 the statement, this is the only reliable way for offseting all the traces.
Actually the algorithm is not mine, it comes from potrace, a tracing
program by Peter Selinger (as you can see in the source code copyright
notice).
Tracing involves a fair amount of mathematical analyses and his code
gives excellent results with equally great efficiency.
I just took the algorithm, stopped the tracing process before bezier
curves extraction, and adapted it to the png exporter.
HeeksCNC algorithm in comparison is extremely primitive and naive, and
it doesn't even work in many conditions, for example very sharp edges
cause it to crash completely.

With a dxf file, in a CAM program, you can program your fine line cutting with 
a tiny v bit, then program a pocket operation with a larger bit to remove the 
remaining copper.
Are you sure you want to do this? Is it for aesthetic reasons or
because of better isolation?
Besides thrashing large amounts of bits and requiring hours of work it
won't make your pcb's work better; if you need good isolation it's
better to insert several traces between the ones you want to isolate.

Have you thought about programming g-code arcs (G02, G03) for them? 
HeeksCAD/CNC does this
Once your resolution is high enough there's no difference between a
line path and an arc.
Detecting arcs would be extremely complicated; you can't describe a
generic curve with arcs, so the original tracing algorithm uses bezier
curves; you would need to check when a series of beziers are close
enough to an arc. Does this make your end product better? Not at all,
so it's not even worth to try, in my opinion.
A dxf export could however be useful.

The drill xxx.gcode.drill.cnc file goes through the board drilling all of the 
holes without differentiating the different drill sizes (found in the 
xxx.fab.gbr file). And, there are no tool change g-codes for changing between 
drill sizes.
The drill file generation is being improved with separation between
different sizes and better comments; if you have in mind a good
sequence of commands for switching between drill bits please  let us
know.

Best regards,
Alberto


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-11 Thread dfro

Alberto,

Thanks for the comments.

On 11/11/2010 04:24 PM, Alberto Maccioni wrote:

All this algorithm was done by Alberto Maccioni and some research brought up
the statement, this is the only reliable way for offseting all the traces.

Actually the algorithm is not mine, it comes from potrace, a tracing
program by Peter Selinger (as you can see in the source code copyright
notice).
Tracing involves a fair amount of mathematical analyses and his code
gives excellent results with equally great efficiency.
I just took the algorithm, stopped the tracing process before bezier
curves extraction, and adapted it to the png exporter.
HeeksCNC algorithm in comparison is extremely primitive and naive, and
it doesn't even work in many conditions, for example very sharp edges
cause it to crash completely.



For me, HeeksCAD/CNC crashes on everything but the most simple gerber 
artwork files. They have a ways to go on the conversion. Maybe Dan Heeks 
could take some code from the (sweet!) pcb g-code exporter.




With a dxf file, in a CAM program, you can program your fine line cutting with a 
tiny v bit, then program apocket operation with a larger bit to remove the 
remaining copper.

Are you sure you want to do this? Is it for aesthetic reasons or
because of better isolation?
Besides thrashing large amounts of bits and requiring hours of work it
won't make your pcb's work better; if you need good isolation it's
better to insert several traces between the ones you want to isolate.



I would like to remove floating copper for RF and static electricity 
reasons. The 'pcb' program thinks that floating copper is enough of an 
issue to have code to detect and remove it.


I have seen blogs where guys take tweezers and rip the floating copper 
off the boards they have isolation milled. I would like to have the cnc 
machine do it. I agree that it will destroy lots of bits, though. It is 
a trade-off between disposable etching chemicals and disposable bits.


A company called LPKF make very nice (and expensive I am sure) pcb 
mills, bundled with software that pockets out all of the unwanted copper:


http://www.lpkfusa.com/protomat/s-series.htm
http://www.lpkfusa.com/datasheets/prototyping/rp_brochure.pdf

They are beautiful machines that make beautiful pcb's.

I am going to make a very rigid, accurate pcb milling machine out of 
epoxy-granite. Here is my build blog (with pics) on a cnc lathe that is 
part E-G:


http://www.cnczone.com/forums/vertical_mill_lathe_project_log/42308-diy_benchtop_lathe_project-2.html


Have you thought about programming g-code arcs (G02, G03) for them? 
HeeksCAD/CNC does this

Once your resolution is high enough there's no difference between a
line path and an arc.
Detecting arcs would be extremely complicated; you can't describe a
generic curve with arcs, so the original tracing algorithm uses bezier
curves; you would need to check when a series of beziers are close
enough to an arc. Does this make your end product better? Not at all,
so it's not even worth to try, in my opinion.
A dxf export could however be useful.



I think the 2000 dpi output is great!

You coding wizards can do in a minute what would take me a month, but I 
would like to try writing a g-code to dxf conversion program in C. 
Thanks, Stephen Ecob for the jump start!


Stephen,
Some of the function calls seem to be missing from your dxf.c program, 
like DxfStart(); and DxfFinish();.

Do you feel like posting those, also?


The drill xxx.gcode.drill.cnc file goes through the board drilling all of the holes 
without differentiating thedifferent drill sizes (found in the xxx.fab.gbr file). 
And, there are no tool change g-codes for changingbetween drill sizes.

The drill file generation is being improved with separation between
different sizes and better comments; if you have in mind a good
sequence of commands for switching between drill bits please  let us
know.



I will organize my thoughts on how tool changing might be implemented in 
'pcb' g-code export.


Thanks,
Dave


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-11 Thread Stephen Ecob
On Fri, Nov 12, 2010 at 9:31 AM,  d...@umich.edu wrote:

 I think the 2000 dpi output is great!

 You coding wizards can do in a minute what would take me a month, but I
 would like to try writing a g-code to dxf conversion program in C. Thanks,
 Stephen Ecob for the jump start!

 Stephen,
 Some of the function calls seem to be missing from your dxf.c program, like
 DxfStart(); and DxfFinish();.
 Do you feel like posting those, also?

Oh yes, you'll need those!  I'll send them to you off list.
Stephen


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-11 Thread Markus Hitter


Am 11.11.2010 um 20:28 schrieb d...@umich.edu:

The drill xxx.gcode.drill.cnc file goes through the board drilling  
all of the holes without differentiating the different drill sizes  
(found in the xxx.fab.gbr file). And, there are no tool change g- 
codes for changing between drill sizes.


You have an old version of the G-code exporter. Ths sorting is done  
already, just the T command is missing. See:


http://sourceforge.net/tracker/index.php? 
func=detailaid=3100354group_id=73743atid=538813


That said, I plan to mill bigger holes with the mill bit: drill with  
a 0.8 mm bit, do an outline mill with an 1.0 mm bit and everything is  
appropriate with just one tool change.



Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-11 Thread dfro

Markus,

That is good news.

Could someone tell be how to add these files to the current pcb-20100929 
source download and recompile? Otherwise, I will have to wait on the 
next source snapshot, which is fine. I would love to see the latest 
patches, though.


I do not know how your '0023-board outline milling' patch works, but I 
would like to share a thought:


On page 1 of the LPKF brochure 
(http://www.lpkfusa.com/datasheets/prototyping/rp_brochure.pdf ), it 
shows a screenshot of their pcb artwork software. The thick grey traces 
are used to route the border of the part. I noticed the breaks in the 
trace in order to create attachment tabs, which you can see in the 
picture to the right of the mill making some boards.


You could have a field in the g-code export window where you can choose 
a layer from pcb, which contains the traces for the border routing 
operation. The user can customize with a simple series of thick (or 
thin) traces exactly what shape they want the pcb border to be, i.e. 
with or without tabs, what diameter endmill to use, etc.


Thanks,
Dave


On 11/11/2010 07:14 PM, Markus Hitter wrote:


Am 11.11.2010 um 20:28 schrieb d...@umich.edu:


The drill xxx.gcode.drill.cnc file goes through the board drilling all
of the holes without differentiating the different drill sizes (found
in the xxx.fab.gbr file). And, there are no tool change g-codes for
changing between drill sizes.


You have an old version of the G-code exporter. Ths sorting is done
already, just the T command is missing. See:

http://sourceforge.net/tracker/index.php?func=detailaid=3100354group_id=73743atid=538813


That said, I plan to mill bigger holes with the mill bit: drill with a
0.8 mm bit, do an outline mill with an 1.0 mm bit and everything is
appropriate with just one tool change.


Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/







___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user






___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-11 Thread Rick Collins

At 05:31 PM 11/11/2010, you wrote:

Alberto,

Thanks for the comments.

On 11/11/2010 04:24 PM, Alberto Maccioni wrote:

With a dxf file, in a CAM program, you can program your fine line 
cutting with a tiny v bit, then program apocket operation with a 
larger bit to remove the remaining copper.

Are you sure you want to do this? Is it for aesthetic reasons or
because of better isolation?
Besides thrashing large amounts of bits and requiring hours of work it
won't make your pcb's work better; if you need good isolation it's
better to insert several traces between the ones you want to isolate.


I would like to remove floating copper for RF and static electricity 
reasons. The 'pcb' program thinks that floating copper is enough of 
an issue to have code to detect and remove it.


I have seen blogs where guys take tweezers and rip the floating 
copper off the boards they have isolation milled. I would like to 
have the cnc machine do it. I agree that it will destroy lots of 
bits, though. It is a trade-off between disposable etching chemicals 
and disposable bits.


My understanding is that the bits tend to break just at the tip of 
the conical bit.  The broken bits can still be used for removing the 
floating copper perhaps.  This may not apply to your machine as this 
was a very old machine I saw being used.



Rick  




___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Comments on pcb's g-code exporter HeeksCAD/HeeksCNC FOSS program for pcb milling

2010-11-10 Thread dfro

At 2000 dpi the curved traces look great on EMC2/Axis!

On 11/10/2010 11:11 PM, d...@umich.edu wrote:

The g-code exporter looks great! Right now I am looking at EMC2 simulate
the milling of a pcb design!!

I like that the gound plane outline is machined. The circular pads could
use some more lines to round them out. Have you thought about
programming g-code arcs (G02, G03) for them? HeeksCAD/CNC does this (see
below).

Please, consider a dxf export of the outline so that users can put the
artwork into a cam program that can pocket out all of the copper, and
make the board look just like the pcb program's artwork.

Having a dxf file allows people to tweak all of the milling variables
(depths of cut, jogs, feed rates, number of passes, pocketing, drilling,
etc) in a CAM program, rather than go through the g-code by hand.

Speaking of CAM programs...

I want to share with all of you a FOSS program that I am excited about -
HeeksCAD/HeeksCNC. It is an integrated CAD/CAM software project started
by Dan Heeks.

http://code.google.com/p/heekscad/
http://code.google.com/p/heekscnc/

Dan has a great blog where he shows parts he has made with HeeksCAD/CNC:

http://heekscnc.blogspot.com/

The current Vol. 5, No. 3, Fall 2010 issue of Digital Machinist Magazine
has an article on it.

I was able to compile it from source easily on my EMC2-Ubuntu-10.04LTS
system. At only 2 years old it has an incredible level of CAD and CAM
functionality. I am most interested right now in its 2.5 axis and 3 axis
CAM abilities. It freezes, crashes, and runs very slow at times, but
heck, its only 2 years old.

Several months ago I wrote the gEDA-user list about my attempts to get a
dxf outline of gEDA pcb's artwork using FOSS software like inkscape and
pstoedit. The goal was to get an outline of all of the traces and pads
so that I could pocket route away all of the copper exactly as it looks
in gerbv - using a 2.5 axis cam program.

HeeksCAD/HeeksCNC has the ability to open .grb files and gives you four
conversion choices:

Produce trace isolation sketches
Produce trace centre-line sketches
Produce mirrored trace isolation sketches
Produce mirrored centre-line sketches

Currently, I am only able to load small .grb files or else HeeksCAD/CNC
freezes. The program produces a beautiful smooth outline on the circular
pads using 'G03 - Circular interpolation counterclockwise' g-codes.

However, the program does not recognize the ground plane clearance
outlines. It only gives the outside border of the entire ground plane
rectangle. I hope that will come in the future.

Please, share your thoughts on this.

Thanks,
Dave





___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user






___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user