2017-08-28 3 views
-1

Je travaille à la création d'un nuancier. Je commence par CMJN d'abord et je vais passer à d'autres domaines avec ce format une fois que je l'aurai établi en premier. J'ai été capable de développer tous les conteneurs nécessaires, mais je suis incapable d'ajouter un fillColor à ces boîtes. Je sens que je ne sais pas comment faire ça. Quelqu'un peut-il s'il vous plaît me donner de l'aide? Voici mon script. S'il vous plaît gardez à l'esprit que mes valeurs CMJN doivent pouvoir être entrées comme variables ex.Ajout d'une couleur au nouveau rectangle, mais variable CMJN dans le script InDesign

Var c = 0

Var m = 0

Var y = 0

Var k = 0

quand je lance ce à travers une boucle I augmente par 5% donc, ce serait c = c + 5 et ensuite ça va parcourir ma boucle.

myDocument = app.activeDocument; 



{//Create a layer to hold the printers marks (if it does not already exist). 

var myLayer = myDocument.layers.item("ColorSwatches"); 

try{ 

    myLayerName = myLayer.name; 

} 

catch (myError){ 

    var myLayer = myDocument.layers.add({name:"ColorSwatches"}); 

} 

    } 

    //Create Rectangle 

    //Set the bounds of the rectangle [x1, y1, x2, y2] 

    //The x1, y1 refers to the upper left coordinate position; the x2, y2 refers to the lower right coordinate 

    //x2 = Height and y2 = Width 

    var myPage = myDocument.pages.item(0); 

    var y1=1.76 

    var y2=2.21 

    var x1=1.05 

    var x2=1.5 

    for (i = 0; i<105; i=i+5) { 

    for (m=0;m<105;m=m+5){ 

    var myRectangle = myPage.rectangles.add({geometricBounds:[x1, y1, x2, y2]}); 



    y1=y1+.50 

    y2=y2+.50 

    } 

    y1=1.76 

    y2=2.21 

    x1=x1+.50 

    x2=x2+.50 

    } 

Répondre

0

un objet rectangle a une propriété fillColor:

myRectangle.fillColor[5,5,5,5]; 
+0

Je viens d'essayer cette ligne du script et il passe en mode débogage et des erreurs sur cette ligne. Je suis d'accord qu'un rectangle a cette propriété de couleur, mais je ne pense pas que c'est ainsi que son utilisation et de ce que j'ai vu, vous devez l'appeler comme une chaîne –

+0

Vous avez raison, il faut un échantillon. Voir mon autre réponse –

0

Vous devez créer et appliquer nuanciers à vos rectangles:

var myDoc = app.documents[0]; 
var myRectangle = myDoc.rectangles[0]; 
var myColor = myDoc.colors.add(); 
myColor.colorValue = [5,5,5,5]; 
myColor.name = "My New Color"; 
myRectangle.fillColor = myColor; 

Ceci est basé sur Kasyan Servetsky répondre aux ce fil https://forums.adobe.com/thread/942867

0

quelques remarques:

  • selon ID Obj Modèle object.geometricBounds coordonnées commandes est y1, x1, y2, x2 -> où 'y' est vertical et 'x' horizontale; '1' UpLeft, '2' RightDown;

  • Avez-vous considéré le nombre de couleurs à créer en supposant que l'étape suivante = 5?

test ci-dessous un exemple de code:

const 
myDocument = app.activeDocument, 
myPage = myDocument.pages[0], 
recLimit = 441,     // count of rectangles to be created 
colorValueJumper = 5, 
boxSide = Math.floor(Math.sqrt(recLimit)), 
pageWidth = myPage.bounds[3] - myPage.bounds[1], 
squareSize = Math.floor(pageWidth/boxSide); 
var 
myLayer = myDocument.layers.item("ColorSwatches"), 
step = 0, 
c, m, y, k, currentColor; 

if(!myLayer.isValid) myLayer = myDocument.layers.add({name:"ColorSwatches"}); 

for(k = 0; k<=100; k = k+colorValueJumper) 
    for(y = 0; y<=100; y = y+colorValueJumper) 
     for(m = 0; m<=100; m = m+colorValueJumper) 
      for(c = 0; c<=100; c = c+colorValueJumper) { 
       if (++step == recLimit) exit(); 
       currentColor = myDocument.colors.add({ 
        model: ColorModel.PROCESS, 
        space: ColorSpace.CMYK, 
        colorValue: [c,m,y,k], 
        name: ("00000" + step).slice(-5) + "_CMYK: " + [c,m,y,k].join(" - ") 
        }); 
       createRec(step, currentColor); 
       } 
function createRec(cnt, cColor) { 
var 
    y0 = cnt%boxSide*squareSize, 
    x0 = Math.floor(cnt/boxSide)*squareSize, 
    y1 = (cnt%boxSide + 1)*squareSize, 
    x1 = (Math.floor(cnt/boxSide) + 1)*squareSize, 
    mRec = myPage.rectangles.add({ 
     geometricBounds: [y0,x0,y1,x1], 
     itemLayer: myLayer, 
     fillColor: cColor 
     }); 
}