<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://knowledge.pinon-hebert.fr/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Gcode_percage_foret</id>
	<title>Gcode percage foret - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://knowledge.pinon-hebert.fr/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Gcode_percage_foret"/>
	<link rel="alternate" type="text/html" href="https://knowledge.pinon-hebert.fr/mediawiki/index.php?title=Gcode_percage_foret&amp;action=history"/>
	<updated>2026-05-19T21:46:48Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://knowledge.pinon-hebert.fr/mediawiki/index.php?title=Gcode_percage_foret&amp;diff=599&amp;oldid=prev</id>
		<title>Jpinon : Page créée avec « Un programme pour générer du gcode pour faire des perçages avec un foret et une CNC 3018.&lt;syntaxhighlight lang=&quot;python3&quot; line=&quot;1&quot;&gt; #!/usr/bin/python3  import argparse import re import json  toolbox={}  parser = argparse.ArgumentParser(description=&#039;Translate Excellon .xln files to gcode for CNC3018&#039;) parser.add_argument(&#039;filename&#039;, help=&#039;xln (text) file&#039;) parser.add_argument(&#039;-w&#039;, type=argparse.FileType(&#039;w&#039;, encoding=&#039;latin-1&#039;), dest=&#039;outfile&#039;, help=&#039;the ou... »</title>
		<link rel="alternate" type="text/html" href="https://knowledge.pinon-hebert.fr/mediawiki/index.php?title=Gcode_percage_foret&amp;diff=599&amp;oldid=prev"/>
		<updated>2024-03-09T23:47:51Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « Un programme pour générer du gcode pour faire des perçages avec un foret et une &lt;a href=&quot;/CNC_3018&quot; title=&quot;CNC 3018&quot; data-bs-title=&quot;CNC_3018&quot;&gt;CNC 3018&lt;/a&gt;.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; #!/usr/bin/python3  import argparse import re import json  toolbox={}  parser = argparse.ArgumentParser(description=&amp;#039;Translate Excellon .xln files to gcode for CNC3018&amp;#039;) parser.add_argument(&amp;#039;filename&amp;#039;, help=&amp;#039;xln (text) file&amp;#039;) parser.add_argument(&amp;#039;-w&amp;#039;, type=argparse.FileType(&amp;#039;w&amp;#039;, encoding=&amp;#039;latin-1&amp;#039;), dest=&amp;#039;outfile&amp;#039;, help=&amp;#039;the ou... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Un programme pour générer du gcode pour faire des perçages avec un foret et une [[CNC 3018]].&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/python3&lt;br /&gt;
&lt;br /&gt;
import argparse&lt;br /&gt;
import re&lt;br /&gt;
import json&lt;br /&gt;
&lt;br /&gt;
toolbox={}&lt;br /&gt;
&lt;br /&gt;
parser = argparse.ArgumentParser(description=&amp;#039;Translate Excellon .xln files to gcode for CNC3018&amp;#039;)&lt;br /&gt;
parser.add_argument(&amp;#039;filename&amp;#039;, help=&amp;#039;xln (text) file&amp;#039;)&lt;br /&gt;
parser.add_argument(&amp;#039;-w&amp;#039;, type=argparse.FileType(&amp;#039;w&amp;#039;, encoding=&amp;#039;latin-1&amp;#039;), dest=&amp;#039;outfile&amp;#039;, help=&amp;#039;the output file&amp;#039;)&lt;br /&gt;
args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
File = open(args.filename,&amp;quot;r&amp;quot;)&lt;br /&gt;
lines=File.read()&lt;br /&gt;
&lt;br /&gt;
jobj = json.loads(lines)&lt;br /&gt;
&lt;br /&gt;
outstring=&amp;quot;;Generated with json2gcode.py (c) Jean PINON 2024\n\&lt;br /&gt;
G90\n\&lt;br /&gt;
G21\n\&lt;br /&gt;
M05\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
zUpPosition=4.00000&lt;br /&gt;
zDownPosition=0.00000&lt;br /&gt;
zDepth=-6.1&lt;br /&gt;
zStep=0.7&lt;br /&gt;
plugeSpeed=203.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
outstring+=&amp;quot;G0Z&amp;quot;+str(zUpPosition)+&amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
toolbox=jobj[&amp;#039;tools&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
currenttool=&amp;#039;-&amp;#039;&lt;br /&gt;
&lt;br /&gt;
for h in jobj[&amp;#039;holes&amp;#039;]:&lt;br /&gt;
    if currenttool!=h[&amp;#039;tool&amp;#039;]:&lt;br /&gt;
        currenttool=h[&amp;#039;tool&amp;#039;]&lt;br /&gt;
        outstring=outstring+&amp;quot;M0 ;&amp;quot;+currenttool+&amp;quot;\n&amp;quot;&lt;br /&gt;
        outstring=outstring+&amp;quot;M03S10000\n&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    outstring=outstring+&amp;quot;;drill\nG0X&amp;quot;+str(h[&amp;#039;x&amp;#039;])+&amp;quot;Y&amp;quot;+str(h[&amp;#039;y&amp;#039;])+&amp;quot;Z&amp;quot;+str(zUpPosition)+&amp;quot;\n&amp;quot;&lt;br /&gt;
    # go to firts position&lt;br /&gt;
    outstring=outstring+&amp;quot;G1Z&amp;quot;+str(zDownPosition)+&amp;quot;F&amp;quot;+str(plugeSpeed)+&amp;quot;\n&amp;quot;&lt;br /&gt;
    # Now drill\nG0&lt;br /&gt;
    z=zDownPosition&lt;br /&gt;
    while z&amp;gt;zDepth:&lt;br /&gt;
        z=z-zStep&lt;br /&gt;
        if (z&amp;lt;zDepth):&lt;br /&gt;
            z=zDepth&lt;br /&gt;
        outstring+=&amp;quot;G1Z&amp;quot;+str(z)+&amp;quot;F&amp;quot;+str(plugeSpeed)+&amp;quot;\n&amp;quot;&lt;br /&gt;
        # go to top&lt;br /&gt;
        outstring=outstring+&amp;quot;G0Z&amp;quot;+str(zUpPosition)+&amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
outstring+=&amp;quot;G0X0Y0Z&amp;quot;+str(zUpPosition)&lt;br /&gt;
&lt;br /&gt;
outstring+=&amp;quot;G1\nM05\nM02\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (args.outfile):&lt;br /&gt;
    args.outfile.write(outstring)&lt;br /&gt;
    args.outfile.close()&lt;br /&gt;
else:&lt;br /&gt;
    print (outstring)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Le &amp;quot;help&amp;quot; est auto explicatif. En revanche les valeurs de vitesse, profondeur etc. sont à modifier aux lignes 24 à 28 (un jour je les passerait en options sur la ligne de commande)&lt;/div&gt;</summary>
		<author><name>Jpinon</name></author>
	</entry>
</feed>