Lieber Besucher, herzlich willkommen bei: Kartonbau.de - Alles rund um Papiermodelle, Kartonmodellbau und Bastelbogen. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

1

Dienstag, 27. Februar 2007, 21:30

Neues Exportskript für Blender

Hallo Freunde der Scheren und des Klebstoffs,

ich habe mal etwas weiter mit Blender&Co. gewerkelt, und ein neues Exportskript geschrieben (musste ich extra Python lernen... tsk tsk). Was mich am SVG-Export aus dem Unfolder-Skript immer gestört hat, ist der Export sämtlicher Edges, die man dann immer erst einzeln löschen muss (und die dann auch noch alle doppelt sind), um einen Umriss zu erhalten. Nun, dem kann Abhilfe geschaffen werden: Angehängt findet sich eine zip-Datei, die mein Exportskript enthält. Dieses einfach in Blenders Scripts-Verzeichnis kopieren (unter Linux: ~/.blender/scripts/, unter Windows: [Blender-Installationsverzeichnis]/.blender/scripts) und Blender starten. Es findet sich dann unter dem Menüpunkt "File->Export->Export Outlines" wieder. Eine bebilderte Anleitung und noch bissel mehr kommt gleich hier im Anschuss :) .

Micha
»MiZi« hat folgende Datei angehängt:

hemingway

Meister

  • »hemingway« ist männlich

Beiträge: 2 214

Registrierungsdatum: 31. Januar 2006

Beruf: Arzt

  • Nachricht senden

2

Dienstag, 27. Februar 2007, 22:13

Danke, Mizi!
Schreib weiter so hilfreiche Scripts!

Herzlichen Gruss
Bernhard

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

3

Dienstag, 27. Februar 2007, 22:51

Ok, Beispielzeit: Wieder am BDms-Waggon.

Nehmen wir also an, ich will das Bauteil "Stirnseite" exportieren, was in Bild 1 selektiert ist. Das wird zunächst mal ganz normal mit dem Unfolder auf die xy-Ebene abgewickelt (ist hier ziemlich trivial). Das Ergebnis in Bild 2 sieht wie erwartet aus. Leider erzeugt der Unfolder für jedes Poly im Originalteil ein komplettes Poly, mit 4 Vertices und 4 Edges. Daher sind die "inneren" Edges auch doppelt. Also schnell mal mit "A" alle Vertices ausgewählt und mit "Remove Doubles" alle doppelten Sachen gekillt: Aha, es waren also 167. Im Object-Mode sieht man nun auch, dass nur noch die Umrisslinien angezeigt werden (Bild 3). So könnte man es exportieren, jetzt fehlt aber die Knicklinie. und die werden wir jetzt einfügen.
Dazu markieren wir die beiden Vertices, die am Ende der Knicklinie liegen. Diese duplizieren wir (Shift-D) und geben per Tastatureingabe mit "0" + "Enter" die Position der Duplikate vor (genau auf den Ausgangsvertices, Bild 4).
Jetzt werden die Duplikate mit "S" etwas nach außen skaliert (Bild 5).

So, 5 Bilder sind voll, gleich gehts weiter...
»MiZi« hat folgende Bilder angehängt:
  • kb011.jpg
  • kb012.jpg
  • kb013.jpg
  • kb014.jpg
  • kb015.jpg

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

4

Dienstag, 27. Februar 2007, 23:10

weiter gehts.

Bild 6 zeigt das Bauteil im Object-Mode. Jetzt wäre es ja schön, wenn die Knicklinie nur außerhalb des Teils wären. Nichts das als lieber...
Wieder im Edit-Mode wählen wir die beiden äußersten Vertices aus (und damit die lange Edge dazwischen). Mit "X" und dann "Edges&Faces" wird die Edge wieder entfernt, aber die Vertices bleiben (Bild 7). Nun selektieren wir nur die zwei Vertices auf einer Seite und fügen mit "F" eine neue Edge ein (Bild 8). Das gleiche auf der anderen Seite. Und bei der anderen Knicklinie auch noch. Bild 9 zeigt das Ergebnis unserer Bemühungen. Die Knicklinien sind "isolierte Edges", die keinem Polygon angehören. Gerendert würden die natürlich nicht, aber das Exportskript erkennt die trotzdem.
Ok, im Object-Mode mit selektiertem Bauteil wählen wir im "File"-Menü "Export->Export Outlines" (Bild 10).

gleich gehts weiter...
»MiZi« hat folgende Bilder angehängt:
  • kb016.jpg
  • kb017.jpg
  • kb018.jpg
  • kb019.jpg
  • kb020.jpg

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

5

Dienstag, 27. Februar 2007, 23:37

letzte Runde...

Als nächstes geben wir einen Dateinamen und -ort an (.svg-Endung nicht vergessen!) und klicken "Export". Ein kleines Popup erscheint, und fragt, in welchem Maßstab exportiert werden soll. Ist eigentlich selbsterklärend. Ich konstruiere in Modell-Millimetern, also wähle ich "1 Blender-Unit = 1 mm" (Bild 11).
Letzter Schritt: Import in Inkscape (Bild 12). Wie man sieht, alles in Ordnung. Ich habe die Linienstärke fest auf 0,1 mm verdrahtet, das kann man aber in Inkscape problemlos ändern.

Tja, natürlich ist das Skript noch verbesserungswürdig. So wird zum Beispiel nur das erste selektierte Objekt (wenn mehrere ausgewählt sind) exportiert, da könnte ein Export aller ausgewählter Objekte in mehrere Gruppen passieren.

