Search code examples
javascriptadobe-illustratorextendscriptjsx

Illustrator ExtendScript set FILL opacity of selection


Is there any way to access a pathItem's fill opacity with javascript? I can access the overall opacity, but I want to lower the opacity of the fill while keeping the stroke fully opaque.

I can't find anything in the documentation, nor can I find anyone else asking this question.

I can set the overall opacity like so:

var selection = app.activeDocument.selection;
selection[0].opacity = 50;

I've tried every variant of "fillOpacity" that I can think of, like this:

var selection = app.activeDocument.selection;
selection[0].fillOpacity = 50;
selection[0].FillOpacity = 50;
selection[0].fill.opacity = 50;

...but it doesn't work.

Am I going about this wrong, or is this just not possible?


Solution

  • You cannot access it, as you cannot access it normally even in illustrator. This is a Photoshop property only. I checked the documentation as well just to make sure. What you could do is this though and it would accomplish same thing:

    doc = app.activeDocument;
    i = 0
    var selection = doc.selection[i];
    var storedColor = doc.selection[i].fillColor;
    
    //new object with only fill, we send it to back so it doesn't overlap stroke, if there is one
    var newObject = app.selection[i].duplicate(doc, ElementPlacement.PLACEATEND);
    //turn off fill for first object
    doc.selection[i].filled = false;
    i = i + 1;
    newObject.stroked = false;
    //apply stored color from earlier to new shape
    newObject.fillColor = storedColor;
    newObject.opacity = 50;
    newObject.name = "50p fill";