java爱好者
等级: 六袋长老
|
|
Uid: 140648
注册日期: 2010-01-12, 13:36
来自: 余姚
年龄: 34
感谢: 267
381 个帖子获得 891 次感谢
现金: 1854金币
资产: 1954金币
声望: 11
|
|
java爱好者
Uid: 140648
注册日期: 2010-01-12, 13:36
来自: 余姚
年龄: 34
感谢: 267
381 个帖子获得 891 次感谢
现金: 1854金币
资产: 1954金币
声望: 11
|
添加一个随机 不重复的色块
这个东西的背景是这样的:
假如一个拼版里面有N款产品,每个产品都很相近,不好区分,添加色块 就容易区别
跨文档的不重复
PHP 代码:
var sels = activeDocument.selection; var 字体 ='MicrosoftYaHei'; var 字号 = 40; var 文字颜色 = getCMYKColorByArr([0,0,0,0]);//白色的意思 var 随机不可重复值 = 7; addShape(sels[0],50,40,'矩形',字体,字号,文字颜色,随机不可重复值)
//获取颜色数组 function getArr(){ //这里的颜色我自己随便定义的。 return [ [100,0,0,0],//0青色 [0,100,0,0],//1洋红 [0,0,100,0],//2黄色 [0,0,0,100],//3黑色 [100,100,0,0],//4蓝色 [0,100,100,0],//5大红 [100,0,100,0],//6绿色 [0,50,100,0],//7橘色 [30,0,100,0],//8浅绿 [0,0,0,50],//9灰色 [20,0,0,0],//10浅蓝 [0,20,0,0],//11粉色 [50,100,0,0],//12紫色 ] }
//添加一个圆 颜色随机 function addShape(shape,w,h,itype,fontName,fontSize,textColor,roundLength){ var pt = 72/25.4 w = w * pt; h = h * pt; var bounds = shape.geometricBounds; var left = bounds[0]; var top = bounds[3]; var width = bounds[2]-bounds[0]; var height = bounds[1]-bounds[3]; var newShape = null;
if (itype == '矩形'){ newShape = activeDocument.pathItems.rectangle( top+height/2+h/2,left+width/2-w/2,w,h); }else if(itype == '椭圆'){ newShape = activeDocument.pathItems.ellipse( top+height/2+h/2,left+width/2-w/2,w,h); } if(newShape!=null){ var arr2 = getArr(); var roundIndex = getRoundIndex(0,arr2.length-1,roundLength); textX = left+width/2; textY = top+height/2; addText(roundIndex,fontSize,fontName,textColor,textX,textY); newShape.fillColor=getCMYKColorByArr(arr2[roundIndex]);//无填色 newShape.stroked=false;//有描边 } }
function addText(roundIndex,fontSize,fontName,textColor,textX,textY){ var textShape = activeDocument.textFrames.add(); textShape.contents = roundIndex+''; textShape.textRange.characterAttributes.size=fontSize; //字体大小 textShape.textRange.characterAttributes.textFont = textFonts.getByName(fontName); textShape.textRange.characterAttributes.fillColor = textColor;//填充颜色 textShape.left = textX-textShape.width/2; textShape.top = textY+textShape.height/2; }
//获取一个不重复的随机数 function getRoundIndex(minNum,maxNum,roundLength){ var str = readTxt(); var index = randomNum(minNum,maxNum); if(str!=''){ var txtArr=[]; if(str.indexOf(',')!=-1){ txtArr = readTxt().split(','); }else{ txtArr[0] = str; } var k =0; if(txtArr.length>roundLength){ txtArr.splice(0,1); } while(indexIsInArr(txtArr,index)){ index = randomNum(minNum,maxNum); k++; if(k>100){ break; } } var tempStr = ''; for(m=0;m<txtArr.length;m++)tempStr =tempStr + txtArr[m]+',' tempStr = tempStr+index; writeTxt(tempStr); }else{ writeTxt(index); } return index; } //数组是否包含改数字 function indexIsInArr(arr,index){ for(n=0;n<arr.length;n++) { if(arr[n]==index){ return true; } } return false; } //获取随机数 function randomNum(minNum,maxNum){ switch(arguments.length){ case 1: return parseInt(Math.random()*minNum+1,10); break; case 2: return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10); break; default: return 0; break; } } //根据数组获取颜色 function getCMYKColorByArr(arr){ return getCMYKColor(arr[0],arr[1],arr[2],arr[3]); } //根据 cmyk 值获取颜色 function getCMYKColor(c,m,y,k){ var cmykColor = new CMYKColor();//创建颜色变量 cmykColor.cyan= c;//设置颜色的值 cmykColor.magenta = m;//设置颜色的值 cmykColor.yellow = y;//设置颜色的值 cmykColor.black = k;//设置颜色的值 return cmykColor; }
function readTxt() {//建立函数 var txt;//宣告文件内容变数 var f =new File ('xxxxx.txt');//文件位置 try{ f.open('r'); txt=f.read(); f.close(); return txt; }catch (e){ return ''; } } function writeTxt(txt) {//建立函数 var f =new File ('xxxxx.txt');//文件位置 f.open('w'); f.write(txt); f.close(); }
此帖于 2020-11-30 15:11 被 jialan75 编辑.
|