6 Replies Latest reply on Sep 7, 2018 2:41 AM by 天林54894715

    Script to arrange artboard in grid

    charur94718007 Level 2

      Hello guys, I need a script to arrange selected artboards in a grid format in photoshop cc 2017 or cc 2018. Thanks in advance

        • 1. Re: Script to arrange artboard in grid
          Jarda Bereza Level 4

          Can you upload image how result of script should look at your screen?

          • 2. Re: Script to arrange artboard in grid
            charur94718007 Level 2

            Here is more description A simple script to rearrange selected artboards into a grid with the option of how many rows and columns + how much spacing between them vertically and horizontally. Preferably in the order they're laid out in the layers panel. This is all assuming that the selected artboards have the same dimensions to make the math slightly easier. Final result will be as in screen shot.Screen Shot 2017-10-30 at 7.27.59 PM.png

            • 3. Re: Script to arrange artboard in grid
              天林54894715 Level 1

              Hello, where can you share this script with me?

              I need him very much.

              • 4. Re: Script to arrange artboard in grid
                Jarda Bereza Level 4

                I didn't make script for this. I just wanted to make the question more clear if other scripters would have interest.

                • 5. Re: Script to arrange artboard in grid
                  r-bin Level 5
                  var clms = 5; 
                  
                  var space_x = 20;
                  var space_y = 20;
                  
                  clms = prompt("Columns", clms, "Input");
                  
                  if (clms)
                      {
                      clms = Number(clms);
                  
                      var arts = new Array();
                  
                      var w = 0;
                      var h = 0;
                  
                      for (var i = 0; i < activeDocument.layerSets.length; i++)
                          {
                          var r = new ActionReference();      
                          r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("artboardEnabled"));          
                          r.putIdentifier(stringIDToTypeID("layer"), activeDocument.layerSets[i].id);      
                      
                          if (executeActionGet(r).getBoolean(stringIDToTypeID("artboardEnabled"))) 
                              {
                              var r = new ActionReference();      
                              r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("artboard"));          
                              r.putIdentifier(stringIDToTypeID("layer"), activeDocument.layerSets[i].id);      
                      
                              var rect = executeActionGet(r).getObjectValue(stringIDToTypeID("artboard")).getObjectValue(stringIDToTypeID("artboardRect"));
                      
                              var l = rect.getDouble(stringIDToTypeID("left"));
                              var t = rect.getDouble(stringIDToTypeID("top"));
                              var r = rect.getDouble(stringIDToTypeID("right"));
                              var b = rect.getDouble(stringIDToTypeID("bottom"));
                      
                              arts.push([activeDocument.layerSets[i], [l,t,r,b]]);
                      
                              var w1 = r-l;
                              var h1 = b-t;
                      
                              if (w1 > w) w = w1;
                              if (h1 > h) h = h1;
                              }
                          }
                  
                      var rows = Math.floor(arts.length/clms);
                  
                      if (rows*clms < arts.length) ++rows;
                  
                      var i = 0;
                  
                      for (var y = 0; y < rows; y++)
                          {
                          var pos_y = y * (h + space_y);
                  
                          for (var x = 0; x < clms; x++)
                              {
                              if (i >= arts.length) break;
                  
                              activeDocument.activeLayer = arts[i][0];
                  
                              var pos_x = x * (w + space_x);
                  
                              move(pos_x-arts[i][1][0], pos_y-arts[i][1][1])
                  
                              i += 1;
                              }
                          }
                      }
                  
                  ///////////////////////////////////////////////////////////////////////////
                  function move(x, y)
                      {
                      try {
                          var d = new ActionDescriptor();
                          var r = new ActionReference();
                          r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
                          d.putReference(stringIDToTypeID("null"), r);
                          var d1 = new ActionDescriptor();
                          d1.putUnitDouble(stringIDToTypeID("horizontal"), stringIDToTypeID("pixelsUnit"), x);
                          d1.putUnitDouble(stringIDToTypeID("vertical"), stringIDToTypeID("pixelsUnit"), y);
                          d.putObject(stringIDToTypeID("to"), stringIDToTypeID("offset"), d1);
                          executeAction(stringIDToTypeID("move"), d, DialogModes.NO);
                          }
                      catch (e) { throw(e); }
                      }
                  
                  2 people found this helpful
                  • 6. Re: Script to arrange artboard in grid
                    天林54894715 Level 1

                    I saw you again. You really are the second enthusiastic foreigner I have ever met.

                    Thank you very much for your script he is very good

                    You are really a programming god