This website uses cookies. By continuing to use our site you declare your agreement. More Information

Dear visitor, welcome to Kartonbau.de - Alles rund um Papiermodelle, Kartonmodellbau und Bastelbogen. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

1

Tuesday, February 27th 2007, 9:30pm

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 has attached the following file:

  • "hemingway" is male

Posts: 2,214

Date of registration: Jan 31st 2006

Occupation: Arzt

  • Send private message

2

Tuesday, February 27th 2007, 10:13pm

Danke, Mizi!
Schreib weiter so hilfreiche Scripts!

Herzlichen Gruss
Bernhard

MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

3

Tuesday, February 27th 2007, 10:51pm

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 has attached the following images:
  • kb011.jpg
  • kb012.jpg
  • kb013.jpg
  • kb014.jpg
  • kb015.jpg

MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

4

Tuesday, February 27th 2007, 11:10pm

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 has attached the following images:
  • kb016.jpg
  • kb017.jpg
  • kb018.jpg
  • kb019.jpg
  • kb020.jpg

MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

5

Tuesday, February 27th 2007, 11:37pm

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 has attached the following images:
  • kb021.jpg
  • kb022.jpg

woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

6

Friday, March 2nd 2007, 6:48am

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 has attached the following image:
  • bild-01.jpg

woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

7

Friday, March 2nd 2007, 7:19am

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

This post has been edited 2 times, last edit by "woody" (Mar 2nd 2007, 7:26am)


woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

8

Friday, March 2nd 2007, 7:23am

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

Quoted

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

Servus

MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

9

Friday, March 2nd 2007, 8:37am

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 has attached the following file:

MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

10

Friday, March 2nd 2007, 9:48am

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

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

11

Monday, March 5th 2007, 12:28pm

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 has attached the following file:

woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

12

Wednesday, March 7th 2007, 7:43am

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:

Quoted

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

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

13

Thursday, March 8th 2007, 10:11am

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

Posts: 3,324

Date of registration: Oct 10th 2005

  • Send private message

14

Thursday, March 8th 2007, 10:46am

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

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

15

Thursday, March 8th 2007, 11:03am

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

This post has been edited 1 times, last edit by "MiZi" (Mar 8th 2007, 11:04am)


woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

16

Thursday, March 8th 2007, 8:21pm

@Mizi:

Quoted

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.

Quoted

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:

Quoted

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

Sage

  • "Ernst" has been banned

Posts: 3,874

Date of registration: Feb 17th 2004

  • Send private message

17

Thursday, March 8th 2007, 9:24pm

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

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

18

Saturday, March 17th 2007, 5:42pm

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

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

19

Saturday, March 17th 2007, 5:52pm

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 has attached the following image:
  • bild-02.jpg
woody has attached the following file:
  • gui.py.zip (1.94 kB - 48 times downloaded - latest: Apr 14th 2015, 8:08am)

MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

20

Monday, March 19th 2007, 11:10am

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 has attached the following file:
  • gui_11.py.zip (3.01 kB - 113 times downloaded - latest: Apr 14th 2015, 8:08am)

woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

21

Monday, March 19th 2007, 8:47pm

Hallo Micha,

Quoted

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 has attached the following image:
  • bild-01.jpg

woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

22

Monday, March 19th 2007, 8:51pm

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 has attached the following image:
  • bild-02.jpg

woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

23

Monday, March 19th 2007, 8:58pm

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:

Quoted

#!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:

Quoted

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

This post has been edited 1 times, last edit by "woody" (Mar 19th 2007, 9:00pm)


MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

24

Wednesday, March 21st 2007, 8:16pm

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

Trainee

  • "ullrich_h" is male

Posts: 5

Date of registration: Aug 16th 2004

  • Send private message

25

Tuesday, May 8th 2007, 5:42pm

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

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

26

Tuesday, May 8th 2007, 8:34pm

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

Trainee

  • "Alexander" is male

Posts: 16

Date of registration: Jul 31st 2006

Occupation: Informatiker

  • Send private message

27

Wednesday, May 9th 2007, 10:17am

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

Trainee

Posts: 3

Date of registration: Jul 14th 2007

  • Send private message

28

Monday, July 23rd 2007, 5:57pm

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 has attached the following image:
  • Fehler.jpg

This post has been edited 1 times, last edit by "Karton-Fan" (Jul 23rd 2007, 5:59pm)


MiZi

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

29

Sunday, July 29th 2007, 11:41pm

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

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

30

Tuesday, July 31st 2007, 9:13pm

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 ... ;)

Quoted

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

Trainee

Posts: 3

Date of registration: Jul 14th 2007

  • Send private message

31

Friday, August 10th 2007, 5:51pm

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

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

32

Saturday, August 11th 2007, 9:47am

Hallo Karton-Fan,
hallo alle zusammen

Quoted

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.

Quoted

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!

Quoted

... 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

This post has been edited 1 times, last edit by "woody" (Aug 11th 2007, 9:49am)


Karton-Fan

Trainee

Posts: 3

Date of registration: Jul 14th 2007

  • Send private message

33

Saturday, August 11th 2007, 6:53pm

Hallo woody und alle anderen Mitleser/schreiber,

Quoted

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.

Quoted

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.

Quoted

* 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

Intermediate

  • "MiZi" started this thread

Posts: 215

Date of registration: Apr 29th 2005

  • Send private message

34

Sunday, August 12th 2007, 4:03pm

Quoted

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).

Quoted

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

Trainee

  • "Kathrin" is female

Posts: 26

Date of registration: Jun 21st 2005

  • Send private message

35

Tuesday, September 4th 2007, 5:33pm

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

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

36

Friday, October 26th 2007, 9:36pm

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 has attached the following images:
  • outliner-gui-01.jpg
  • outliner-gui-02.jpg
woody has attached the following file:

woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

37

Sunday, October 28th 2007, 1:29pm

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 has attached the following image:
  • outliner-gui-03.jpg
woody has attached the following file:

This post has been edited 1 times, last edit by "woody" (Oct 28th 2007, 1:30pm)


woody

Master

  • "woody" is male

Posts: 2,577

Date of registration: May 20th 2004

Occupation: Dipl.-Informatiker

  • Send private message

38

Monday, October 29th 2007, 8:54pm

Und dann ist mir beim Kopieren im Text auch noch ein Fehler passiert; daher folgendes Update:
woody has attached the following file:

1 user apart from you is browsing this thread:

1 guests

Social bookmarks