【问题标题】:How to apply transformation to selection in Illustrator by scripting如何通过脚本将转换应用于 Illustrator 中的选择
【发布时间】:2018-01-17 15:55:34
【问题描述】:

我设法使用 ExtendScript Toolkit javascript 代码在 Illustrator 中选择了我想要的所有东西:很多东西(文本、路径、符号……)在几个层中。现在我想以同样的方式调整它们的大小,然后移动它们。

我知道如何通过代码对一个对象应用变换,但我想避免在每个元素上循环,因为它会非常长并且变换将从每个元素的锚点应用,所以我的绘图不会不要有凝聚力。

所以,我正在寻找一种在 Illustrator UI 中进行操作的方法:右键单击 > 变换 > 缩放。我可以从代码(javascript)中访问这样的 UI 命令吗?

【问题讨论】:

    标签: javascript adobe-illustrator extendscript


    【解决方案1】:

    至少有三种方法可以做到这一点:

    1. 录制执行所需转换的 AI 动作,然后在您的脚本中播放这些动作(DoScript
    2. 按照@Dane 的建议对选定的对象进行分组并将所需的转换应用于组。您需要备份 Layer 对象属性以允许在原始图层中恢复对象,如下面的 VBA 示例所示:

      For i = Index_Lo To Index_Hi
          Call Layers_Backup.Add(Item:=SelectedItems(i).Layer, Key:=Format(i))
          Call SelectedItems(i).Move(Temp_Group, AiElementPlacement.aiPlaceAtEnd)
      Next i
      
      Call Temp_Group.Resize(scaleX:=120, scaleY:=120, changeLineWidths:=120)
      
      For i = Index_Lo To Index_Hi
          Call SelectedItems(i).Move(Layers_Backup(Format(i)), AiElementPlacement.aiPlaceAtEnd)
      Next i
      
    3. 调用 Windows API 函数(如 PostMessage (..., WM_COMMAND, ..., ...)SendDlgItemMessageFindWindowEx 等)以显示、填充和执行所需的 AI 转换对话框

    恕我直言,第 1 项是最容易实现的,而第 2 项是最可靠的

    【讨论】:

      【解决方案2】:

      所以我不知道你是否可以不以某种形式循环而逃脱。也就是说,如果您不介意将您的选择放入一个组中,循环通过您的选择添加到一个组可能比循环和通过选择、缩放和移动每个元素更快。然后,您可以使用组对象执行 groupObject.scale() 和 .translate()。 这是我从我的脚本中提取的一个 sn-p。

      #target "illustrator"
      var aiApp = app.activeDocument;
      var aSelection = aiApp.selection;
      var aGroup = app.activeDocument.groupItems.add();
      
      for (i=0; i < aSelection.length; i++){
      aSelection[i].move( aGroup, ElementPlacement.INSIDE); 
      aSelection[i].move( aGroup, ElementPlacement.PLACEATEND);  
       }
      //moves up 700 points and scales by 200
      aGroup.translate(0,700)
      aGroup.resize(200, 200, true , true, true, true, 200)
      

      【讨论】:

      • 对我的选择进行分组是个好主意。将所有内容分组时,转换会更容易。但是,我需要将内容分层保存,因为图层名称很重要。
      猜你喜欢
      • 2019-10-15
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2018-10-18
      相关资源
      最近更新 更多