Tutoriel OpenSCAD 6 – Transformations 1

Page suivante : Transformations 2

Voici les commandes de transformation les plus souvent utilisées : difference(), union(), translate() et rotate().

Difference

difference() soustrait une ou plusieurs formes d’une autre, ou de plusieurs autres si elles sont regroupées par union(). difference() ne prend pas de paramètre. Dans les accolades, obligatoires, toutes les formes présentes après la première sont extraites de celle-ci. Extraction d’un parallélépipède plat d’un cube :

  difference ()
  {
    cube (10, center=true);
    cube ([11,11,1], center=true);
  }

Rendu d’OpenSCAD montrant une extraction

La surface d’une forme extraite doit toujours dépasser celle de la forme dont on l’extrait, les surfaces extérieures des deux formes ne devant pas avoir de plan en commun. Dans l’exemple ci-dessus ne pas donner au parallélépipède les dimensions X et Y du cube :

  difference ()
  {
    cube (10, center=true);
    cube ([10,10,1], center=true);
  }

Rendu d’OpenSCAD montrant une extraction

Le caractère # est utile pour se rendre compte de l’étendue de l’objet extrait :

  difference ()
  {
    cube (10, center=true);
    #cube ([11,11,1], center=true);
  }

Rendu d’OpenSCAD montrant une extraction

Union

union() réalise l’assemblage de plusieurs éléments. Cela n’a généralement pas d’effet visuel mais un effet sur la logique d’assemblage des éléments d’un objet. union() ne comporte pas de paramètre et s’applique à un groupe d’objets mis entre accolades.

On utilise union() pour assembler plusieurs éléments si une extraction par difference() doit être faite sur l’ensemble de ceux-ci :

  difference ()
  {
    union ()
    {
      cube (10, center=true);
      translate ([5,5,0]) cylinder (r=4, h=10, center=true, $fn=80);
    }
    cube ([20,20,1], center=true);
  }

Rendu d’OpenSCAD montrant une extraction

Translate

translate() déplace un élément ou un groupe d’éléments. Cette commande sert au position­nement relatif des éléments composant un objet. Elle sert aussi au positionnement d’un objet sur l’origine du système de coordonnées et à en faire coïncider la base avec le plan X/Y. L’objet pourra alors être correctement imprimé, au centre du plateau d’impression, et ni en dessous ni au-dessus de celui-ci.

Le seul paramètre de translate() est un triplet. Il s’applique à un seul objet, ou à un groupe d’objets avec des accolades :

  translate ([10,2,16]) cylinder (r=2, h=12);

  translate ([10,2,16])
  {
    cylinder (r=2, h=9);
    cube(9);
  }

Rotate

rotate() fait pivoter un élément selon un angle a par rapport à l’axe vertical. Dans cet exemple, un parallélogramme pivote de 45° vers la gauche si a=45, et de 45° vers la droite si a=-45 (a peut être omis) :

  rotate (a=45) cube([5,20,1]);
  color ("red") rotate (-45) cube([5,20,1]);

Rendu d’OpenSCAD montrant une rotation

La rotation peut se faire sur plusieurs axes si un triplet est fourni. On obtient les mêmes rotations sur Z que ci-dessus en écrivant :

  rotate ([0,0,45]) cube([5,20,1]);
  color ("red") rotate ([0,0,-45]) cube([5,20,1]);

Une rotation sur chacun des axes :

  rotate ([30,30,30]) cube([5,20,1]);

Rendu d’OpenSCAD montrant une rotation

Page suivante : Transformations 2

• Publié le 19/07/2013