Ideas to group same color path items without a selection
I am looking for a way to group same color path items within a layer. Below is the script I have found to group the same selected color. But I would like to take this script one step further where it won't require slecting the path item. I have an idea of how to script it but it would be great if I can get some guidance from the experts.
Method 1) Loop through to select a Path Item one by one and skip Group Items if exist.
Method 2) Delete unwanted swatches, load used swatches, select path items with same swatch and group.
Which method do you recommend that is less complex for an entry level scriptor? Also, my major weakness are creating loops so any help in that area is greatly appreciated. Thank you.
| function selSameColor (){ | |
| if(app.activeDocument.selection.length == 0){alert('Select a pathItem.'); return}; | |
| if(app.activeDocument.selection.length > 1){alert('Select just one pathItem.'); return}; | |
| var selFillColor = function(){ | |
| var groupColor = app.activeDocument.groupItems.add(); | |
| if(app.activeDocument.selection[0].typename == 'PathItem'){ | |
| var colorSel = new CMYKColor; | |
| colorSel.cyan = app.activeDocument.selection[0].fillColor.cyan; | |
| colorSel.magenta = app.activeDocument.selection[0].fillColor.magenta; | |
| colorSel.yellow = app.activeDocument.selection[0].fillColor.yellow; | |
| colorSel.black = app.activeDocument.selection[0].fillColor.black; | |
| }else{alert('This is not a pathitem.'); return}; | |
| var itemsLength = app.activeDocument.pageItems.length; | |
| var items = app.activeDocument.pageItems; | |
| for (i = 0; i < itemsLength; i++){ | |
| if(items.typename == 'PathItem'){ | |
| if(items.fillColor.cyan == colorSel.cyan && items.fillColor.magenta == colorSel.magenta && items.fillColor.yellow == colorSel.yellow && items.fillColor.black == colorSel.black){ | |
| items.moveToBeginning(groupColor); | |
| }else if(items.strokeColor.cyan == colorSel.cyan && items.strokeColor.magenta == colorSel.magenta && items.strokeColor.yellow == colorSel.yellow && items.strokeColor.black == colorSel.black){ | |
| items.moveToBeginning(groupColor); | |
| }; | |
| }; | |
| }; | |
| if(groupColor.pageItems.length > 0){groupColor.selected = true}; | |
| }; | |
| selFillColor (); | |
| }; | |
| selSameColor (); | |
