Puede redistribuir manualmente el espacio con unos pocos clics con bastante facilidad:
Sin embargo, eso moverá los objetos para ajustar el espaciado, por lo que no es lo ideal.
Aparte de eso, su mejor opción probablemente sea usar algún atributo de apariencia para crear el desplazamiento y alinear los objetos sin espacio...
Entonces, en Illustrator con un efecto de ruta compensada en el relleno de las formas, por ejemplo:
Después de cambiar el tamaño (asegúrese de que Scale Strokes & Effects esté desactivado):
Puede hacer esto con cualquier número de atributos dependiendo de su caso de uso; un trazo, una ruta de desplazamiento, espaciado de inserción en InDesign, etc. El punto es mantener el espaciado como un atributo separado del posicionamiento relativo de los objetos.
Aquí hay una secuencia de comandos para Illustator que hará esto con un ancho ingresado por el usuario. Para simplificar, solo lo he escrito para el cambio de tamaño horizontal, y solo funciona si los elementos están en un grupo que es la primera selección.
#target illustrator
var group = activeDocument.selection[0];
var toWidth = prompt ("Resize to width (pts):", Math.ceil (group.width));
if (group.typename == "GroupItem") {ResizePreserveMargins (group, toWidth);}
function ResizePreserveMargins (group, toWidth)
{ var count, i, items, item, margins=[], width=toWidth, margin, x=0;
items = SortLeftToRight (group.pageItems);
count = items.length;
for (i=0; i<count-1; i++)
{ item = items[i];
margin = items[i+1].left - item.left - item.width;
margins.push (margin);
width -= margin + item.width;
}
width -= items[count-1].width;
for (i=0; i<count; i++)
{ item = items[i];
if (i) {item.left = x + margins[i-1];}
item.width += width/count;
x = item.left + item.width;
}
}
function SortLeftToRight (items)
{ var lefts=[], sorts=[], i, j, count, count2, item;
count = items.length;
// Gather & sort item left values
for (i=0; i<count; i++) {lefts.push (items[i].left);}
lefts.sort (function (a,b) {return a-b;});
// Add left-to-right sorted items to final list
for (i=0; i<count; i++)
{ item = items[i];
count2 = lefts.length;
for (j=0; j<count2; j++)
{ if (items[i].left == lefts[j])
{ sorts.push (item);
lefts.splice (j,1);
break;
}
}
}
return sorts.reverse ();
}
paladínstudio