需要一个Illustrator JavaScript脚本,可以同时切换三个设置并保持它们同步。

9

我经常与图标一起工作,需要快速查看它们在像素预览下的外观。当我在制作它们时,启用了网格和艺术板。

我真的希望有一个脚本可以在单击一次后执行以下操作:

  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) {}

但问题是,如果网格已经隐藏了,当我想要隐藏它时,脚本会将其切换回来。参考线/像素预览/画板可见性也是如此。有没有一种方法可以查询每个属性的状态?
基本上我想要做到这一点:(请原谅伪代码)
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"); }

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

非常感谢任何帮助。

编辑1:


我只想补充说,如果可以通过自定义CEP或UXP插件而不是脚本来完成此操作,我很愿意听听如何做到这一点。 我不反对编写自己的插件来实现此功能。 我一直想深入研究CEP / UXP插件作者。


2
好问题。我也想知道答案。 - Yuri Khristich
据我所知,CEP对Illustrator的内部结构的访问权限甚至比Extendscript还要少。我不确定UXP插件是否类似于CEP在这方面。但我确信完整的本地Illustrator插件(SDK、C++等)可以完全访问所有内容。 - Yuri Khristich
1
有运气了吗?不想让那个赏金白白浪费,哈哈。 - Dan Mullin
说句认真的,我在关注这个问题,如果将来有任何进一步问题需要帮忙,只需提出,我会尽力协助 :) - Dan Mullin
@cybernetic.nomad - Dan Mullin
1个回答

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
}

hidden属性将告诉您是否显示图层和画板等内容。

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


非常感谢,我马上就要试一下这个。你知道“hidden”属性的有效值是什么吗?如果我想检查“guides”、“grid”、“pixel preview”和“artboard visibility”,我应该测试什么? - fmotion1
1
hidden和visible只是布尔值,因此只能是true或false。 - Dan Mullin
抱歉,我的意思是上面的item有哪些值?例如,如果测试指南的可见性,它是否只是guides.hidden?您能否更新您的帖子以包含与正确的item值相对应的代码? - fmotion1
我会发布更新。 - Dan Mullin
期待着!非常感谢。 - fmotion1
今晚我会处理这个。只是让你知道。 - Dan Mullin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接