Skip to main content
Participant
April 17, 2024
Question

Ungroup all from selection

  • April 17, 2024
  • 1 reply
  • 6996 views

Hello:) i was trying to find something which will help me to Ungroup everything from selection to be able to add it on Action. I cant use normal ungroup becuase if i use it few times (in case there is more groups in selection) then script is stopping becuase there are no groups. So i tried script like this:

var doc;

function getChildAll(obj) {
var childsArr = [];
for (var i = 0; i < obj.pageItems.length; i++) {
childsArr.push(obj.pageItems[i]);
}
return childsArr;
}

function ungroupSelection() {
var selection = doc.selection;
for (var i = 0; i < selection.length; i++) {
var item = selection[i];
if (item.typename == "GroupItem") {
var elements = getChildAll(item);
for (var j = 0; j < elements.length; j++) {
elements[j].moveBefore(item);
}
item.remove();
ungroupSelection(); // Recursively ungroup newly ungrouped items
}
}
}

if (app.activeDocument) {
doc = app.activeDocument;
if (doc.selection.length > 0) {
ungroupSelection();
} else {
alert("Please make a selection before running this script.");
}
} else {
alert("Please open a document before running this script.");
}


Script is working but its showing me error like in attachment. How i can avoid it? or maybe there is some easier way to ungroup everything from selection?

This topic has been closed for replies.

1 reply

Sergey Osokin
Inspiring
April 17, 2024

You may find the ExtUngroup script useful. Choose Target > Selected objects and Options > Ungroup all.

Inspiring
July 31, 2024
 

Hello! I found that your script "ExtractFromGroup" does not seem to be suitable for Adobe Illustrator 28.6. It does not move objects out of the group. After running it, there are no changes.

Kurt Gold
Community Expert
Community Expert
August 2, 2024

Thank you for your keen observation. I realized that I had confused the concept of what "a" belongs to. "a" is indeed a sublayer, but I mistakenly treated it as a group object.

So, here's the issue: how can I release objects from a sublayer and place them before the sublayer? The reason I need this is that when I break symbol links, the objects always remain within the sublayer. However, I want them to be released from the sublayer and maintain the layer order after breaking the symbol links. Then, I want to delete the unnecessary sublayer that stored the symbol object, because the symbol has been converted back to a regular object, making the sublayer redundant. If the symbol is converted back again, it would be nested in another sublayer.

To solve this issue, I searched for solutions and came across Sergey Osokin's plugin. I mistakenly thought it could release objects from sublayers and move them above the sublayer.


This may also be scripted, and I seem to remember that there is already a script that does it (probably from Sergey as well).

 

In the meantime, you may highlight all sublayers, execute the "Merge Selected" command in the Layers palette menu, and then highlight and drag all objects above the merged sublayer onto any main layer.