<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.cccgoe.de/index.php?action=history&amp;feed=atom&amp;title=3D-Drucker%2FSlic3r%2Fcreate</id>
	<title>3D-Drucker/Slic3r/create - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cccgoe.de/index.php?action=history&amp;feed=atom&amp;title=3D-Drucker%2FSlic3r%2Fcreate"/>
	<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=3D-Drucker/Slic3r/create&amp;action=history"/>
	<updated>2026-05-02T12:37:04Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wiki CCC Göttingen</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=3D-Drucker/Slic3r/create&amp;diff=3897&amp;oldid=prev</id>
		<title>Hefee: Die Seite wurde neu angelegt: „Das Skript ermittelt die git version von Slic3r, speichert die aktuelle Config und stl im HGDIR und erzeugt daraus die gcode Datei. Die commit message beinhaltet …“</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=3D-Drucker/Slic3r/create&amp;diff=3897&amp;oldid=prev"/>
		<updated>2012-02-23T21:23:20Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Das Skript ermittelt die git version von Slic3r, speichert die aktuelle Config und stl im HGDIR und erzeugt daraus die gcode Datei. Die commit message beinhaltet …“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das Skript ermittelt die git version von Slic3r, speichert die aktuelle Config und stl im HGDIR und erzeugt daraus die gcode Datei. Die commit message beinhaltet die git Version von Slic3r. Am Schluß wird die gcode Datei wieder in den Ordner geschrieben  aus dem auch das stl her ist. Mit einem Kommentar aus dem die slic3r Version und HG Revision herausvorgeht.&lt;br /&gt;
&lt;br /&gt;
== Inbetriebname des Scripts ==&lt;br /&gt;
* anpassen von SLIRCPATH, HGDIR und CONFIG&lt;br /&gt;
* in HGDIR muss ein &amp;#039;&amp;#039;&amp;#039;hg init  &amp;amp;&amp;amp; touch CONFIG &amp;amp;&amp;amp; hg addremove&amp;#039;&amp;#039;&amp;#039; ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
* SLIRCPATH - Pfad vo Slic3r.pm zu finden ist (git Verzeichnis)&lt;br /&gt;
* HGDIR - Pfad in dem config, gcode und stl abgelegt werden&lt;br /&gt;
* CONFIG - Name der Config die verwendet werden soll&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&amp;lt;highlightSyntax language=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import subprocess&lt;br /&gt;
import os,sys&lt;br /&gt;
import shutil&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
SLIRCPATH = &amp;quot;/home/hefee/git/Slic3r/slic3r.pl&amp;quot;&lt;br /&gt;
HGDIR = &amp;quot;/home/hefee/3d/build/&amp;quot;&lt;br /&gt;
CONFIG = &amp;quot;c.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def slircVersion():&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;get version of Slirc&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
    p=subprocess.Popen([SLIRCPATH, &amp;quot;--help&amp;quot;],stdout=subprocess.PIPE)&lt;br /&gt;
    (out, _) = p.communicate()&lt;br /&gt;
    return re.search(&amp;quot;Slic3r (.+) is a STL-to-GCODE translator for RepRap 3D printers&amp;quot;,out.splitlines()[0]).group(1)&lt;br /&gt;
&lt;br /&gt;
def slircGitVersion():&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;get git commit of slirc&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
    path, _ = os.path.os.path.split(SLIRCPATH)&lt;br /&gt;
&lt;br /&gt;
    def f():&lt;br /&gt;
        p = subprocess.Popen([&amp;quot;git&amp;quot;,&amp;quot;log&amp;quot;,&amp;quot;-1&amp;quot;], stdout=subprocess.PIPE)&lt;br /&gt;
        (out, _) = p.communicate()&lt;br /&gt;
        v = out.splitlines()[0]&lt;br /&gt;
        return v&lt;br /&gt;
&lt;br /&gt;
    return runInDir(path, f)&lt;br /&gt;
