Hi! Can someone help me? I want to sort objects on airboard from bottom to top by rounded Y for simplify sorting process. Rounding will create virtual rows (different color on pic below) highest value goes first (Top object in the layer list). Then each row I want to sort by X, from right to the left (so high value goes first - revers order) Here is example Result of arranging objects in the layer should be (from top to down): 1,2,3,4,5,6 and etc This is like sorting 2 dimensional array in revers order: X,Y array myobjlist= [[124,2],[23,2],[60,1],[150,1],[12,2],[20,0],[50,1],[40,0],[70,0]] sorted(myobjlist) will create next array [[124, 2] [23, 2] [12, 2] [150, 1] [60, 1] [50, 1] [70, 0] [40, 0] [20, 0]] Object with [124, 2] coordinates will be first in layers list and [20, 0] - last Example script that doing this but with some mistakes // JavaScript Document for Illustrator var dec = 20; if (app.documents.length > 0) { var docRef = app.activeDocument; var selectedItems = selection; var nbObjSelect = selectedItems.length; if (nbObjSelect) { var rep, iObj, newtop; var TabTop = []; rep = prompt("Tolérance ?", dec); dec= rep*1; for (var i = 0; i < nbObjSelect; i++) { iObj = selectedItems; TabTop.push([iObj.top,i]) } TabTop.sort(); TabTop.reverse(); //alert(TabTop.join("\r")); newtop = TabTop[0][0]; docRef.layers.add(); nbLayers = docRef.layers.length; for(i = 0, k = nbLayers-1; i < nbObjSelect; i++) { if (newtop > TabTop[0]-dec && newtop < TabTop[0]+dec) { iObj = selectedItems[TabTop[1]]; iObj.move(docRef.layers[0],ElementPlacement.PLACEATEND); docRef.layers[0].name = "Rang "+k; } else { newtop = TabTop[0]; k++; i--; docRef.layers.add(); } } var layerAct, nbObjLayer, n, nObj, j, jObj; var TabLeft = []; for(i = 0; i < k; i++) { layerAct = docRef.layers; nbObjLayer = layerAct.pageItems.length; for(n = 0; n < nbObjLayer; n++) { nObj = layerAct.pageItems ; TabLeft.push([nObj.left,nObj]); } TabLeft.sort(); //TabLeft.revers(); alert(TabLeft.join("\r")); for(j = 0; j < nbObjLayer; j++) { jObj = TabLeft [1]; jObj.zOrder(ZOrderMethod.SENDTOBACK); } TabLeft = []; } } else alert("Vous n'avez rien sélectionné !","De Elleere"); } else alert("Pour l'exécution de ce sript un document doit être ouvert !","Script Alerte de Elleere !"); Thanks to ​renél80416020 Tolerance value is fine. But there is some problems: It creates last layer (virtual row) in top of the list. Each object in the row should be sorted from right to left it creates layers with objects. In finale will be good if all sorted objects will be in one layer see pic below
... View more