Ich hoffe, das es nützlich sein wird, Verbesserungsvorschläge, Vorschläge für neue Scrips sind immer herzlich willkommen.

Beste Grüße,
Micha
»MiZi« hat folgende Bilder angehängt:
  • kb021.jpg
  • kb022.jpg

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

6

Freitag, 2. März 2007, 06:48

Hallo Micha,

das ist echt gemein! ;)
Kaum bin ich die sch... Erkältung los und hab wieder normale 37 Grad erreicht, treibst Du mich mit SO einem Thread wieder auf eine "Betriebstemperatur" von 39!!! :D

Um's ganz kurz zu machen: Was Du hier geleistet hast, ist GENIAL!!! Ich habe mir Dein Script angeschaut, und es ist beinahe unglaublich, was Du mit "den paar Zeilen" ( ;)) erreicht hast! Auf jeden Fall vielen Dank für Deine hervorragende Arbeit.

Ein paar Verbesserungsvorschläge hätte ich vielleicht, aber dazu schau Dir vielleich mal das folgende Bild an; so sieht derzeit meine Blender-Umgebung aus, wenn ich Abwicklungen mache:
»woody« hat folgendes Bild angehängt:
  • bild-01.jpg

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

7

Freitag, 2. März 2007, 07:19

Rot ist dabei das Unfolder-Script, gelb ist Dein Outline-Export. Momentan gehe ich dabei so vor:
  • 3D Bauteil markieren und abwickeln
  • beim abgewickelten Bauteil die doppelten Punkte entfernen
  • Doppelte Vertices vereinen
  • Anschließend wird Dein Exporter angestossen und das Teil exportiert

Das klappt soweit auch einwandfrei. Wenn du jetzt aber die Teile später texturieren willst, sind so "Hilfslinie" wie die Verbindungslinien der einzelnen Vertices gar nicht so schlecht; diese werden aber von Deinem "Outliner" ganz bewußt weggelassen. Momentan behelfe ich mir so, daß ich Deinen "Outliner" zweimal starte: Einmal BEVOR ich die doppelten Vertices lösche und einmal danach. Hintergrund ist, daß ich nach dem Import in den Gimp mehrere Ebenen übereinander lege und damit die Hilfslinien an- und ausknipsen kann. Dieses Verfahren wird auch dann noch sinnvoll sein, wenn ich (vielleicht?!?) mal alles im Inkscape mache, da auch der Inkscape inzwischen eine ganz brauchbare Layer-Verwaltung aufweisen kann.

Daher Vorschlag Nr. 1: Wie wäre es, wenn Du Deinem Script eine Benutzer-Oberfläche a la Unfolder verpassen würdest? So mit einem Schalter namens "Hilfslinien an/aus" o. ä.?

Vorschlag Nr. 2: Könnte man einen eigenen Export-Pfad definieren, in dem die SVG's abgespeichert werden? Das würde die Arbeit u. U. auch erleichtern.

Vorschlag Nr. 3: Wie wäre es mit einem Skalierungsfaktor? Du hast zwar recht, daß man bei einem eigenen Design von Anfang an die Blender-Units als mm oder cm sehen kann, aber was machst Du mit einem 3D-Modell, das nicht so konstruiert wurde? Ich stelle mir dabei ein numerisches Eingabefeld vor, das eine Freidefinition erlaubt, sowie ein Auswahlschalter ("Blender-Unit", "1 mm", "1 cm", "1 inch"), der das Feld zusätzlich mit den korrekten Faktoren füttert. Auf diese Weise ersparst Du Dir die Abfrage bei jedem Abspeichern.
Hier habe ich auch noch eine Frage: Wie bist Du eigentlich auf die 90dpi Auflösung gekommen, die der Blender (intern) zu verwenden scheint? Als ich in Deinem Script die Umrechnungsfaktoren gesehen und nachgerechnet habe, ist mir EINIGES klar geworden. Ich selbst hatte immer einen Vergrößerungsfaktor von 3542,249% berechnet ...
Jede Ähnlichkeit wäre rein zufällig, nur daß Dir im Gegensatz zu mir klargeworden ist, WARUM dem so ist.

Vorschlag Nr. 4: Könnte man die Einstellungen vielleicht in einer Konfigurationsdatei speichern? Z. B. in $HOME/.blender/export_outline.conf, die beim Start Deines Scripts ausgelesen wird.

Vorschlag Nr. 5: Ist es möglich, statt einzelner Linien einen SVG-Polygonzug zu exportieren? Das ist zwar nicht wirklich wichtig, da man die Teile im Inkscape gruppieren kann, könnte aber u. U. einiges erleichtern. Bei diesem Vorschlag sehe ich aber selbst noch Diskussionsbedarf und möchte ihn daher einfach mal so in den Raum stellen.

Das sind für das erste erst mal meine Vorschläge. Und dann noch eine Frage: hast Du irgendwo bessere Einführungen in die Programmierung des Blender unter Python? Python kann ich zwar noch nicht richtig, aber das ist eigentlich kein großes Problem. Schlechter schaut es schon beim Blender-API aus. Hier habe ich bisher nur unvollständige Übersichten gefunden, die noch dazu teilweise auf älteren (und anscheinend nicht immer kompatiblen) Blender-API's aufbauen. Dazu fehlen mir doch einige aussagekräftige Beispiele. Hast Du da ein paar Links?

Wenn Du Interesse hast, bin ich auch gerne bereit, Dir bei der Umsetzung der Vorschläge zu helfen. Spaß würde es mir auf jeden Fall machen, und Du hast ja schon eine ziemlich solide Grundlage gelegt.

Servus, und vielen Dank, Wolfgang

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »woody« (2. März 2007, 07:26)


woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

8

Freitag, 2. März 2007, 07:23

Verd... jetzt habe ich eine winzige Kleinigkeit noch vergessen: Ich habe Dein Script an einer Stelle angepasst:

Zitat

"""
Name: 'Export Outlines (.svg)'
Blender: 237
Auf diese Weise sieht man auch ohne Kenntnis dieses Threads, in welchem Format die Speicherung erfolgt.

Servus

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

9

Freitag, 2. März 2007, 08:37

Hallo Wolfgang,

wusste ich doch, dass du darauf anspringst ;)

Ich war natürlich nicht faul, und habe das Exportskript etwas erweitert (kleine Änderungen nach außen hin, zog eine doch gründliche interne Umstrukturierung nach sich).
Jetzt kann man mehrere Objekte auf einmal exportieren. Dabei wird jedes als Gruppe exportiert und besteht selber aus einer Gruppe zweier Objekte, falls es "isolierte" Edges hat (s.o.). Da hast du deine Hilfslinien und Umrisslinien in zwei Gruppen.

Als Linienzug zu exportieren war auch mein Wunsch, da muss ich aber erst noch meinen Kopf um das Problem wickeln, wie sortiere ich die Edges bei der Ausgabe... aber da fällt mir noch was ein.

Zu deinem Vorschlag mit dem freien Skalierungsfaktor: Den würde ich als Eingabefeld mit in das Popupmenu stecken (geht angeblich, probiert habe ich es noch nicht). Natürlich mit Speicherung des letzten Eingegebenen. Ich würde ungern eine neue GUI programmieren, weil es dann wieder nur ein neues Fenster belegt.

Auf die 90dpi bin ich zum ersten durch Nachrechnen gekommen. Ich habe in Inkscape das gleiche Maß in px und mm abgelesen und dividiert. Danach noch mit 25.4 multipliziert und px/Zoll erhalten (kam etwa 90.1234162342 oder sowas raus). Viel später habe ich dann in der offiziellen SVG-Spezifikation (Abschnitt "Units") gefunden, dass es definiert ist: ein Zoll hat 90 SVG-Pixel...

Und nun: Als Anhang ein neues Skript, Export in Gruppen, sinnvoll angeordnet.

Gruß,
Micha
»MiZi« hat folgende Datei angehängt:

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

10

Freitag, 2. März 2007, 09:48

Tja, und als Quelle habe ich auch nur

http://www.blender.org/documentation/242…tro-module.html

und die Python-Doc unter http://www.python.org

Kleiner Tip (ohne jetzt eine neue Version hochzuladen): Im Exportscript "Group: 'Export'" in "Group: 'Object'" ändern. Dann landet der Menüeintrag im Menü des 3D-Fensters unter "Object->Object-Scripts->Export Outlines"

Micha

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

11

Montag, 5. März 2007, 12:28

Und auf ein Neues...

  • Export der Umrisslinien in einen geschlossenen Polygonzug
  • Möglichkeit der Eingabe eines beliebigen Skalierungsfaktors
  • Speicherung des selben und Speicherung des letzten Export-Pfades
  • Skript ist jetzt im Objektmenü eines 3D-Views zu finden ("Object->Scripts->Export Outlines")


Und hier das Zip-Archiv:

Beste Grüße,
Micha
»MiZi« hat folgende Datei angehängt:

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

12

Mittwoch, 7. März 2007, 07:43

Hallo Micha,

bin leider erst jetzt dazu gekommen, die letzte Version zu testen; allerdings mit sehr mäßigem Erfolg:
Nach dem Start Deines Scripts werde ich in einem Popup-Fenster nach der physikalischen Größe einer Blender-Unit gefragt; hier gebe ich der Einfachheit halber 1cm an. Danach erhalte ich die Pfad- und Dateiauswahl, die jetzt immer im Hauptverzeichnis / anfängt; als Dateiname wird out.svg vorgeschlagen. Und danach erhalte ich auf der Konsole die folgende Meldung:

Zitat

in ReadIni
xc=23.990587, yc=40.292892
vor FileSelector /out.svg
nach FileSelector
Ende
in Callback
Traceback (most recent call last):
File "<string>", line 73, in exportOutline
File "<string>", line 49, in write
File "<string>", line 36, in output_polyline
TypeError: unpack non-sequence

Und das war's dann auch; es wird kein Output erzeugt; vielleicht hilft Dir das weiter.

Aber eine grundsätzliche Überlegung: Ist die Vorgehensweise in dieser Form eigentlich sinnvoll? Für JEDEN Export ist jedesmal die Angabe des Skalierungsfaktors sowie der kompletten Pfadangaben notwendig; der Aufruf des Skripts über die Menüführung ist auch nicht gerade ein Hit in Sachen Geschwindigkeit. Vor allem bei einem benuterspezifischen Skalierungsfaktor wird die Sache doch ziemlich lästig.

Also, ich bleibe dabei: Ich werde am Wochenende mal versuchen, Dein Skript in ein eigenes GUI einzubauen, in dem genau diese Parameter einmal hinterlegt und dann bei jedem Start des "Outlinings" mit übernommen werden. Ich denke, daß man hier einen deutlichen Schub in Sachen Bearbeitungsgeschwindigkeit erhalten kann.

Vielleicht noch etwas: Wenn Du verschiedene Versionsstände eines Programms herausbringst, würde ich Dir eine Versionsnummer empfehlen. Ich habe mir jetzt zu Testzwecken alle Deine Skripte in mein Blender-Skript-Verzeichnis kopiert, wobei ich die Namen um _v0.1, _v0.2 und _v0.3 erweitert habe. Außerdem habe ich diese Versionsnummer auch im Menünamen mit eingetragen.

Das alles ändert aber nichts an meiner Meinung, daß Du hier eine sehr gute Arbeit abgeliefert hast. Alleine die Erkenntnisse, die ich aus der Analyse Deines Skripts gewinnen konnte, waren jede Minute wert. Für Deine Arbeit ein herzliches Dankeschön.

Sowie ich was habe, stelle ich das Skript hier zur Verfügung.

Servus, Wolfgang

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

13

Donnerstag, 8. März 2007, 10:11

Hallo Wolfgang,

ich kann den Fehler erstmal nicht nachvollziehen, vielleicht könntest du mir eine Beispiel-Blender-Datei schicken (per PM z.B.), wo der Fehler reproduzierbar auftritt.

Zum Thema Export-Pfad: Der wird gespeichert, und bei jedem Export wiederhergestellt. Also einmal "/home/woody/Kartonprojekt/Abwicklungen/" (beispielsweise ;) )als Pfad angeben, und bei jedem weiteren Export wird dieser Pfad voreingestellt sein.

Wenn du eine GUI dazuprogrammierst, soll mir das recht sein! Das nennt man dann wohl "Arbeitsteilung" und ist ja nicht das schlechteste, was man machen kann. :prost: Der Kern des Exports ist ja davon unabhängig.

Beste Grüße,
Micha

Michael Urban

Erleuchteter

Beiträge: 3 324

Registrierungsdatum: 10. Oktober 2005

  • Nachricht senden

14

Donnerstag, 8. März 2007, 10:46

Genial was ihr hier so treibt.

Nur so zum Vergleich, wie ich in Rhino vorgehe:

Zuerst werden alle Bauteile einer Baugruppe abgewickelt und schon mal grob auf einer "Seite" (Rechteck) angeordnet. Dann wird alles markiert und in einem Schwung exportiert.

Wäre so ein Vorgehen für Euch nicht auch sinnvoll? Also nicht jedes Bauteil einzeln exportieren, sondern gleich einen ganzen Schwung...

viele Grüsse
Michael

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

15

Donnerstag, 8. März 2007, 11:03

Ach ja, vergaß ich zu sagen (besser: steht oben)

So denn das Skript funktioniert, kann man auch mehrere Bauteile auswählen und "in einem Schwung" exportieren. Jedes Bauteil landet dann als ein Objekt (Polygon oder Gruppe) in der SVG-Datei. Wenn's denn funktioniert... (bei mit tut's ?( )

Micha

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MiZi« (8. März 2007, 11:04)


woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

16

Donnerstag, 8. März 2007, 20:21

@Mizi:

Zitat

ich kann den Fehler erstmal nicht nachvollziehen, vielleicht könntest du mir eine Beispiel-Blender-Datei schicken (per PM z.B.), wo der Fehler reproduzierbar auftritt.
Ist unterwegs zu Dir.

Zitat

Wenn du eine GUI dazuprogrammierst, soll mir das recht sein! Das nennt man dann wohl "Arbeitsteilung" und ist ja nicht das schlechteste, was man machen kann. :prost: Der Kern des Exports ist ja davon unabhängig.
Genauso sehe ich das auch! Ich bin gerade dabei, mich in die GUI-Elemente reinzufressen, und dann rufe ich Deine bisherigen Routinen als Unterprogramm auf. Sowie ich da was habe, schicke ich es Dir zu oder stelle es hier als Download-Anhang in den Thread.
Aber das sage ich Dir: auf das Bier komme ich zurück! ;) :prost:

@Michael:

Zitat

Wäre so ein Vorgehen für Euch nicht auch sinnvoll? Also nicht jedes Bauteil einzeln exportieren, sondern gleich einen ganzen Schwung...
Gib uns noch etwas Zeit; ich bin immer noch dabei, mich von dem moralischen Tritt zu erholen, den mir Mizi mit seinem Projekt verpasst hat; :D
der Ansatz ist einfach genial!!! Und sowie ich mich jetzt in Python (relativ easy!) und das Blender-API reingefressen habe (nicht ganz so einfach!), geht es auch schneller voran.

Servus, Wolfgang

Ernst

Erleuchteter

  • »Ernst« wurde gesperrt

Beiträge: 3 874

Registrierungsdatum: 17. Februar 2004

  • Nachricht senden

17

Donnerstag, 8. März 2007, 21:24

Hallo Wolfgang,

kannst ruhig zu einen Glas Bier zum nächsten Stammtisch kommen, auch eine Erklärung zum Blender ist Willkommen.

:yahoo: Ohne Ausstellung wo man keine Zeit hatte für sowas :yahoo:

Grüße
Ernst
Bin jetzt ein GELIaner

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

18

Samstag, 17. März 2007, 17:42

Hallo Ernst,

hast schon recht: Ganz schon stressig, so einen Ausstellung, was? :D
Aber das Bier holen wir auf jeden Fall mal bei einer Gelegenheit nach, OK! :prost:

Servus, bis (hoffentlich) bald,
Wolfgang

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

19

Samstag, 17. März 2007, 17:52

Hallo Micha,

jetzt hat es doch etwas gedauert, bis ich mich in das Blender-Python reingefressen habe; aber so schwer ist es gottseidank ja nicht. Beiliegend findest Du meinen Vorschlag für ein GUI zur Ansteuerung von Deinem Outliner. Die Bedienung ist dabei hoffentlich so intuitiv, daß Du mit der folgenden Anleitung klar kommst. Noch ein Tip: Starte den Blender auf der Konsole, da ich dort zur Laufzeit reichlich Ausgaben mache, um den Ablauf klarer zu gestalten ... vor allem, wenn Du Dir dann den Quelltext anschaust! :D

Kurz zur Bedienung (ich hab's auf Englisch gehalten, da der Blender eh so ist):
  • Button "Browse SVG directory": Hier kannst Du die SVG-Ausgabedatei auswählen, wenn schon eine existiert; ansonsten irgendeine Datei anklicken ...
  • ...und im "SVG output file" manuell anpassen
  • "Load profile" / "Save profile": die getroffenen Einstellungen werden in der Profildatei ".outlinerc" im Heimatverzeichnis des Benutzers geladen / abgespeichert
  • "Scale-Factor": Hier kann man den numerischen Skalierungsfaktor eingeben ...
  • ... oder aus dem nebenliegenden Auswahlmenü den geeigneten anklicken
  • "Create SVG Output": hier müsstest Du jetzt Deine Outliner-Routine (leicht angepasst) einklinken; die Übergabe-Variablen findest Du im Quelltext dokumentiert
  • "Exit": na, irgendwie muß es ja mal wieder raus gehen ... ;)

So, jetzt schau es Dir bitte mal an und sag mir, was Du davon hältst und ob Du es für brauchbar findest.

Viele gespannte Grüße, Wolfgang
»woody« hat folgendes Bild angehängt:
  • bild-02.jpg
»woody« hat folgende Datei angehängt:
  • gui.py.zip (1,94 kB - 48 mal heruntergeladen - zuletzt: 14. April 2015, 08:08)

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

20

Montag, 19. März 2007, 11:10

Hallo Wolfgang,

Nun denn, auf zur letzten(?) Runde...

ich habe den Outline-Exporter in dein GUI-Script eingebunden, die Anpassungen hielten sich in Grenzen (alles in allem 15-30 min :D) Dein GUI ist gut so, vielleicht sollte man das scale-menu und die scale-factor Eingabe vertauschen und einen Text drübersetzen ("1 Blender unit equals:").

In der Zwischenzeit habe ich auch das Problem mit den mehreren geschlossenen Umrisslinien gelöst. In der Folge ist auch der Export vereinheitlicht und die SVG-Datei wird auch kleiner (Ausgabe von "Path"-Objekten).

Angehängt ist die neue Version, ich habe mich mal erdreistet, das Ganze "Gui_v1.1" zu nennen.

Beste Grüße,
Micha
»MiZi« hat folgende Datei angehängt:
  • gui_11.py.zip (3,01 kB - 113 mal heruntergeladen - zuletzt: 14. April 2015, 08:08)

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

21

Montag, 19. März 2007, 20:47

Hallo Micha,

Zitat

Nun denn, auf zur letzten(?) Runde...
Schaut fast so aus! =)
Aber hoffentlich nur bei diesem Projekt!

Ich habe mir Deine Version heruntergeladen und mal die Sourcen angesehen; Du hast es im wesentlich genau so gemacht, wie ich mir das gedacht hatte. Und dann bin ich auf das Demo-Modell nochmals losgegangen:
»woody« hat folgendes Bild angehängt:
  • bild-01.jpg

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

22

Montag, 19. März 2007, 20:51

Na ja, was soll ich noch sagen: Es war perfekt! :yahoo:
Egal, ob ich mit den doppelten Vertices der Original-Unfolder-Ausgabe oder mit den "entdoppelten" Abwicklungen gearbeitet habe, so hat Dein Outliner die Sache millimetergenau abgespeichert. Es gab überhaupt keine Fehlermeldung, und die Ergebnisse sind das, was ich erwartet habe.

Im Beispiel habe ich es mal als Millimeter- und als Zentimeter-Ausgabe übernommen; sieht soweit eigentlich alles sehr gut aus.
»woody« hat folgendes Bild angehängt:
  • bild-02.jpg

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

23

Montag, 19. März 2007, 20:58

Ich werde das Script jetzt auf jeden Fall bei einem aktuellen Projekt noch auf Herz und Nieren testen, aber das bisher Gesehene läßt schon reichlich Vertrauen aufkommen.

Halt, eine Verbesserung habe ich noch: Die Kopf-Informationen im Skript-Header habe ich noch etwas verbessern können:

Zitat

#!BPY

"""
Name: 'Outliner GUI (SVG)'
Blender: 242
Group: 'Mesh'
Tip: 'Convert flat Blender objects to scaled SVG output'
Version: v1.1
Author: Outliner: Micha (hier kannst Du noch Deine Angaben machen!)
GUI: Wolfgang Holzinger, info@modellbau-holzinger.de
"""


Bleibt mir nur noch ein ganz herzliches Dankeschön an Dich zu sagen. Du hast einen der wesentlichsten Verbesserung-Vorschläge bei dem ganzen Verfahren auf sehr elegante Art implementiert. Eigentlich wollte ich in Zusammenarbeit mit Matthew Chadwick (Autor des Unfolders) dieses Programm so erweitern, daß es besser für uns geeignet ist. Aber Dein Ansatz ist nicht nur flexibler und einfacher in der Implementierung, er hat auch noch den Vorteil, daß sich Matthew nicht mit verschiedenen Versionen eines "Unfolders" herumschlagen muß (und wir auch nicht :D). Kurz: Problem perfekt gelöst!!! :respekt:

Zitat

Angehängt ist die neue Version, ich habe mich mal erdreistet, das Ganze "Gui_v1.1" zu nennen.
Eine bodenlose Unverschämtheit :D ... zumal ich es genau deswegen gemacht habe! ;)

Wenn ich noch was feststelle, gebe ich Dir auf jeden Fall Bescheid.
Und was planst Du als nächstes???

Servus, Wolfgang

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »woody« (19. März 2007, 21:00)


MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

24

Mittwoch, 21. März 2007, 20:16

Na, dann ist ja am Ende doch eine nützliche Sache rausgekommen.

Mein nächstes Projekt ist mal eine Eigenkonstruktion mit Blender und Co., und zwar ein Köfchen in 1:87 (oder kleiner, wer weiß). Dabei habe ich schon festgestellt, dass es noch viele nützliche kleine Scriptchen geben könnte, was mit z.B. immer wieder vorkommt, ist das erzeugen von Hilfslinien am abgewickelten Teil (markiere zwei Vertices, Shift-D, "0"+"Enter", "F", "S", bissel vergrößern), solche Sachen lassen sich wunderbar automatisieren.

Also, lasst uns konstruieren!

Beste Grüße,
Micha

ullrich_h

Schüler

  • »ullrich_h« ist männlich

Beiträge: 5

Registrierungsdatum: 16. August 2004

  • Nachricht senden

25

Dienstag, 8. Mai 2007, 17:42

Hallo Wofgang und Micha,

super Sache...nur leider funkzinierts bei mir nicht, und zwar mit den hier schon mal erwähnten Fehlermeldungen
------------------------
in Callback
Traceback (most recent call last):
File "<string>", line 73, in exportOutline
File "<string>", line 49, in write
File "<string>", line 36, in output_polyline
TypeError: unpack non-sequence
------------------------

Was war denn da die Ursache bzw. Behebung

MfG

Ullrich

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

26

Dienstag, 8. Mai 2007, 20:34

Hallo Ullrich,

also, mit der Fehlermeldung alleine kann ich nichts anfangen. Kannst Du uns mal bitte ein paar weitere Infos geben:
  • Welche Blender-Version
  • Welche Python-Version
  • Hat der Unfolder noch funktioniert
  • Vielleich einen Screen-Shot oder ein passendes Blender-Beispiel
Wenn Du mir das betreffende Bauteil zukommen läßt, dann schau ich mir das gerne mal an.

Servus, Woody

Alexander

Schüler

  • »Alexander« ist männlich

Beiträge: 16

Registrierungsdatum: 31. Juli 2006

Beruf: Informatiker

  • Nachricht senden

27

Mittwoch, 9. Mai 2007, 10:17

Hallo,

das hatte ich auch.

Die Ursache war, daß aus irdendeinem Grund die Einstellungen nicht gelesen werden konnten und deshalb der letzte Pfad beim Speichern nicht gefunden wurde.

Ich habe dann einfach den Pfad im Script überschrieben.

Gruß Alexander

Karton-Fan

Schüler

Beiträge: 3

Registrierungsdatum: 14. Juli 2007

  • Nachricht senden

28

Montag, 23. Juli 2007, 17:57

Hallo,
erstmal muss ich sagen, dass das Script den Export der svg´s viel komfortabler macht, da sie gleich skaliert werden. Super Idee!

Leider funktioniert bei mir nur die allererste Version des Scripts, ohne GUI.
Alle späteren Versionen brechen mit der unten im angehängten Bild sichtbaren Fehlermeldung sofort nach dem start (des Scrips) ab.
Vielleicht ist es ja möglich, die GUI-Version noch nutzbar zu machen, da ja mehrere Leute Probleme damit hatten. Auch, wenn der Thread jetzt seit einiger Zeit, warum auch immer, in unvollendetem Stadium ruht poste ich mal einen Fehlerbericht.

#Betriebssystem: WinXP SP2
# Welche Blender-Version : 2.44 (Liegt es vielleicht daran?)
# Welche Python-Version : 2.5.1
# Hat der Unfolder noch funktioniert: Ja
# Vielleich einen Screen-Shot oder ein passendes Blender-Beispiel: Siehe Anhang
#Script-Version: gui_11.py

Gruß, Karton-Fan
»Karton-Fan« hat folgendes Bild angehängt:
  • Fehler.jpg

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Karton-Fan« (23. Juli 2007, 17:59)


MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

29

Sonntag, 29. Juli 2007, 23:41

Hallo Karton-Fan!

Das ist ein Problem des GUI-Teils von Woody. Da er unter Linux programmiert, hat er angenommen, dass jeder Benutzer sein "Homedirectory" hat. Das ist dann in der Umgebungsvariable "HOME" abgelegt. Unter Win ist das nicht zwangsläufig so. Abhilfe schafft das Anlegen dieser Variable (unter Rechtsklick auf "Arbeitsplatz", -> Eigenschaften -> Erweitert -> Umgebungsvariablen -> Benutzer-Umgebungsvariablen, Dort einen Eintrag "HOME" mit dem Wert deines "Eigene Dateien"-Verzeichnisses anlegen. Es geht aber auch jedes Andere Verzeichnis.

Oder Woody anhauen, dass er den Code mal auf Windowsuser anpasst.

Bis denne,
Micha

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

30

Dienstag, 31. Juli 2007, 21:13

Hallo zusammen,

na, das fängt ja gut an ... erst schlägt ein Blitz ein und macht die ganze DSL-Ausrüstung kaputt, und kaum ist mann nach 11 Tagen wieder online, dann hagelt es Blender-Fehlermeldungen ... ;(
und dann auch noch berechtigte ... ;)

Zitat

Oder Woody anhauen, dass er den Code mal auf Windowsuser anpasst.

Was haltet Ihr davon, wenn wir folgendermaßen vorgehen: wenn eine HOME-Variable existiert, dann bleibt alles wie gehabt; wenn diese Variable NICHT existiert, dann legen wir ein fest definiertes Verzeichnis an, z. B. c:\Blender-Outliner oder ähnlich. Wobei ich dann allerdings noch eine Betriebssystem-Check machen müßte, um festzustellen, ob ich wirklich unter Windoof arbeite (d. h. C:\...), oder ob z. B. unter Linux aus irgendwelchen Gründen keine HOME-Variable gesetzt ist ... was allerdings fast nicht vorstellbar ist.

Was meint Ihr, wie sollen wir es machen?

Servus, Woody

Karton-Fan

Schüler

Beiträge: 3

Registrierungsdatum: 14. Juli 2007

  • Nachricht senden

31

Freitag, 10. August 2007, 17:51

Hallo, MiZi und Woody

@MiZi: Danke, dein Tipp hat geholfen, nach dem Anlegen einer Home-Variable
funktioniert Woodys GUI einwandfrei. :yahoo:

@Woody: Der Blitzeinschlag ist ja ärgerlich, ich hoffe dass es "nur" die DSL-Ausrüstung erwischt hat und nicht den ganzen PC.
Zum Thema: Ich habe eine HOME-Variable nach MiZis Anleitung angelegt und als Verzeichnis C:\Outliner. Jetzt funktioniert das Exportieren mit der GUI.
Du könntest entweder im Script auf ein festes Verzeichnis verweisen, oder alles so lassen und eine kleine Readme beilegen, in der kurz erläutert wird, wie man eine "HOME"-Variable anlegt.

Gruß, Karton-Fan

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

32

Samstag, 11. August 2007, 09:47

Hallo Karton-Fan,
hallo alle zusammen

Zitat

Der Blitzeinschlag ist ja ärgerlich, ich hoffe dass es "nur" die DSL-Ausrüstung erwischt hat und nicht den ganzen PC.
Nein, die Rechner waren noch alle in Ordnung, aber das Netzwerk hat schwer gelitten. Na ja, jetzt ist wieder fast alles repariert.

Zitat

Du könntest entweder im Script auf ein festes Verzeichnis verweisen, ...
Das will ich eigentlich nicht, denn es ist ein sehr schlechter Programmierstil! Zum anderen müsste ich dann ein Betriebssystem fix annehmen, und das will ich nicht. Blender läuft auf verschiedenen Betriebssystemen (Linux, Windows, Mac) und Architekturen, also müssen das auch die Plugins und Skripte!

Zitat

... oder alles so lassen und eine kleine Readme beilegen, in der kurz erläutert wird, wie man eine "HOME"-Variable anlegt.
Ich denke, daß das unabhängig von den Lösungen, die mir gerade so durch den Kopf gehen, sinnvoll ist. Denn Du hast ja definitiv "entdeckt", daß ich das nirgendwo dokumentiert habe, und MiZi hatte es aufgrund unserer Kontakte bei sich ja schon eingerichtet. Deswegen trat der Fehler bei uns auch nicht auf.

Ich denke mir momentan folgende Vorgehensweise: Nach dem Start des Plugins wird getestet ...
  • ob eine HOME-Variabel existiert. Wenn ja, dann ist alles gut!
  • wenn nein, muß das Betriebssystem festgestellt werden (muß ich noch checken, ob das möglich ist!)
  • wenn es möglich ist, das OS festzustellen, dann würde ich im Falle eines Fehlens der HOME-Variable unter Linux (und Mac) das Verzeichnis /tmp und unter Windows das Verzeichnis C:\ verwenden. Zusätzlich wird noch eine Fehlermeldung auf der Konsole ausgegeben bzw. beim Skript-Start im Blender. Man könnte die Fehlermeldung ja auch als 3D-Schrift in Riesenlettern in das 3D-Modell einfügen ... :D

Na, was meint Ihr zu den Vorschlägen?

Servus, Woody

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »woody« (11. August 2007, 09:49)


Karton-Fan

Schüler

Beiträge: 3

Registrierungsdatum: 14. Juli 2007

  • Nachricht senden

33

Samstag, 11. August 2007, 18:53

Hallo woody und alle anderen Mitleser/schreiber,

Zitat

Das will ich eigentlich nicht, denn es ist ein sehr schlechter Programmierstil! Zum anderen müsste ich dann ein Betriebssystem fix annehmen, und das will ich nicht. Blender läuft auf verschiedenen Betriebssystemen (Linux, Windows, Mac) und Architekturen, also müssen das auch die Plugins und Skripte!


Da hast du vollkommen Recht, das Ziel ist ja ein Skript, das auf möglichst vielen Betriebssystemen läuft. Ein festes Verzeichnis würde wieder auf anderen Betriebssystemen als Windows Ärger machen.

Zitat

Ich denke mir momentan folgende Vorgehensweise: Nach dem Start des Plugins wird getestet ...


Die Lösung hört sich gut an, das würde ein einrichten der HOME-Variable unter Windows ersparen, obwohl das auch kein Beinbruch ist. Selbst recht unerfahrene Anwender(was die meisten Blender-Benutzer wohl nicht sind) sollten das schaffen.

Zitat

* Man könnte die Fehlermeldung ja auch als 3D-Schrift in Riesenlettern in das 3D-Modell einfügen ...


Sorgt für die ultimative Frustration beim Benutzer. :D

Gruß, Karton-Fan

MiZi

Fortgeschrittener

  • »MiZi« ist der Autor dieses Themas

Beiträge: 215

Registrierungsdatum: 29. April 2005

  • Nachricht senden

34

Sonntag, 12. August 2007, 16:03

Zitat

Die Lösung hört sich gut an, das würde ein einrichten der HOME-Variable unter Windows ersparen, obwohl das auch kein Beinbruch ist. Selbst recht unerfahrene Anwender(was die meisten Blender-Benutzer wohl nicht sind) sollten das schaffen.

Wobei ab Win2000 eigentlich diese Variable da sein sollte und für jeden Benutzer in sein "Eigene Dateien"-Verzeichnis zeigen sollte (ein Schritt in Richtung Unix).

Zitat

unter Linux (und Mac) das Verzeichnis /tmp und unter Windows das Verzeichnis C:\ verwenden

Vorsicht! Anzunehmen, dass unter Windows auf jeden Fall ein "C:\" existiert, ist unsicher! Ich sitze hier gerade an meinem Laptop, den ich frisch mit Kubuntu/WinXP dual-Boot neu eingerichtet habe. Erste Partition ext3 Kubuntu, 2. Part. swap, 3. Partition NTFS WinXP. Unter Win habe ich A: (Floppy), D: (DVD) und F: (HDD)...

Besser: in der Blender-API gibt es irgendwo eine Funktion, mit der man das Blender-Skripte-Verzeichnis herausbekommt. Dort drin ist ein Verzeichnis "config" oder "scriptconfig" oder so ähnlich, das ist genau für unsere Zwecke vorhanden! Unter windows ist das im Blender-Programmverzeichnis, unter Linux im Homeverzeichnis des Benutzers, unter MacOS... ???

Beste Grüße,
Micha

Kathrin

Schüler

  • »Kathrin« ist weiblich

Beiträge: 26

Registrierungsdatum: 21. Juni 2005

  • Nachricht senden

35

Dienstag, 4. September 2007, 17:33

Hallo,

da ich im Moment mehr oder weniger ernsthaft ein Modell konstruiere, habe ich mir das script nochmal näher angesehen und ein paar Verbesserungen (glaub ich wenigstens) implementiert. Jetzt bleiben nur noch ein paar Fragen und Anmerkungen übrig.

a) Es ist keinerlei Hinweis auf eine Lizenz vorhanden, das macht es schwierig das Skript und Änderungen daran weiterzugeben. Eine Bitte hier an die beiden original Autoren, das zu ändern.

b) Wenn a) geklärt ist, wie und wo sollten Änderungen gepostet werden? Einfach hier im Thread, Webseite, E-Mail an den Maintainer?

c) Da das Gui-Skript eben nicht nur ein Frontend ist, sondern auch den Outliner-Code umfasst, sollte das GUI-Skript der "offizielle" Outliner werden. Und dann eben auch so benannt werden. Die aktuelle Fassung Benennung halte ich für kompliziert und selbst aus dem Thread ist nicht ganz ersichtlich was man eigentlich braucht.

d) Mir fallen bestimmt demnächst noch mehr Dinge ein:)

Kathrin

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

36

Freitag, 26. Oktober 2007, 21:36

Hallo Kathrin,
hallo MiZi,
hallo Klebegemeinde,

jetzt bin ich endlich soweit fertig geworden, die besprochenen Verbesserungen einzubauen:
  • Wenn die HOME-Umgebungsvariable nicht existiert, gibt es eine Warnung, und das Skript beendet sich (Bild 1); zusätzlich wird auf Konsolen-Ebene eine einigermaßen eindeutige Fehlermeldung ausgegeben.
  • Von Kathrin kam die Verbesserung, daß man die SVG-Linienzüge weiter spezifizieren kann
  • Ich habe noch eine Längen-Kalkulator eingebaut: ich tue mir immer etwas schwer, bei variablen Skalierungsfaktoren die spätere Länge zu überschlagen; deshalb habe ich eine Längenkalkulator eingebaut, der das in Abhängigkeit vom Streckungsfaktor automatisch erledigen kann

Eine Menü-Übersicht findet Ihr in Bild 2. Das Script ist ebenfalls als V1.2-RC1 beigefügt.

OK, Kathrin, MiZi und alle Interessierten: jetzt gebt mal Eueren Senf dazu. Wie gesagt: es wäre jederzeit möglich, die Fehlermeldung als 3D-Text in das Modell einzufügen ... :D

Servus, und viele Grüße, Woody
»woody« hat folgende Bilder angehängt:
  • outliner-gui-01.jpg
  • outliner-gui-02.jpg
»woody« hat folgende Datei angehängt:

woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

37

Sonntag, 28. Oktober 2007, 13:29

Tja, jetzt habe ich doch noch ein paar Fehlerchen und Schwächen entdeckt:
  • Natürlich ist es schön, wenn man die Längen umrechnen kann, aber dann sollte auch eine Längenangabe auswählbar sein
  • Beim Aktualisieren des Profils gab es Probleme
  • ... und langsam wurde das Menü ein bischen unübersichtlich 8o

Daher gibt es jetzt das Outliner-Plugin in der Version 1.2rc2 mit einem Bildschirm-Schnappschuss.

Servus, Woody
»woody« hat folgendes Bild angehängt:
  • outliner-gui-03.jpg
»woody« hat folgende Datei angehängt:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »woody« (28. Oktober 2007, 13:30)


woody

Meister

  • »woody« ist männlich

Beiträge: 2 577

Registrierungsdatum: 20. Mai 2004

Beruf: Dipl.-Informatiker

  • Nachricht senden

38

Montag, 29. Oktober 2007, 20:54

Und dann ist mir beim Kopieren im Text auch noch ein Fehler passiert; daher folgendes Update:
»woody« hat folgende Datei angehängt:

Social Bookmarks