Une approche rapide, non affinée...
// JavaScript Document
//Criar caixa de diálogo
var Undo = false;
if (app.selection.length === 1 && app.selection[0].typename === "GroupItem") {
var grupoSelecionado = app.selection[0];
createDialog();
}
else {
alert("Selecione um único grupo na Camada 1.");
}
// -------
function createColumnGroup(parent, name) {
var group = parent.add("group", undefined, { name: name });
group.orientation = "column";
group.alignChildren = ["left", "top"];
group.spacing = 10;
group.margins = 0;
return group;
}
// -------
function createEditText(parent, config) {
var editText = parent.add('edittext {properties: {name: "edittext"}}');
editText.preferredSize.width = config.preferredWidth;
editText.alignment = config.alignment;
return editText;
}
// -------
function createDialog() {
var dialog = new Window("dialog", "Multiplicar e distribuir");
var mainGroup = createColumnGroup(dialog, "mainGroup");
var quantidadeGroup = createColumnGroup(mainGroup, "quantidadeGroup");
var espacamentoGroup = createColumnGroup(mainGroup, "espacamentoGroup");
var sharedConfig = {
preferredWidth: 100,
alignment: ["left", "center"],
};
var quantidadeLabel = quantidadeGroup.add("statictext", undefined, undefined, { name: "quantidadeLabel" });
quantidadeLabel.text = "Quantidade:";
var quantidadeEditText = createEditText(quantidadeGroup, sharedConfig);
quantidadeEditText.text = 3;
var espacamentoLabel = espacamentoGroup.add("statictext", undefined, undefined, { name: "espacamentoLabel" });
espacamentoLabel.text = "Espaçamento:";
var espacamentoEditText = createEditText(espacamentoGroup, sharedConfig);
espacamentoEditText.text = 1;
var visualizarCheckbox = mainGroup.add("checkbox", undefined, undefined, { name: "visualizarCheckbox" });
visualizarCheckbox.text = "Visualizar";
visualizarCheckbox.preferredSize.width = 80;
visualizarCheckbox.preferredSize.height = 20;
var buttonGroup = dialog.add("group", undefined, { name: "buttonGroup" });
buttonGroup.orientation = "row";
buttonGroup.alignChildren = ["center", "center"];
buttonGroup.spacing = 10;
buttonGroup.margins = 0;
buttonGroup.alignment = ["center", "top"];
var okButton = buttonGroup.add("button", undefined, undefined, { name: "okButton" });
okButton.text = "OK";
var cancelButton = buttonGroup.add("button", undefined, undefined, { name: "cancelButton" });
cancelButton.text = "Cancel";
okButton.onClick = function () {
if (Undo == false) {
var q = quantidadeEditText.text;
var k = espacamentoEditText.text; alert(q+" "+k)
traitement(q,k);
}
dialog.close();
};
visualizarCheckbox.onClick = function() {
if (visualizarCheckbox.value == true) {
var q = quantidadeEditText.text;
var k = espacamentoEditText.text; //alert(q+" "+k)
traitement(q,k);
app.redraw();
Undo = true;
}
if (visualizarCheckbox.value == false) {
app.executeMenuCommand("undo");
app.redraw();
Undo = false;
}
}
cancelButton.onClick = function () {
if (Undo) {
app.executeMenuCommand("undo");
app.redraw();
}
dialog.close();
};
dialog.show();
}
// -------
function traitement(q,k) {
// Código principal
// Verifica se o grupo está selecionado
var distanciaHorizontal = parseFloat(k.replace(".", "").replace(",", ".")) * 28.3465;
// Armazena a altura do grupo selecionado
var alturaGrupoInicial = grupoSelecionado.height;
var quantidadeCopias = parseInt(q);
if (isNaN(quantidadeCopias) || quantidadeCopias < 1) {
alert("Quantidade inválida. O valor deve ser um número inteiro maior que zero.");
return;
}
else {
// Define a posição do grupo selecionado em relação à prancheta
var prancheta = app.activeDocument.artboards[0];
var posX = prancheta.artboardRect[0] + 4.5 * 28.3465;
var posY = prancheta.artboardRect[1] - 0.5 * 28.3465;
grupoSelecionado.position = [posX, posY];
var posXAtual = posX + grupoSelecionado.width + distanciaHorizontal;
var posYAtual = posY;
for (var i = 1; i < quantidadeCopias; i++) {
var novaCopia = grupoSelecionado.duplicate();
novaCopia.position = [posXAtual, posYAtual];
posXAtual += grupoSelecionado.width + distanciaHorizontal;
if (posXAtual + grupoSelecionado.width > 129 * 28.3465) {
posXAtual = posX;
posYAtual -= alturaGrupoInicial + distanciaHorizontal;
}
}
}
}
de elleere