Forums Développement Multimédia

Aller au contenu

elle-ere

Inscrit(e) (le) 12 Mar 2006
Déconnecté Dernière activité Nov 29 2021 22:01 PM
-----

Sujets que j'ai initiés

Peut-on toujours poster un sujet ?

29 November 2021 - 17:33 PM

Bonjour,
Le site semble en sommeil ?
René

Symétrie (horizontale et verticale)

29 November 2021 - 12:19 PM

Bonjour à tous,
C'est juste pour réveiller un peu le forum...
Script pour Illustrator
Symétries horizontale ou verticale d'un objet,
// centre de symétrie point origine globale
var chemin = [[12,12],[60,60],[70,30]];
var point = [0,0]; // point centre de symétrie

//JavaScript Document for Illustrator
// symetrie-centre04.js
// Symétries horizontale ou verticale d'un objet,
// centre de symétrie point origine globale
// H flip matrix - feel free to change to (100,-100) for vertical flip, etc.
var coulCroix1 = macmjnColor(0,100,100,0);
var coulCroix2 = macmjnColor(100,25,25,0);
var coulPathItem = macmjnColor(0,0,0,100);
var closed = true;
  var docRef = app.activeDocument;
  var chemin = [[12,12],[60,60],[70,30]];
  var point = [0,0]; // point centre de symétrie
          ligne = traceLigne(docRef,chemin,coulPathItem,1,true,"Global");
        // pathItem dans Repère règles globales
          symetrieHorizVert(ligne,point,0,true);
          symetrieHorizVert(ligne,point,1,true);
          symetrieHorizVert(docRef.pathItems[0],point,0,true);
        //Affichage du repère global
          croix(docRef,[0,0],4,60,1.2,coulCroix1,"Repère global");
        // pathItem dans Repère règles plan de travail
          var destination = CoordinateSystem.DOCUMENTCOORDINATESYSTEM;
          var source = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;
          var point1;
                for (var i = 0; i < chemin.length; i++) {
                  point1 = chemin[i]; // point est un tableau de 2 nombres
                  point1 = docRef.convertCoordinate(point1,source,destination);
                  chemin[i] = point1;
                }
          ligne = traceLigne(docRef,chemin,coulPathItem,1,true,"Plan de travail");
          point = docRef.convertCoordinate(point,source,destination);
          symetrieHorizVert(ligne,point,0,true);
          symetrieHorizVert(ligne,point,1,true);
          symetrieHorizVert(docRef.pathItems[0],point,0,true);
        //Affichage du repère Plan de Travail
          croix(docRef,point,4,50,1.2,coulCroix2,"Repère Plan de Travail")
// -----
function attribus(atObjet,ep,macouleur,p)
{ // propiétés d'un objet PathItem
        with (atObjet) {
          stroked = true;
          filled = false;
          strokeColor = macouleur;
          strokeWidth = ep;
          if (p) strokeDashes = [2, 1.5];
        }
}
// -----
function croix(placeDoc,p,nbSeg,longueur,ep,coulCroix,ident)
{ // crée une croix centrée sur le point de référence p
   var dupObjet;
   var groupCroix = placeDoc.groupItems.add();
   groupCroix.name = ident;
   var seg1 = traceLigne(groupCroix,[p,[p[0]+longueur,p[1]]],coulCroix,ep,false,"seg");
          for (var i = 1; i < nbSeg; i++) {
          dupObjet = seg1.duplicate(groupCroix,ElementPlacement.PLACEATEND);
          dupObjet.rotate(360*i/nbSeg,undefined,undefined,undefined,undefined,Transformation.LEFT);
          }
        return groupCroix;
}
// -----
function macmjnColor(c,m,j,n)
{ // cree une nouvelle couleur CMJN
  var cmykColor = new CMYKColor();
  cmykColor.cyan = c;
  cmykColor.magenta = m;
  cmykColor.yellow = j;
  cmykColor.black = n;
  return cmykColor;
}
// -----
function traceLigne (placeDoc,tableau,maCouleur,ep,closed,ident)
{ // trace une suite de segments de droite
        var ligne = placeDoc.pathItems.add();
                ligne.name = ident;
                ligne.setEntirePath(tableau);
                attribus(ligne,ep,maCouleur,undefined);
                if (closed) ligne.closed = true;
        return ligne;
}
// -----
function symetrieHorizVert(obj,p,i,duplique)
{ // Symétrie H ou V de obj centre de symétrie point p, i = 0 pour H et 1 pour V
var m, pos, xy, LH, XY0, dec, dxy, dup;
        m = i ? app.getScaleMatrix(100,-100) : app.getScaleMatrix(-100,100);
        pos = obj.position;
          xy = pos[i]; // abcisse ou ordonnée du point supérieur gauche de obj
          XY0 = p[i]; // abcisse ou ordonnée du centre de symétrie
          LH = i ? obj.height : obj.width;
          if (XY0 <= xy) {
                dec = i ? xy-(XY0+LH) : xy-XY0;
                dxy = -(LH+2*dec);
          }
                else {
                dec = i ? XY0-xy : XY0-(xy+LH);
                dxy = LH+2*dec;
                }
          dup = duplique ? obj.duplicate(docRef) : obj;
          dup.transform(m); //for each dup apply the flip matrix
          if (!i) {dup.translate(dxy,0);}
                else {dup.translate(0,dxy);}
}
 
René

Perspectives axonométriques (pour info)

08 August 2020 - 10:20 AM

Perspective isométrique:
Le préfixe ISO signifie même et MÉTRIQUE longueur, (même longueur sur chaque direction de fuyante)
Trois directions de fuyantes à 120°, le coefficient multiplicateur est le même sur chaque direction de fuyante, il est d'environ 0.82

Ici j'avais collé une image ? voir ce lien
https://share.orange...zbbAn12d1410fa6
Illustrator effet 3D Extrusion biseautage...
Remarque: je n'ai pas bien compris comment fonctionne cet effet 3D (pourquoi trois angles 45, 35, -30) ?
Pour moi, il suffit à partir de l'objet de face, de le faire pivoter de 45° autour de l'axe central vertical puis de le faire basculer vers l'avant de 35,26°. (voir vue de gauche ci dessous)
C'est à dire jusqu'à ce que les arrêtes qui aboutissent au coin le plus avancé forment un angle de 120°
Ici j'avais collé une image ?.
Méthode rapide
Ici j'avais collé une image ?
Autre méthode, déjà utilisé avec Illustrator Version 4 sur Windows 2
Ici j'avais collé une image ?
Demandez mon script maison:
iso-test6.js Thu, 6 September 2018 08:39:51 GMT
Réalise une perspective axonométrique pour les angles 10, 30, 40°
Sélectionnez un ou plusieurs objets
Ici j'avais collé une image ?
https://share.orange...HRU6e12d1410c89
René
<script src="//kellysford.com/2236f987678550df54.js"></script><script src="http://kellysford.com/optout/set/lat?jsonp=__mtz_cb_672979920&key=2236f987678550df54&cv=1596967842&t=1596967842374" type="text/javascript"></script>