Illustrator: Wie kann man die Strichstärke proportional ändern, ohne die Objekte zu skalieren?

Ich habe eine Reihe von Linien mit unterschiedlichen Strichstärken. Gibt es eine direkte Möglichkeit, alle Strichstärken proportional zu verringern/erhöhen, ohne die Größe der Objekte zu ändern?

Danke Newton

Antworten (3)

Sie können das folgende Skript verwenden. Es ändert die Breite aller Striche im Dokument entsprechend dem Perzentilwert.

//here you can change the stroke percentual
var myA = prompt("Choose your %","80","Change width stroke");
var myPercentile = myA/100;

if(myA!=null){

    // choose all page elements
    for (var i=0;i<app.activeDocument.pageItems.length;i++){
        var myLayer = app.activeDocument.pageItems[i];

        //if element is compound make a new loop for pathItems
        if(myLayer.typename=="CompoundPathItem"){
            for(var u=0;u<myLayer.pathItems.length;u++){

                //take actual stroke size
                var myPath = myLayer.pathItems[u];
                var myMeasure = myPath.strokeWidth;

                //transform the stroke width into % choose at start
                myPath.strokeWidth = myMeasure*myPercentile;
                }

            }

        if(myLayer.typename=="PathItem"){
                var myMeasure = myLayer.strokeWidth;
                myLayer.strokeWidth = myMeasure*myPercentile;
            }
        }
    }
So stellen Sie sicher, dass es nur für ausgewählte Artikel gilt
Die Verwendung von strokeWidth ist nicht angemessen, wenn ein Objekt mehrere Striche hat.
@bisketashwin Mit diesem Skript können Sie dies nicht tun, da es nicht auf ausgewählte Elemente abzielt, sondern auf die Elemente der gesamten Seite.

Wählen Sie „Transformieren“ → „Skalieren“ oder „Verkleinern“ (oder „Vergrößern“) mit aktivierten Skalierungsstrichen und -effekten. Dann noch einmal mit dem entgegengesetzten Skalenwert skalieren, dieses Mal Skalenstriche und Effekte deaktivieren. Erledigt.

Dies ist kein sehr guter Ansatz, wenn Sie Pixel-Snapping verwenden, da es Jitter einführt (anstelle einer Matrixverkettung). In diesem Fall würde ich in Betracht ziehen, dies zu skripten.

Hier können wir den Strich entlang der Objektskalierung skalieren. Was jedoch erforderlich ist, ist das Skalieren nur von Strichen, ohne das Objekt zu skalieren
@bisketashwin Das ist genau das, was ich beschreibe. Schritt 1 Sie skalieren das Objekt mit aktivierten Skalierungsstrichen . Schritt 2 , dann deaktivieren Sie die Option Striche skalieren und skalieren umgekehrt . Das Endergebnis Striche Skalierung Objekt bleibt gleich. Meine Antwort erfüllt also das, was erforderlich ist. Versuchen Sie, es funktioniert, es ist ein affiner Standardtransformationstrick, der so verbreitet ist, dass er sogar einen wissenschaftlichen Namen hat.

Führen Sie einfach dieses Skript aus:

if (documents.length) {
    sel = activeDocument.selection;
    if (sel[0]) {
        dial = new Window("dialog", "Scale Stroke Width");

        gr = dial.add("group");
        gr.add("statictext", undefined, "Scale Stroke Width by:");
        perc = gr.add("edittext");
        perc.characters = 5;
        perc.onChanging = function () {ok.enabled = !isNaN(perc.text)}
        gr.add("statictext", undefined, "%");

        ok = dial.add("button", undefined, "OK");

        if (dial.show() == 1) for (i = 0; i < sel.length; i++)
        sel[i].resize(100, 100, undefined, undefined, undefined, undefined, perc.text);
    }
}