Copy link to clipboard
Copied
Hello guys, I need a bit of help to automate my work.
I work with patterns (as a pattern designer), but I need to slightly automate my work.
There is this great function now "fill with ... pattern" and then you have scripts for those.
This said what I usually do is that I wokr on a couple of patterns, make the design then test test them on a big format blank file.
so
1. I do my drawing, then
2. click "define as a new pattern" and then
3. I open a fresh new fbig big file and
4. use "fill it with... pattern" and
5. select the last one I created...
So I tried to create an action / script so that I could you know, work in batches, having to decide which of the patterns are good on a big format only later.
When I Added exactly the same steps in the actions macro - it will work for the first file, but for the second it will still use the same pattern used previously, as the actions macro sees it as "fill it with pattern XXX" (namely, not as "last one used"), so I land up with all of the pictures in big format filled with the same pattern instead of different ones.
I was thinking about then modifying the macro so when I g oto step 4
4. use "fill it with... pattern" and
add " use script" among the scripts loading there, that would define something like "use the last pattern defined" - can be as well a code as "use newest pattern defined" or "use newest pattern added to the lot"
I understand the logic but I have no clue how to edit the scripts in this area.
This will save me hours of work, so all of your help will be more than appreciated.
Copy link to clipboard
Copied
Can anyone read the script? Auto fill pattern script. But the script is not working. help me #target photoshop;
main();
function main(){
if(!documents.length) return;
var patt = new File(Folder.temp + "/tempPatterns");
if(patt.exists) patt.remove();
savePatterns(patt);
var patterns = getPatternsFromFile(patt);
fillPattern(patterns[patterns.length-1][0].toString(),patterns[patterns.length-1][1].toString(), 100);
};
function savePatterns(file) {
var desc625 = new ActionDescriptor();
desc625.putPath( charIDToTypeID('null'), new File( file ) );
var ref462 = new ActionReference();
ref462.putProperty( charIDToTypeID('Prpr'), charIDToTypeID('Ptrn') );
ref462.putEnumerated( charIDToTypeID('capp'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
desc625.putReference( charIDToTypeID('T '), ref462 );
executeAction( charIDToTypeID('setd'), desc625, DialogModes.NO );
};
function getPatternsFromFile(file){
file.open("r");
file.encoding = 'BINARY';
var str = file.read();
file.close();
var patterns=[];
var re = /(\x00\w|\x00\d)(\x00\-|\x00\w|\x00\s|\x00\d)+\x00\x00\$[-a-z\d]+/g;
var parts = str.match(re);
for (var i = 0; i < parts.length; i++) {
var p = parts;
var sp = p.replace(/\x00/g, '').split('$');
patterns.push([[sp[0]], [sp[1]]]);
}
return patterns;
};
function fillPattern(name, id, opacity) {
var desc6 = new ActionDescriptor();
desc6.putEnumerated( charIDToTypeID('Usng'), charIDToTypeID('FlCn'), charIDToTypeID('Ptrn') );
var desc7 = new ActionDescriptor();
desc7.putString( charIDToTypeID('Nm '), name );
desc7.putString( charIDToTypeID('Idnt'), id);
desc6.putObject( charIDToTypeID('Ptrn'), charIDToTypeID('Ptrn'), desc7 );
desc6.putUnitDouble( charIDToTypeID('Opct'), charIDToTypeID('#Prc'), opacity );
desc6.putEnumerated( charIDToTypeID('Md '), charIDToTypeID('BlnM'), charIDToTypeID('Nrml') );
try{
executeAction( charIDToTypeID('Fl '), desc6, DialogModes.NO );
}catch(e){}
};