我正在编写generator
插件,我使用方法generator.getDocumentInfo()
获取文档结构。它返回树结构中包含document
个对象的layer
对象。 document
对象具有属性document.id
,每个图层都有属性layer.id
。
目标:我想隐藏图层 - 我只知道文档ID和图层ID。
问题:在我发现的生成器插件中隐藏图层的唯一方法是evaluateJSXString()
方法。这很好,但我不知道如何通过id访问id和layer。根据{{3}}文档没有id
属性,图层也没有id
属性。我发现app.documents
是一个文档数组(但索引不是id),app.document[i].layers
是一个图层数组,但它只包含顶层图层,每个顶层图层包含子图层。< / p>
我看到的唯一选择是编写JSX脚本,它将首先遍历app.documents
数组以找到具有匹配文件名的doc,然后它将在document.layers
树结构中搜索一个层。
答案 0 :(得分:1)
我认为这是一个老问题有同样的问题。我能够使用生成器的方法evaluateJSXString
来提出解决方案。您可以在生成器插件中使用evaluateJSXString
执行extendscript。这里没有涉及循环。只需layerID
。
注意:layerID
是一个保存图层ID的变量,它与要评估的字符串连接。
显示图层:
var changeVisibilityString = " var ref = new ActionReference(); \
ref.putIdentifier(charIDToTypeID('Lyr '), " + layerID + " ); \
var desc = new ActionDescriptor(); \
desc.putReference(charIDToTypeID('null'), ref); \
desc.putBoolean(charIDToTypeID('MkVs'), false); \
executeAction( charIDToTypeID('Shw '), desc);"
generator.evaluateJSXString(changeVisibilityString);
隐藏图层:
var changeVisibilityString = " var ref = new ActionReference(); \
ref.putIdentifier(charIDToTypeID('Lyr '), " + layerID + " ); \
var desc = new ActionDescriptor(); \
desc.putReference(charIDToTypeID('null'), ref); \
desc.putBoolean(charIDToTypeID('MkVs'), false); \
executeAction( charIDToTypeID('Hd '), desc);"
generator.evaluateJSXString(changeVisibilityString);