Makro gesucht Drehen Draw

Hallo,

In meiner Freizeit programmiere ich ein Spiel. Da ich kein guter Grafiker bin verwende ich LibreOffice Draw. (Was sogar besser als GIMP für den Zweck funktioniert)

Ich erstelle eine Seite (quadratisch) und ein Icon, das die ganze Seite füllt. Ist schlussendlich eine Gruppe. (Also alle Elemente dieser Seite).
Folgendes muss jetzt 49 Mal händisch gemacht werden:

1) Neue Seite erstellen (Vorherige Kopieren)
2) Alle Elemente um (bei mir jetzt, wäre nett wenn man das als Schritt 0 einstellen könnte) -7,2° drehen (Zentrum Mitte des Objekts, da das gleichzeitig die Mitte der Seite ist) [Um mehr Fälle abzudecken wäre es auch nett die Anzahl der Drehungen abzufragen]

Danke an all die Könner auf dieser Liste!

Liebe Grüße, / Yours,
Florian Reisinger

Hallo Florian,

zwei Fragen:
Brauchst du tatsächlich eine Dezimalzahl beim Drehwinkel?
Brauchst du das Makro selbst oder nur das Ergebnis des Rotierens?

Im Fall ganzzahliger Drehwinkel möglich und nur Ergebnis interessant, mache folgendes: Gruppiere alles in 1 Gruppe und dupliziere die Gruppe mit Drehwinkel in der gewünschten Anzahl. Duplizieren ist im Menü Bearbeiten > Vervielfältigen.

Mit freundlichen Grüßen
Regina

Florian Reisinger schrieb:

Hallo,

Comments inline, Schau es mir morgen an

Liebe Grüße, / Yours,
Florian Reisinger

Hallo Florian,

zwei Fragen:
Brauchst du tatsächlich eine Dezimalzahl beim Drehwinkel?

Ja, 7,2 Grad ist so ziemlich muss

Brauchst du das Makro selbst oder nur das Ergebnis des Rotierens?

Ich will ohne viel zu tuen das Ergebnis

Im Fall ganzzahliger Drehwinkel möglich und nur Ergebnis interessant, mache folgendes: Gruppiere alles in 1 Gruppe und dupliziere die Gruppe mit Drehwinkel in der gewünschten Anzahl. Duplizieren ist im Menü Bearbeiten > Vervielfältigen.

Schade, dass das nur mit Dezimalzahlen geht.... Schau es mir morgen trotzdem an...
So ähnlich hab ich es jetzt auch per Hand gemacht (Copy and Paste und Drehen -> Oben linker Anfasser nach einen Schritt nach links (hab den schritt auf 7,2 Grad umgestellt

Hallo Florian,

1) Neue Seite erstellen (Vorherige Kopieren) 2) Alle Elemente um (bei
mir jetzt, wäre nett wenn man das als Schritt 0 einstellen könnte)
-7,2° drehen (Zentrum Mitte des Objekts, da das gleichzeitig die
Mitte der Seite ist) [Um mehr Fälle abzudecken wäre es auch nett die
Anzahl der Drehungen abzufragen]

Ich mache so etwas zwar auch nur per Trial and Error, aber der Folgende
Code macht mir bei einem Rechteck auf der Seite (oder eben bei nur einem
Objekt) lauter neue Seiten, bei denen das Ganze schrittweise gedreht wird.

SUB NeueSeite
  DIM oDoc AS OBJECT
  DIM oSeiten AS OBJECT
  DIM oSeite AS OBJECT
  DIM oShape AS OBJECT
  DIM inZahl AS INTEGER
  oDoc = ThisComponent
  oSeiten = oDoc.getDrawPages()
  inZahl = InputBox("Wie viele neue Seiten sollen's sein?")
  inZahl = inZahl -1
  FOR i = 0 TO inZahl
    oDoc.duplicate(oSeiten.getByIndex(i))
    oSeite = oSeiten.getByIndex(i+1)
    oShape = oSeite.getByIndex(0)
    oShape.RotateAngle = 720 * (i+1)
  NEXT
END SUB

Gruß

Robert

Keine Möglichkeit, das von 50 Schritte pro volle Umdrehung aka 360° auf
60 Schritte zu ändern?

Und wenn Du die ersten 5 Schritte (0°/7,2°/14,4°/.../28,8°) manuell
erstellst, und diesen Satz dann mit jeweils 36* vervielfältigst?

Wolfgang

Hallo Robert,

Danke!

Hat toll funktioniert!

Die Zeile "oShape.RotateAngle = 720 * (i+1)" werde ich nie verstehen.... (Wegen 720 als 7,2 Grad).

Liebe Grüße, / Yours,
Florian Reisinger

Hallo Florian,

Die Zeile "oShape.RotateAngle = 720 * (i+1)" werde ich nie verstehen.... (Wegen 720 als 7,2 Grad).

habe ich auch nur bei Thomas Krumbein abgeguckt. Du kannst die
Grad-Angabe so zwar in ganzen Zahlen angeben, definierst aber eigentlich
die Hundertstel.
* (i+1) → das soll dafür sorgen, dass in der Schleife die Drehung immer
größer wird. Ich habe das erst ohne probiert, da ich dachte: Das Objekt
ist ja nach dem ersten Mal bereits 7,2° gedreht. Anscheinend wird aber
immer vom Ursprungsobjekt ausgegangen. Dann musst Du natürlich den Wert
entsprechend mit der Schleife mit vergrößern.

Gruß

Robert

Ohne mich da jetzt einmischen zu wollen, aber vernünftige
Programmiersprachen haben auch eine vernünftige Bibliothek, um mit Bildern
arbeiten zu können. Ich nehme mal an, dass du die Bilder irgendwie per
Screenshot aus dem Programm entnimmst und dann in einem Ordner ablegst, um
darauf in deinem Spiel zurückgreifen zu können -> wahrscheinlich würde ich
die Einheit einmal definieren und dann per Laufzeit im Programm drehen und
positionieren, wo ich die haben will...

Nur am Rande: Mal mit Python gearbeitet? Da gibt es PIL und Pygame, die man
sich ansehen kann. Das ginge da m. E. flott und zügig und unkompliziert...

BG Michael

Hi Robert

Hallo Florian,

Die Zeile "oShape.RotateAngle = 720 * (i+1)" werde ich nie verstehen.... (Wegen 720 als 7,2 Grad).

habe ich auch nur bei Thomas Krumbein abgeguckt. Du kannst die
Grad-Angabe so zwar in ganzen Zahlen angeben, definierst aber eigentlich
die Hundertstel.

Genau das ,meinte ich, ist IMHO ein Bug
(i+1) ist mir als Programmierer (nein, nicht LibO Basic :wink: ) klar, danke Trotzdem :smiley:

* (i+1) → das soll dafür sorgen, dass in der Schleife die Drehung immer
größer wird. Ich habe das erst ohne probiert, da ich dachte: Das Objekt
ist ja nach dem ersten Mal bereits 7,2° gedreht. Anscheinend wird aber
immer vom Ursprungsobjekt ausgegangen. Dann musst Du natürlich den Wert
entsprechend mit der Schleife mit vergrößern.

Gruß

Robert

Liebe Grüße, / Yours,
Florian Reisinger