Copy link to clipboard
Copied
Please tell me, I recorded an erasing action with the eraser tool, but the parameters of the eraser tool were not recorded in the action. The eraser size is 1400px, the flow rate is 100%, the opacity is 100%, and the hardness is 30%. How should I write the script code?
I found a usable script. This script successfully allows me to select the eraser tool and then set the flow and opacity. However, there is a problem with setting the eraser size and hardness. Can you help me modify it?
if (documents.length == 0) {
var d = documents.add();
} else {
var d = activeDocument;
}
// 创建两个图层以便启用背景和透明
if (d.layers.length == 1) {
d.artLayers.add();
}
// 选择橡皮擦工具
var idslct = stringIDToTypeID( "select" );
var desc226 = new ActionDescriptor();
var idnull = stri
...
Copy link to clipboard
Copied
Two great gods, I have to ask you for help again 🙂 . @c.pfaffenbichler @Stephen_A_Marsh
Copy link to clipboard
Copied
Are you trying to save that specific eraser as an action to be used over and over or be able to record whatever the current eraser settings are to be used later in an action?
Basically, are you going to want to use those specific settings every time or do you want the action to capture whatever the settings happen to be when it runs and save them for future use?
Copy link to clipboard
Copied
Yeah, so I'd like to have a script that I can execute to make the eraser use my specific settings
Copy link to clipboard
Copied
I found a usable script. This script successfully allows me to select the eraser tool and then set the flow and opacity. However, there is a problem with setting the eraser size and hardness. Can you help me modify it?
if (documents.length == 0) {
var d = documents.add();
} else {
var d = activeDocument;
}
// 创建两个图层以便启用背景和透明
if (d.layers.length == 1) {
d.artLayers.add();
}
// 选择橡皮擦工具
var idslct = stringIDToTypeID( "select" );
var desc226 = new ActionDescriptor();
var idnull = stringIDToTypeID( "null" );
var ref170 = new ActionReference();
var idErTl = stringIDToTypeID( "eraserTool" ); // 橡皮擦工具
ref170.putClass( idErTl );
desc226.putReference( idnull, ref170 );
executeAction( idslct, desc226, DialogModes.NO );
// 设置透明度为50%、流量为50%、画笔大小为1400、硬度为100%
var idset = stringIDToTypeID( "set" );
var desc226 = new ActionDescriptor();
var idnull = stringIDToTypeID( "null" );
var ref170 = new ActionReference();
var idErTl = stringIDToTypeID( "eraserTool" ); // 橡皮擦工具
ref170.putClass( idErTl );
desc226.putReference( idnull, ref170 );
var id12 = stringIDToTypeID( "to" );
var desc5 = new ActionDescriptor();
var id13 = stringIDToTypeID( "opacity" );
var id14 = stringIDToTypeID( "percentUnit" );
desc5.putUnitDouble( id13, id14, 50 ); // 设置透明度为50%
var id19 = stringIDToTypeID( "flow" );
desc5.putUnitDouble( id19, id14, 50 ); // 设置流量为50%
var id20 = stringIDToTypeID( "diameter" );
desc5.putUnitDouble( id20, id14, 1400 ); // 设置画笔大小为1400
var id21 = stringIDToTypeID( "hardness" );
desc5.putUnitDouble( id21, id14, 100 ); // 设置硬度为100%
desc226.putObject( id12, idnull, desc5 );
executeAction( idset, desc226, DialogModes.NO );
'DONE';
Copy link to clipboard
Copied
If you're going to use the same exact settings every time, you can just set up a new tool preset with the eraser then call it from your action. You may have to enable "Show All Tool Presets" to make this work. This is how I do it.
Then if you need to call this tool within a script, you can make an action with a single step that calls that preset and within your script, run that action.
What your script is doing is basically running an action as a javascript (ActionScript) which does the same thing. The only thing this allows you to do beyond using the action is dynamically modify the eraser settings.
To answer your question, without actually trying it myself, it looks like the diameter setting is the 1400 and the hardness is the 100 a few lines below that. If you change those to what you want it to be it should work for you.