Drehen einer Ebene um die Mitte und Speichern der Datei (72 Mal)

Ich muss eine Grafik drehen, die ich in Adobe Illustrator erstellt habe.

Geben Sie hier die Bildbeschreibung ein

Die Komplikation besteht darin, dass nur die Pfeilebene gedreht werden muss (um die Bildmitte herum). Das schließt aus, die Datei einfach in ein Programm zu werfen und alle 5 Grad ausgeben zu lassen, sonst würde sich das Bussymbol in der Mitte auch drehen. Es muss die Pfeilebene alle 5 Grad speziell um die Mitte drehen, also beschränkt mich das vermutlich auf interne Illustrator/Photoshop-Skripte?

Es gibt auch verschiedene Farbvariationen. Dies von Hand zu tun, wird viele Stunden dauern. Gibt es eine Möglichkeit, dies mit einem Skript zu vereinfachen, das die Pfeilebene für mich drehen und dann die Datei speichern kann?

Können Sie das Rondell und den Pfeil nicht einfach zu zwei separaten Objekten machen und sie dann in der App, auf der Webseite oder was auch immer neu kombinieren und die Drehung nur dem Pfeil hinzufügen?
@Chris Ich habe darüber nachgedacht, aber leider, da dies eine Google Maps-Anwendung mit oft über 100 Markierungen ist, würde das Verdoppeln und Tun, was Sie vorschlagen, 200 Markierungen erstellen, was zu Leistungsproblemen führt

Antworten (2)

Dies ist ein sehr schnelles Skript, das das tun sollte, was Sie brauchen:

#target illustrator

var doc = app.activeDocument;
var docName = doc.name.replace(/\.[^\.]+$/, ''),
    docDir = ( doc.path != '' ) ? doc.path : '~';

var angle = 5,
    iterations = 71,
    layerToRotate = 'rotateMe',
    destFolder = 'files';

rotateAndExport();

/**
 * This is where the magic happens...
 */
function rotateAndExport() {

    // loop through layers
    for ( var i = 0; i < doc.layers.length; i++ ) {

        // loop through layer's pageItems
        var layer = doc.layers[i];
        if ( layer.name == layerToRotate ) {
            for ( var j = 0; j < layer.pageItems.length; j++ ) {
                var item = layer.pageItems[j];

                // rotate and export
                for ( var r = 0; r < iterations; r++ ) {
                    item.rotate( angle );
                    exportFileAs( 'PNG', r );
                    exportFileAs( 'SVG', r );
                }
            }
        }
    }
}

/**
 * Export as PNG or SVG
 */
function exportFileAs( fileType, iteration ) {

    // create folder if it doesn't exist
    var destPath = docDir + '/' + destFolder;
    if ( false == Folder( destPath ).exists ) {
        new Folder( destPath ).create();
    }

    // export options
    var destFile;
    var type;
    var exportOptions;

    if ( 'PNG' == fileType ) {

        // create folder if it doesn't exist
        var pngPath = destPath + '/PNG/';
        if ( false == Folder( pngPath ).exists ) {
            new Folder( pngPath ).create();
        }
        destFile = new File( pngPath + '/' + docName + '_' + iteration.toString() );

        type = ExportType.PNG24;
        exportOptions = new ExportOptionsPNG24();
        exportOptions.artBoardClipping = true;
        exportOptions.transparency     = true;

    } else if ( 'SVG' == fileType ) {

        // create folder if it doesn't exist
        var svgPath = destPath + '/SVG/';
        if ( false == Folder( svgPath ).exists ) {
            new Folder( svgPath ).create();
        }
        destFile = new File( svgPath + '/' + docName + '_' + iteration.toString() );

        type = ExportType.SVG;
        exportOptions = new ExportOptionsSVG();
        exportOptions.preserveEditability   = false;
        exportOptions.embedRasterImages     = true;
        exportOptions.embedAllFonts         = false;
        exportOptions.encoding              = SVGDocumentEncoding.UTF8;
        exportOptions.fontType              = SVGFontType.OUTLINEFONT;
    }

    // export
    doc.exportFile( destFile, type, exportOptions );
}

Ändern Sie das angleund iterationsin das, was Sie brauchen.

Ändern Sie layerToRotateden Namen der Ebene, die Sie drehen müssen.

