首页 > 解决方案 > 检测图案是否存在 Photoshop 脚本

问题描述

我正在尝试检测 Photoshop 上是否存在模式名称,但现在我无法做到这一点,有人知道如何做到这一点吗?现在我有这个:

function selectPattern(ptrn) {
  var desc = new ActionDescriptor();
  var ref = new ActionReference();
  ref.putName(charIDToTypeID('Ptrn'), ptrn );
  desc.putReference( charIDToTypeID( "null" ), ref );
  executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO );
}

但是每次我使用它时都找不到模式名称,它使用的是这样的:

selectPattern('Gauze');

提前致谢

标签: javascriptjsxextendscriptphotoshop-script

解决方案


虽然这不能直接回答您的问题,但它可能对您有用:

您可以使用 scriptListener 找出模式的 ID。

// call the source document
var srcDoc = app.activeDocument;

fillWithPattern("456e6678-5dd6-5046-9e0c-12871fb51bb0");

function fillWithPattern (patternid)
{
// =======================================================
var idFl = charIDToTypeID( "Fl  " );
var desc126 = new ActionDescriptor();
var idFrom = charIDToTypeID( "From" );
var desc127 = new ActionDescriptor();
var idHrzn = charIDToTypeID( "Hrzn" );
var idPxl = charIDToTypeID( "#Pxl" );
desc127.putUnitDouble( idHrzn, idPxl, 100.0 ); // x fill point
var idVrtc = charIDToTypeID( "Vrtc" );
var idPxl = charIDToTypeID( "#Pxl" );
desc127.putUnitDouble( idVrtc, idPxl, 100.0 ); //y fill point
var idPnt = charIDToTypeID( "Pnt " );
desc126.putObject( idFrom, idPnt, desc127 );
var idTlrn = charIDToTypeID( "Tlrn" );
desc126.putInteger( idTlrn, 0 );
var idUsng = charIDToTypeID( "Usng" );
var idFlCn = charIDToTypeID( "FlCn" );
var idPtrn = charIDToTypeID( "Ptrn" );
desc126.putEnumerated( idUsng, idFlCn, idPtrn );
var idPtrn = charIDToTypeID( "Ptrn" );
var desc128 = new ActionDescriptor();
var idNm = charIDToTypeID( "Nm  " );
desc128.putString( idNm, "" ); // pattern name (ignored)
var idIdnt = charIDToTypeID( "Idnt" );
desc128.putString( idIdnt, patternid ); //pattern ID
var idPtrn = charIDToTypeID( "Ptrn" );
desc126.putObject( idPtrn, idPtrn, desc128 );
executeAction( idFl, desc126, DialogModes.NO );
}

推荐阅读