需要 Illustrator JavaScript 脚本来同时切换三个设置并保持它们同步

fmo*_*on1 9 javascript extendscript adobe-illustrator

我经常使用图标,并且需要通过像素预览快速检查它们的外观。当我构建它们时,我启用了网格,并且画板可见。

我真的想要一个只需单击一下即可执行以下操作的脚本:

  1. 隐藏画板

  2. 隐藏所有指南

  3. 隐藏网格

  4. 将像素预览切换为开。

然后另一个脚本将完全反转上述切换。

不幸的是,我找不到一种方法来查询应用程序的状态以确定画板边框是否已隐藏,或者网格是否已隐藏等。

这是现在的简单脚本:

//@target illustrator
preferences.setBooleanPreference("ShowExternalJSXWarning", false); // Fix drag and drop a .jsx file

function main() {
   var SCRIPT = {
      name: "Toggle Preview Mode",
      version: "v.0.1"
   };

   if (!documents.length) {
      alert("Error\nOpen a document and try again");
      return;
   }
   app.executeMenuCommand("showgrid");
   app.executeMenuCommand("showguide");
   app.executeMenuCommand("raster");
   app.executeMenuCommand("artboard");
}

try {
   main();
} catch (e) {}
Run Code Online (Sandbox Code Playgroud)

但问题是,如果网格已经隐藏,当我想隐藏它时,脚本会将其重新打开。同样,还有参考线/像素预览/画板可见性。有没有办法查询每个属性的状态?

基本上我想这样做:(请原谅伪代码)

if(guidesAreHidden=true){ //do nothing }
if(gridIsHidden=true){ //do nothing }
if(pixelPreviewIsOn=true){ //do nothing }
if(artboardsAreHidden=true){//do nothing }

Or a more complex example (Only the grid is hidden):

if(guidesAreHidden=false) { app.executeMenuCommand("showguide"); }
if(gridIsHidden=true){ //do nothing }
if(pixelPreviewIsOn=false){ app.executeMenuCommand("raster"); }
if(artboardsAreHidden=false){ app.executeMenuCommand("artboard"); }
Run Code Online (Sandbox Code Playgroud)

本质上,我需要一种方法来检索当前是否启用或禁用指南/网格/像素预览/画板可见性,以便我可以设置应用程序的适当状态。

非常感谢任何帮助。

编辑1:


我只是想补充一点,如果这可以使用自定义 CEP 或 UXP 插件而不是脚本来完成,我很想听听如何实现。我并不反对编写自己的插件来完成此功能。无论如何,我一直想深入研究 CEP/UXP 插件创作一段时间。

Dan*_*lin 1

Illustrator 有一种方法可以使用应用程序中的文档来执行此操作:

var items = app.activeDocument.pageItems
for (var i = 0; i < items.length; i++) {
    var item = items[i]
    //check here for:
    // item.hidden
    // item.visible
}
Run Code Online (Sandbox Code Playgroud)

隐藏属性会告诉您是否显示图层和画板等内容。

可见属性适用于放置的项目,例如图像。