Skip to main content
Participant
Jul 26, 2024 1:33 AM UTC
Question

Tronco de cone no Illustrator

Alguém sabe se existe algum script para gerar uma planificação de tronco de cone de forma simples no Ai?

This topic is closed to new replies. Start a new post to keep the conversation going.

3 replies

Participant
Jul 26, 2024 1:46 PM UTC

Hola, probá con este script, espero te sirva.

 

/**********************************************************************************************
 *                                                                                            *
 *                                    Etiqueta Troncopiramidal                                *
 *                                                                                            *
 *  Calculo de la forma desplegada de una etiqueta de papel para envolver una superficie de   *
 *  Cono truncado tipo balde de pintura.                                                      *
 *                                                                                            *
 **********************************************************************************************/


var mm = 2.83465;               // Conversión de mm a puntos que es la unidad de trabajo en js
var anchoTotal = 210 * mm;
var altoTotal = 297 * mm;

// 1 grado  =  0.0174532925 radianes
// 1 radian =  57.2957795 grados

var r1 = 40 * mm;
var r2 = 50 * mm;
var h = 80 * mm;

// Ventana de ingreso de datos
var DimW = new Window("dialog", "Dimensiones");
DimW.orientation = "column";
DimW.alignChildren = "right";
var DimGroup1 = DimW.add("group");
DimGroup1.orientation = "row";
DimGroup1.add("statictext", undefined, "Radio Menor (mm):");
var txt1 = DimGroup1.add("edittext", undefined, "40");
txt1.characters = 10;
txt1.active = true;
var DimGroup2 = DimW.add("group");
DimGroup2.add("statictext", undefined, "Radio Mayor (mm):");
var txt2 = DimGroup2.add("edittext", undefined, "50");
txt2.characters = 10;
txt2.active = false;
var DimGroup3 = DimW.add("group");
DimGroup3.add("statictext", undefined, "Altura (mm):");
var txt3 = DimGroup3.add("edittext", undefined, "80");
txt3.characters = 10;
txt3.active = false;
var myButtonGroup = DimW.add("group");
myButtonGroup.alignment = "right";
myButtonGroup.add("button", undefined, "OK");
myButtonGroup.add("button", undefined, "Cancel");
DimW.show();

r1 = parseFloat(txt1.text) * mm;
r2 = parseFloat(txt2.text) * mm;
h = parseFloat(txt3.text) * mm;


// Crea un documento nuevo en CMYK y con tamaño A4 (la medida expresada en puntos, 1 punto = 0,352778 mm)
var docPreset = new DocumentPreset;
docPreset.width = anchoTotal;
docPreset.height = altoTotal;
docPreset.units = RulerUnits.Millimeters;
docPreset.artboardLayout = DocumentArtboardLayout.GridByCol;
docPreset.numArtboards = 1
var doc = app.documents.addDocument(DocumentColorSpace.CMYK, docPreset);


var Troquel = doc.activeLayer;  // La variable Troquel toma la capa actual
Troquel.name = "Troquel";       // Le cambia el nombre a la capa actual

doc.defaultFilled = false;      // Por defecto todos los elementos creados
doc.defaultStroked = true;      // no tienen relleno y si tienen borde



var H = h * r2 / (r2 - r1);
var LT = Math.sqrt(r2 * r2 + H * H);
var L = Math.sqrt((r2 - r1) * (r2 - r1) + h * h);
var LR1 = LT - L;
var Alfa = r2 * 360 / LT;

var conoBase = doc.pathItems.add();
conoBase.setEntirePath(Array(Array(-r2, 0), Array(r2, 0)));

var conoTapa = doc.pathItems.add();
conoTapa.setEntirePath(Array(Array(-r1, h), Array(r1, h)));

var conoIzq = doc.pathItems.add();
conoIzq.setEntirePath(Array(Array(-r2, 0), Array(0, H)));

var conoDer = doc.pathItems.add();
conoDer.setEntirePath(Array(Array(r2, 0), Array(0, H)));

var circInf = doc.layers[0].pathItems.ellipse(H + LT, -LT, 2 * LT, 2 * LT, false, true);

var circSup = doc.layers[0].pathItems.ellipse(H + LR1, -LR1, 2 * LR1, 2 * LR1, false, true);

var supIzq = doc.pathItems.add();
var anguloTotal = (Math.asin(r2 / LT) * 57.2957795 + Alfa) - 90;
supIzq.setEntirePath(Array(Array(0, H), Array(LT * Math.cos(anguloTotal * 0.0174532925), H + LT * Math.sin(anguloTotal * 0.0174532925))));

var textRef = doc.textFrames.add();
textRef.contents = "Radio Menor = ";
textRef.contents += r1 / mm;
textRef.contents += "\nRadio Mayor = ";
textRef.contents += r2 / mm;
textRef.contents += "\nAltura = ";
textRef.contents += h / mm;
textRef.contents += "\nAlfa = ";
textRef.contents += Alfa;
textRef.contents += "º";
textRef.top = 500;
textRef.left = 100;
textRef.textRange.characterAttributes.size = 16;
Translate
m1b
Community Expert
Community Expert
Jul 26, 2024 2:19 AM UTC

Hi @Priscila38409341thj8  could you please post an example?

Translate
Participant
Jul 26, 2024 4:36 PM UTC

Simmm! Algo como isso aqui: 
que faça o processo de forma automática e não manual. 

Translate