var ref1 = new ActionReference(); // 它的含义是 layer -> ordinal -> target,也就是当前选中的图层 ref1.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); var layerDescriptor = executeActionGet(ref1); var value = layerDescriptor.getString(stringIDToTypeID("name")); $.writeln(value);
那反过来,我如果要修改这个图层的名称为abc,是不是这样就行了呢?
1 2 3
var layerDescriptor = executeActionGet(ref1); layerDescriptor.putString(stringIDToTypeID("name"), "abc");
我们用ScriptListener插件,手动改一下图层的名称,会输出如下代码
1 2 3 4 5 6 7 8 9
var desc1 = new ActionDescriptor(); var ref1 = new ActionReference(); ref1.putEnumerated( stringIDToTypeID( "layer" ), stringIDToTypeID( "ordinal" ), stringIDToTypeID( "targetEnum" ) ); desc1.putReference( stringIDToTypeID( "null" ), ref1 ); var desc2 = new ActionDescriptor(); desc2.putString( stringIDToTypeID( "name" ), "abc" ); desc1.putObject( stringIDToTypeID( "to" ), stringIDToTypeID( "layer" ), desc2 ); executeAction( stringIDToTypeID( "set" ), desc1, DialogModes.NO );
// 创建一个textStyle的AD,给它重新赋值 var textStyle = new ActionDescriptor(); textStyle.putString(stringIDToTypeID("fontName"), "Consolas"); // 你想要的字体 textStyle.putString(stringIDToTypeID("fontStyleName"), "Regular"); textStyle.putString(stringIDToTypeID("fontPostScriptName"), "Consolas");
// 创建一个textToolCharacterOptions的AD,将textStyle赋值给它 var textToolCharacterOptions = new ActionDescriptor(); textToolCharacterOptions.putObject(stringIDToTypeID("textStyle"), stringIDToTypeID("textStyle"), textStyle);
// 创建一个currentToolOptions的AD,将textToolCharacterOptions赋值给它 var currentToolOptions = new ActionDescriptor(); currentToolOptions.putObject(stringIDToTypeID("textToolCharacterOptions"), stringIDToTypeID("textToolCharacterOptions"), textToolCharacterOptions);
// 将currentToolOptions赋值给文字工具 var desc1 = new ActionDescriptor(); var ref1 = new ActionReference(); ref1.putClass(stringIDToTypeID('typeCreateOrEditTool')); // 文字工具这个目标对象 desc1.putReference( stringIDToTypeID( "null" ), ref1 ); desc1.putObject( stringIDToTypeID( "to" ), stringIDToTypeID( "null" ), currentToolOptions); executeAction( stringIDToTypeID( "set" ), desc1, DialogModes.NO );