Skip to main content
Jasonli
Participant
March 9, 2017
Answered

how to change both fill color and stroke color

  • March 9, 2017
  • 2 replies
  • 1237 views

hello guys,

i'm new to JS , i'm trying to write a script that can create some rectangle and put them in right places. it will create dieline for shippers.

and,here is my code

var mm =2.834645669291;

var doc = app.activeDocument;

var title = "Jason Li's 大箱脚本"; 

var LeftBar = Number(prompt ("是否有左侧粘贴条 0为无,如有请输入尺寸",0, title))*mm;

var length = Number(prompt ("输入长度",0, title))*mm;

var width = Number(prompt ("输入宽度",0, title))*mm;

var height = Number(prompt ("输入高度",0, title))*mm;

var copyvalue = length+width;

var rect = doc.pathItems;

    var noColor=new NoColor();

    newCMYKColor = new CMYKColor();

    newCMYKColor.black = 100;

    newCMYKColor.cyan = 0;

    newCMYKColor.magenta = 0;

    newCMYKColor.yellow = 0;

newGroup = app.activeDocument.groupItems.add();

newGroup.name = "Dieline";

var DielineLayer = doc.activeLayer;

    DielineLayer.name = "Dieline";

var rectsarr=new Array()

rectsarr[0] = rect.rectangle(0,0,length,height);

rectsarr[1] = rect.rectangle(0,length,width,height);

rectsarr[2] = rect.rectangle(width/2,0,length,width/2);

rectsarr[3] = rect.rectangle(width/2,length,width,width/2);

rectsarr[4] = rect.rectangle(-height,0,length,width/2);

rectsarr[5] = rect.rectangle(-height,length,width,width/2);

rectsarr[6] = rect.rectangle(0,copyvalue,length,height);

rectsarr[7] = rect.rectangle(0,length+copyvalue,width,height);

rectsarr[8] = rect.rectangle(width/2,copyvalue,length,width/2);

rectsarr[9] = rect.rectangle(width/2,length+copyvalue,width,width/2);

rectsarr[10] = rect.rectangle(-height,copyvalue,length,width/2);

rectsarr[11] = rect.rectangle(-height,length+copyvalue,width,width/2);

if(LeftBar>0){rectsarr[12] = rect.rectangle(0,-LeftBar,LeftBar,height);}

for (i=0;i<rectsarr.length;i++){

        rectsarr=rectsarr.filled=false;

        rectsarr=rectsarr.strokeColor=newCMYKColor;

    }

i'm changing the fillcolor to none( line 35) , it works , but at line 36 , i want to change the strokecolor , and it doesn't work.

BUT, if i delete or put line 35 below line 36 , the strokecolor will be change but fill color remain filled. very very weird. so i think i missed something .

please help me ! thanks!

This topic has been closed for replies.
Correct answer moluapple

Hi, line 35

rectsarr=rectsarr.filled=false;

is equivalent to

rectsarr.filled=false;

rectsarr=false;

so that line 36 will become

false = false.strokeColor = newCMYKColor;

Of cause that will make no sense.

So please change line 35&36 to:

rectsarr.filled=false; 

rectsarr.strokeColor=newCMYKColor; 

2 replies

Jasonli
JasonliAuthor
Participant
March 10, 2017

thanks

moluappleCorrect answer
Inspiring
March 9, 2017

Hi, line 35

rectsarr=rectsarr.filled=false;

is equivalent to

rectsarr.filled=false;

rectsarr=false;

so that line 36 will become

false = false.strokeColor = newCMYKColor;

Of cause that will make no sense.

So please change line 35&36 to:

rectsarr.filled=false; 

rectsarr.strokeColor=newCMYKColor;