Wechseln Sie destFolderzu einem Ordnernamen, in dem die Dateien gespeichert werden sollen, der am selben Ort erstellt wird, an dem Ihre Datei gespeichert wird (oder in Ihrem Home-Verzeichnis).

Das Skript exportiert in PNG und SVG in ihre eigenen Ordner. Sie können weitere Dateitypen hinzufügen, indem Sie typeund exportOptionsin exportFile()etwas anderes ändern.

Die Drehung beginnt in der Mitte aller Objekte auf der Ebene, also sollten Sie ein unsichtbares Rechteck mittig auf der Zeichenfläche (oder wo immer Sie drehen möchten) über Ihrem Pfeil zeichnen und alles gruppieren, wie ich es hier habe:

Geben Sie hier die Bildbeschreibung ein

Führen Sie das Skript aus und Sie sollten so etwas erhalten:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass dies alles auf CS6 erfolgt; Ich weiß nicht, ob sich etwas geändert hat und kann es nicht auf neueren Versionen testen.

@jskidd3 hat bemerkt, dass Sie beide markiert svgund pngso aktualisiert haben, um beide zu exportieren
Hmm. Ich habe Ihren Rat bezüglich des Hinzufügens des unsichtbaren Rechtecks ​​befolgt, aber meine Pfeile drehen sich immer noch um die Mitte des Pfeils selbst. Irgendwelche Ideen? i.imgur.com/AHMzvjE.png
Sie müssen das unsichtbare Rechteck und den Pfeil gruppieren.
So was? Wenn ich das Skript jetzt ausführe, tut es nichts. Tut mir leid, ich bin neu bei Illustrator (aber seltsamerweise fließend in JS) i.imgur.com/JTgoblr.png
Sieht so aus, als wäre das eher eine Unterebene als eine Gruppe? (Es wird oben links angezeigt, wo derzeit "keine Auswahl" steht). Ich bin mir ziemlich sicher, dass sich eine Ebene selbst nicht dreht, also würde das Sinn machen; Sie brauchen eine tatsächliche Gruppe, also haben Sie Ihren Pfeil und Ihr Rect auf der Ebene, wählen Sie beide aus und drücken Sie Strg+g (sollte so sein: i.stack.imgur.com/0tynY.png )
Ahh, du bist ein Heiliger. Vielen Dank. Du wirst nicht glauben, wie lange ich das versuche!
Kein Problem, helfe gerne
  1. Erstellen Sie ein Begrenzungsrahmenobjekt, das den für die Drehung erforderlichen korrekten Ursprung (in der Mitte des Begrenzungsrahmenobjekts) festlegt und auch zu dem Objekt passt, das Sie drehen möchten. Färben Sie das Begrenzungsrahmenobjekt mit etwas Einzigartigem, damit es später einfach ausgewählt werden kann.
  2. Wählen und gruppieren Sie den Begrenzungsrahmen und die Objekte, die Sie drehen möchten (aber nicht die Objekte, die Sie festhalten möchten).
  3. Wählen Sie ObjectTransformTransform Each, und drehen und verschieben Sie sie nach Bedarf. Ich habe in diesem Beispiel 5º und 20 Pixel verwendet. Klicken Sie hier, Copyum eine neue Kopie zu übersetzen.
  4. Drücken Sie ⌘D71 Mal, um die transformierten Duplikate zu erstellen.

Adobe Illustrator-Transformation

  1. Drücken Sie , Aum das Direktauswahl-Werkzeug auszuwählen.
  2. Klicken Sie auf eines der Begrenzungsrahmenobjekte.
  3. Wählen Sie SelectSameFill Color, um alle Begrenzungsrahmenobjekte auszuwählen.
  4. Drücken Sie Löschen.
  5. Wählen Sie die anderen Objekte aus, die Sie duplizieren (aber nicht drehen) möchten.
  6. Wählen Sie ObjectTransformTransform Each, und verschieben Sie nach Bedarf. Klicken Sie hier, Copyum eine neue Kopie zu übersetzen.
  7. Drücken Sie ⌘D71 Mal, um die transformierten Duplikate zu erstellen.

Adobe Illustrator-Transformation

Jetzt haben Sie die Grafik, Sie können Slices oder Zeichenflächen verwenden, um sie nach Bedarf zu exportieren.