• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
1

Script now beachballs under AI CC 2018 (worked in 2017)

Community Beginner ,
Nov 10, 2017 Nov 10, 2017

Copy link to clipboard

Copied

As usually happens.  While I'm writing my "please help" post I end up figuring out the problem on my own.  Still, I will put my findings here to hopefully help someone else.

A few months ago I hacked together a script to randomly distort path points.  It's not a perfect script but it worked fine for my use and saved me a ton of time.

Now after upgrading to 2018 it just beachballs the mac and gets stuck in an endless loop.  When I detect a compound path I do this:

newItem = newCompoundPath.pathItems.add();

dupeAndWarp(comp, newItem, hVar, vVar);

comp is an pathitem of the compound path, which becomes "source" inside the dupeAndWarp method. Then inside dupeAndWarp, I transfer properties of the source item to the newpath (created by the caller), and then fill it with points using this loop:

function dupeAndWarp(source, newpath, hVar, vVar) {

.....

for (i=0; i<source.pathPoints.length; i++) {

       var newPoint = idoc.pathItems[0].pathPoints.add();

       var anchor = source.pathPoints.anchor;

       var left = source.pathPoints.leftDirection;

       var right = source.pathPoints.rightDirection;

       var moveX = (Math.random() * hVar * 2) - hVar;

       var moveY = (Math.random() * vVar * 2) - vVar;

       newPoint.anchor = Array(anchor[0] + moveX, anchor[1] + moveY);

       newPoint.leftDirection = Array(left[0] + moveX, left[1] + moveY);

       newPoint.rightDirection = Array(right[0] + moveX, right[1] + moveY);

       newPoint.pointType = source.pathPoints.pointType;

}

Which is where it's getting stuck. In CC 2017 this worked fine.  What I discovered is that in 2018 the source.pathPoints.lenth is growing by one each time I do:

var newPoint = idoc.pathItems[0].pathPoints.add();

In the past this created a new point to the newCompoundPath that I added.  But I suppose using pathItem[0] is sloppy and assumes that the item in [0] is the newest one that was added.  The reason I did this was that the demo I found did it.  I replaced that with "newpath and it works fine now.

Conclusion.. in 2018 we can no longer assume what pathItem[0] is going to be.

Views

149

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
no replies

Have something to add?

Join the conversation
Adobe