Programmation PHP/Doctrine
Tutoriel d'OpenScad/Généralités
= Chapitre 1 -- Généralités =
Introduction.
OpenSCAD est un programme de conception paramétrique 2D/3D, basé sur un langage de programmation fonctionnel utilisé pour créer des modèles (en) prévisualiser à l'écran, et générer un maillage 3D qui permet au modèle d'être exporter dans une variété de formats de fichier 2D/3D.
Un script en langage OpenSCAD est utilisé pour créer des modèles 2D ou 3D. Ce script est une liste de déclaration d'actions et d'opérateurs.
 object();
 variable = value;
 operator() action();
 operator() { operator() action();
Les objets sont les blocs de construction des modèles, créer avec des primitives 2D et 3D. Les objets se terminent par un point-virgule codice_1.
Les déclarations d'actions regroupent la création d'objets utilisant des primitives et l'assignation de valeurs à des variables. Les déclarations d'actions se terminent aussi par un point-virgule codice_1.
Les opérateurs, ou les transformations, modifient l'emplacement, la couleurs ou d'autres propriétés des objets. Les opérateurs utilisent des accolades codice_3 quand leur portée couvre plus d'une action. Plus d'un opérateur peut être utilisés pour la même action ou le même groupe d'action. Les opérateurs multiples sont traités de droite à gauche, c'est-à-dire que l'opérateur le plus proche de l'action est appliqué en premier. Les opérateurs ne sont pas terminés par des points-virgules, mais les actions individuelles qu'ils contiennent le sont bien.
Exemples :
 cube(5);
 x = 4+y;
 rotate(40) square(5,10);
Les commentaires.
Les commentaires sont un moyen de laisser des notes dans le script, ou le code, (soit pour vous-même soit pour les autres programmeurs) décrivant comment le code fonctionne, ou ce qu'il fait. Les commentaires ne sont pas évaluer par le compilateur, et ne devraient pas être utilisé pour décrire du code évident.
OpenSCAD utilise la même syntaxe pour les commentaires qu'en C/C++.
 // Ceci est un commentaire
 maVariable = 10; // Le reste de la ligne est un commentaire
 /*
 Les commentaires mutli-lignes
 peuvent s'étendre sur plusieurs lignes.
Les valeurs et les types de données.
Une valeur dans OpenSCAD est soit un nombre (comme codice_4), soit un booléen (comme codice_5), soit une chaîne de caractères (comme codice_6), soit un intervalle (comme codice_7), soit un vecteur (comme codice_8), ou soit une valeur indéfinie (codice_9). Les valeurs peuvent être stockées dans des variables, transmises comme arguments à des fonctions, et retournés comme des résultats de fonctions.
[OpenSCAD est un langage typé dynamiquement avec un ensemble fixe de types de données. Il n'y a pas de types prédéfinis ou définis par l'utilisateur. Les fonctions ne sont pas des valeurs. En réalité, les variables et les fonctions utilisent des espaces de nomes séparés.]
Les nombres.
Les nombres sont le type de valeur le plus important dans OpenSCAD, et ils sont écrits dans la notation décimal classique comme dans d'autres langages. Exemple : codice_10, codice_4, codice_12, codice_13. [OpenSCAD ne supporte pas les notations hexadécimales ou octales pour les nombres.]
En plus des nombres décimaux, les noms suivants pour des nombres spéciaux sont définis :
Le langage OpenSCAD ne possède qu'une seule sorte de nombre, qui un nombre à virgule flottante de 64 bits IEEE. [OpenSCAD ne différencie pas les nombres entiers et à virgule flottante comme deux types différents, ni ne supporte les nombre complexes. Puisque OpenSCAD utilise le standart IEEE de virgule flottante, il y a quelques écarts par rapport au comportement des nombres en mathématique : 
Noter que "inf", "-inf" et "nan" ne sont pas définis comme des constantes numériques par OpenSCAD, même si vous pouvez calculer des nombres qui sont affichés de cette façon par ECHO. Vous pouvez définir des variables avec ces valeurs comme ceci : 
 inf = 1e200 * 1e200;
 nan = 0 / 0;
 echo(inf,nan); 
Notez que codice_17 est la seule valeur OpenSCAD qui n'est égale à aucune autre valeur, pas même elle-même. Bien que vous pouvez vérifier si une variable codice_19 a la valeur indéfinie en utilisant codice_20, vous ne pouvez pas utiliser codice_21 pour vérifier si codice_19 est 'Not A Number'. À la place, vous devez utiliser codice_23 pour vérifier si codice_19 est codice_17. 
Les valeurs booléennes.
Les booléens sont des valeurs de vérité. Il y a deux valeurs booléennes, nommées codice_5 et codice_27.
Un booléen est passé comme argument à la déclaration conditionnelle codice_28, à l'opérateur conditionnel ternaire codice_29 et aux opérateurs logiques codice_30 (not/non), codice_31 (and/et), et codice_32 (or/ou). Dans tous ces contextes, vous pouvez passez n'importe quelles quantités. La plupart des valeurs sont converties en codice_5 dans un contexte booléen, les valeurs converties en codice_27 sont : 
Notez que les expressions codice_41 (la chaîne de caractères), codice_42 (un vecteur numérique), codice_43 (un vecteur contenant un vecteur vide), codice_44 (un vecteur contenant la valeur booléenne fausse) et codice_45 (Not A Number) valent toutes vraies. 
Les chaînes de caractères.
Une chaîne de caractères est une séquence de zéro ou plusieurs caractères Unicode. Les chaînes de caractères sont utilisées pour spécifier les noms de fichiers lors de l'importation d'un de ces derniers, et pour afficher du texte pour débugger à l'aide de codice_46. Les chaînes de caractères peuvent aussi être utilisées avec la nouvelle primitive codice_47 ajoutée dans la version 2015.03. Une chaîne de caractères littérale est écrite comme une séquence de caractères isolée entre des doubles guillemets codice_48, comme ceci : codice_38 (une chaîne de caractères vide) ou codice_50. 
Pour ajouter des doubles guillemets codice_48 dans une chaîne de caractères littérale, utilisez codice_52. Pour ajouter une barre oblique inversée codice_53 (antislash) dans une chaîne de caractères littérale, utilisez codice_54. Les séquences d'échappement suivantes commençant par des codice_53 peuvent être utilisés à l'intérieur de chaînes de caractères littérale : 
Voyez la fonction codice_47 pour de plus amples informations sur les caractères Unicode. 
Note : Ce comportement est nouveau depuis la version 2011.04. Vous pouvez mettre à jour des fichiers plus vieux en utilisant la commande codice_65 suivante : codice_66. 
Exemple : 
 echo("Le rapide renard brun \tsaute \"au-dessus\" du chien paresseux.\rLe rapide renard brun.\nLe chien \\paresseux\\."); 
 ECHO: "Le rapide renard brun saute "au-dessus" du chien paresseux.
 Le rapide renard brun.
 Le chien \paresseux\." 
 ECHO: "Le rapide renard brun saute "au-dessus" du chien paresseux.
 Le rapide renard brun.\n Le chien \paresseux\." 
Les intervalles.
Les intervalles sont utilisées dans les boucles codice_67 et dans codice_68. Il existe deux variantes :
 [<début>:<fin>]
 [<début>:<pas>:<fin>]
Malgré le fait qu'ils soient entourés de crochets, ce ne sont pas des vecteurs. Ils utilisent le deux-points ':' plutôt que des points-virgules.
 r1 = [0:10];
 r2 = [0.5:2.5:20];
 echo(r1); // ECHO: [0: 1: 10]
 echo(r2); // ECHO: [0.5: 2.5: 20]
Vous devriez éviter les valeurs de pas qui ne peuvent pas être représentées exactement par un nombre binaire à virgule flottante. Les entiers sont ok, tout comme les valeurs fractionnaires dont le dénominateur est une puissance de deux. Par exemple, 0,25 (1/4) et 0,125 (1/8) sont sûrs, mais 0,2 (1/5) devrait être éviter. Le problème avec ces valeurs de pas est que votre intervalle pourrait avoir trop ou trop peu d'éléments, dû à une arithmétique inexacte;
La valeur par défaut est un 1. Un intervalle de forme codice_69 avec un codice_70 plus grand que le codice_71 générera un avertissement et est équivalent à codice_72. Un intervalle de forme codice_73 avec un codice_70 plus grand que le codice_71 ne générera pas d'avertissement et est équivalent à un codice_39. Le codice_77dans un intervalle peut être négatif (pour les versions après 2014).
La valeur indéfinie.
La valeur indéfinie est une valeur spéciale écrite codice_9. C'est la valeur initial d'une variable à laquelle une valeur n'a pas été assignée, et elle est souvent renvoyée comme résultat par des fonctions ou des opérateurs qui ont reçus des arguments incorrects. En résumé, codice_9 peut être utilisé comme valeur nulle, équivalente à codice_80 ou codice_81 dans d'autres langages de programmations.
Toutes les expressions arithmétiques contenant un codice_9 sont évaluées comme codice_9. Dans les expressions logiques, codice_9 est équivalent à codice_27 (la valeur fausse).
Notez que les opérations mathématiques peuvent aussi renvoyer un codice_86 ('not a number', pas un nombre) pour indiquer un argument illégal. Par exemple, codice_87 vaut codice_9, mais codice_45 vaut codice_86. Les opérateurs relationnels comme '<' et '>' renvoie codice_27 s'ils reçoivent des arguments illégaux. Bien que codice_9 soit une valeur reconnue par le langage, codice_86 ne l'est pas.