6 Replies Latest reply on Apr 3, 2014 6:50 PM by kitfox

    How to set units when creating paths with a script?


      I'm trying to update a script that used to work in Photoshop CS4 but which seems to completely ignore the units I'm using in Cloud.  The script below should create a path layer with two lines that form an X across the entire document. 


      To test, I'm creating a new page that's 8.5 x 11 inches and 300 DPI.  I then run the script.  However, the the shape that is produced is huge and most of it is offscreen.  What am I doing wrong?




      function Point(x, y)


                this.x = x;

                this.y = y;




      function addVertexCorner(lineArray, x, y)


                var p0Info = new PathPointInfo();


                p0Info.kind = PointKind.CORNERPOINT;

                p0Info.anchor = new Array(x, y);

                p0Info.leftDirection = p0Info.anchor;

                p0Info.rightDirection = p0Info.anchor;




      function appendLine(p0, p1, lineSubPathArray)


                var lineArray = new Array();



                addVertexCorner(lineArray, p0.x, p0.y);

                addVertexCorner(lineArray, p1.x, p1.y);



                var pathInfo = new SubPathInfo();


                pathInfo.operation = ShapeOperation.SHAPEADD;

                pathInfo.closed = false;

                pathInfo.entireSubPath = lineArray;




      function createPathLayer(title, subPathArray)


                var docRef = app.activeDocument;



                var originalUnit = app.preferences.rulerUnits;



                app.preferences.rulerUnits = Units.PIXELS;



                var myPathItem = docRef.pathItems.add(title, subPathArray);



                app.preferences.rulerUnits = originalUnit;




      var docRef = app.activeDocument;



      var imgWidth = docRef.width.as("px");

      var imgHeight = docRef.height.as("px");



      var p00 = new Point(0, 0);

      var p10 = new Point(imgWidth, 0);

      var p01 = new Point(0, imgHeight);

      var p11 = new Point(imgWidth, imgHeight);



      var lineSubPathArray = new Array();



      appendLine(p00, p11, lineSubPathArray);

      appendLine(p01, p10, lineSubPathArray);



      createPathLayer("Big X", lineSubPathArray);