&lt;br /&gt;
def hgVersion():&lt;br /&gt;
    &lt;br /&gt;
    def f():&lt;br /&gt;
        p = subprocess.Popen([&amp;quot;hg&amp;quot;, &amp;quot;log&amp;quot;, &amp;quot;-l&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;--template&amp;quot;, &amp;#039;{rev}:{node|short}&amp;#039;], stdout=subprocess.PIPE)&lt;br /&gt;
        (out, _) = p.communicate()&lt;br /&gt;
        return out&lt;br /&gt;
    return runInDir(HGDIR, f)&lt;br /&gt;
&lt;br /&gt;
def printCmd(cmd):&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;print cmd&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
    o=[]&lt;br /&gt;
    for c in cmd:&lt;br /&gt;
        if c.count(&amp;quot; &amp;quot;):&lt;br /&gt;
            o.append(&amp;quot;&amp;#039;&amp;quot;+c+&amp;quot;&amp;#039;&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            o.append(c)&lt;br /&gt;
    print &amp;quot; &amp;quot;.join(o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def runSubprocess(cmd):&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;run cmd in subprocess.Popen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
    printCmd(cmd)&lt;br /&gt;
&lt;br /&gt;
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)&lt;br /&gt;
    (out,err) = p.communicate()&lt;br /&gt;
    if out:&lt;br /&gt;
        print &amp;quot;\t-&amp;gt;&amp;quot;+&amp;quot;\n\t-&amp;gt;&amp;quot;.join(out.splitlines())&lt;br /&gt;
    if err:&lt;br /&gt;
        print &amp;quot;\t-&amp;gt;&amp;quot;+&amp;quot;\n\t-&amp;gt;&amp;quot;.join(err.splitlines())&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def runInDir(path, func, *args, **kwargs):&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;run function in a different directory (path)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
    origWD = os.getcwd() &lt;br /&gt;
    try:&lt;br /&gt;
        os.chdir(path)&lt;br /&gt;
        return func(*args, **kwargs)&lt;br /&gt;
    finally:&lt;br /&gt;
        os.chdir(origWD)&lt;br /&gt;
&lt;br /&gt;
fname = sys.argv[1]&lt;br /&gt;
path,name = os.path.os.path.split(fname)&lt;br /&gt;
gcode,_ = os.path.splitext(fname)&lt;br /&gt;
gcode +=&amp;quot;.gcode&amp;quot;&lt;br /&gt;
_,gname =os.path.split(gcode)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Copying files to BUILD dir...&amp;quot;&lt;br /&gt;
print CONFIG&lt;br /&gt;
shutil.copyfile(CONFIG, HGDIR+CONFIG)&lt;br /&gt;
print fname&lt;br /&gt;
shutil.copyfile(fname, HGDIR+name)&lt;br /&gt;
print &amp;quot;done.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
slirc=[SLIRCPATH, &amp;quot;--load&amp;quot;, &amp;quot;c.ini&amp;quot;, name]&lt;br /&gt;
printCmd(slirc)&lt;br /&gt;
runInDir(HGDIR, subprocess.check_call, slirc)&lt;br /&gt;
&lt;br /&gt;
runSubprocess([&amp;quot;hg&amp;quot;, &amp;quot;add&amp;quot;, HGDIR+name])&lt;br /&gt;
runSubprocess([&amp;quot;hg&amp;quot;, &amp;quot;add&amp;quot;, HGDIR+gname])&lt;br /&gt;
runInDir(HGDIR,runSubprocess,[&amp;quot;hg&amp;quot;, &amp;quot;ci&amp;quot;, &amp;quot;-m&amp;quot;, &amp;#039;building with slirc v%s %s&amp;#039;%(slircVersion(),slircGitVersion())])&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Copying gcode to PWD dir...&amp;quot;&lt;br /&gt;
with open(gcode,&amp;#039;w&amp;#039;) as f, open(HGDIR+gname,&amp;#039;r&amp;#039;) as r:&lt;br /&gt;
    f.write(&amp;#039;; generated by Slic3r v%s %s (hg %s)\n\n&amp;#039;%(slircVersion(),slircGitVersion(),hgVersion()))&lt;br /&gt;
    f.write(r.read())&lt;br /&gt;
print &amp;quot;done.&amp;quot;&lt;br /&gt;
&amp;lt;/highlightSyntax&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hefee</name></author>
	</entry>
</feed>