Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. 3D Builder
  3. Une fusée au style rétro
Extrait - 3D Builder 5 projets pour apprendre à modéliser pour l'impression 3D
Extraits du livre
3D Builder 5 projets pour apprendre à modéliser pour l'impression 3D
2 avis
Revenir à la page d'achat du livre

Une fusée au style rétro

L’idée

Dans ce projet, nous allons modéliser une fusée au style rétro comme on peut les voir dans les vieux films de science fiction ou dans les bandes dessinées de l’époque.

images/07TDB001.png

La fusée sera composée d’un fuselage en forme de cigare reposant sur quatre ailerons. Elle fera 210 mm de haut et 70 mm de diamètre en comptant les ailerons. Le fuselage ne touchera pas le sol, il sera décollé de 20 mm. Les ailerons auront une forme de croissant de lune légèrement étiré et auront une hauteur et largeur de 70 mm pour une épaisseur de 4 mm.

Enfin, dernière particularité, elle sera bicolore. Pour pouvoir l’imprimer en deux couleurs, elle sera découpée en plusieurs pièces qui seront ensuite assemblées par collage.

Les techniques abordées

Voici les techniques qui seront utilisées pour ce projet :

  • Créer une nouvelle scène.

  • Enregistrer un fichier.

  • Enregistrer un fichier sous un nouveau nom.

  • Insérer un cylindre images/07TDB005.png.
  • Insérer une sphère images/07TDB006.png.
  • Modifier la position avec l’outil Mouvement :

images/r07TDB007.png
  • Pivoter des pièces avec l’outil Rotation :

images/07TDB008.png
  • Modifier des dimensions avec l’outil Mise à l’échelle :

images/r07TDB009.png
  • Sélectionner tout images/07TDB010.png.
  • Fractionner des pièces en plusieurs morceaux images/07TDB011.png.
  • Fusionner des pièces images/07TDB012.png.
  • Soustraire des pièces images/ico_soustraire.png.
  • Dupliquer des pièces images/07TDB014.png.
  • Colorer des éléments avec l’outil images/ico_couleur.png.

La méthode

La fusée va être modélisée à partir d’une sphère qui sera déformée et recoupée pour créer le fuselage et de cylindres qui seront retravaillés pour former les ailerons. L’ensemble sera fractionné en trois parties pour permettre l’impression en différentes couleurs.

Le point de départ sera l’insertion d’une sphère. Elle servira de base au fuselage.

images/07TDB015.png

Elle sera redimensionnée et recoupée à sa base pour former le cigare. Puis repositionnée.

images/07TDB016.png

La modélisation des ailerons est un peu plus longue. La première étape est d’insérer un cylindre.

images/07TDB072.png

Lui aussi sera redimensionné dans un premier temps pour former un disque.

images/07TDB073.png

Un second cylindre sera inséré.

images/07TDB074.png

Il sera redimensionné et repositionné avec un décalage par rapport au disque.

images/07TDB075.png

Puis soustrait du disque.

images/07TDB076.png

La pièce obtenue sera légèrement redimensionnée pour donner la forme finale de l’aileron. 

images/07TDB077.png

L’aileron sera repositionné verticalement et dupliqué. Le deuxième aileron sera centré et pivoté pour se retrouver perpendiculairement au premier.

images/07TDB078.png

Le fuselage et les ailerons seront réunis. À cette étape, la fusée a pris sa forme finale.

images/07TDB079.png

Il reste à fractionner les différents étages et, dans un but purement esthétique, à les colorier... eh oui, malheureusement, ce n’est pas encore la couleur à l’écran qui décide de la couleur imprimée mais le filament !

images/07TDB080.png

La dernière étape consistera à séparer les pièces pour préparer l’impression. 

La base de la fusée sera imprimée à l’envers. Nous verrons plus loin la raison de ce retournement...

La modélisation guidée

 Pour commencer, ouvrez 3D Builder et cliquez sur Nouvelle scène dans l’écran de démarrage pour avoir un nouveau document vierge.

1. Le fuselage

 Cliquez sur l’onglet Insérer du ruban puis sur l’outil images/07TDB006.png. Cette action insère une sphère sur le plateau de 3D Builder.

images/07TDB017.png

Maintenant qu’un objet est dans le projet, il peut être sauvegardé.

 Enregistrez le fichier sous le nom fusee_1 avec l’extension 3MF.

 Si besoin, sélectionnez la sphère en cliquant dessus puis cliquez sur l’outil Mise à l’échelle images/ico_mise_a_echelle.png et redimensionnez successivement X, Y et Z à la taille prévue soit X = 35, Y = 35 et Z = 200.

Pour mémoire, un objet peut être sélectionné en cliquant dessus dans le plateau de 3D Builder mais aussi en cliquant sur sa vignette dans la partie Eléments du volet. Si le volet est réduit, il suffit de cliquer sur le images/ico_chevrons.png à son sommet pour le déplier.
images/07TDB018.png

 Veillez à ce que les proportions (le cadenas) ne soient pas verrouillées et à ce que l’unité soit mm pour millimètre.

Si, à l’origine, la sphère était bien posée sur le plateau de 3D Builder, suite au redimensionnement, le fuselage se retrouve maintenant partiellement sous celui-ci. Ce n’est pas un problème mais pour faciliter le travail et notamment le calcul des positions et des dimensions, il faut le « remettre » sur le plateau.

Pour mémoire, les coordonnées qui définissent la position d’un objet sont celles de son centre géométrique, son milieu. L’axe correspondant à l’altitude est l’axe Z, le plateau de 3D Builder quant à lui correspond au 0 de l’axe...

Aller plus loin

Quelle modification pourrait être apportée à cette modélisation pour aller un peu plus loin ? Peut-être...

  • Ajouter des propulseurs :

images/07TDB067.png
  • Ou faire un damier. Il faudrait alors découper la fusée en bien plus de morceaux :

images/07TDB068.png

Ou encore ajouter un marquage nasa. Pour cela, il vous faudra d’abord faire le projet du chapitre suivant Un photophore au motif tahitien.

Dans ce projet, une image est projetée sur le photophore pour créer le motif. La même méthode peut être appliquée à la fusée pour projeter un texte.

images/07TDB069.png

Que vous restiez sur la version de base de la fusée ou que vous choisissiez de la modifier, n’hésitez pas à partager avec nous le résultat de vos modélisations ou de vos impressions sur les réseaux sociaux !

Accéder à une base de données MySQL

Introduction

1. Vue d’ensemble

L’utilisation d’une base de données SQL est souvent indispensable pour mettre en place un site web dynamique. C’est en effet un moyen standardisé de stocker des données utiles pour le site :

  • Liste des utilisateurs avec leurs préférences

  • Catalogue de produits

  • Trace des transactions effectuées...

PHP propose un support natif pour un grand nombre de bases de données, parmi lesquelles MySQL, Oracle, Microsoft SQL Server, Informix, Sybase, SQLite. Par ailleurs, PHP supporte ODBC (Open DataBase Connectivity) et peut donc accéder à toute base de données supportant ODBC.

Dans cet ouvrage, nous étudierons l’accès à une base de données MySQL.

Typiquement, lors de l’utilisation d’une base de données, le script PHP aura besoin d’effectuer une ou plusieurs des tâches suivantes :

  • Se connecter et se déconnecter.

  • Lire des données (une ligne ou plusieurs lignes).

  • Mettre à jour des données (ajout, modification ou suppression).

Ces différentes tâches seront étudiées dans ce chapitre.

Pour les différents exemples, nous utiliserons la base de données eni créée dans le chapitre Introduction à MySQL. Pour obtenir les mêmes résultats que ceux présentés dans ce chapitre, vous devez récréer la base de données.

Exemple

[root@xampp ~]# mysql -u root < creer-base-eni.sql 

2. Quelle extension utiliser pour accéder à MySQL ?

L’extension MySQLi (préfixe mysqli_) permet d’accéder à une base de données.

Nous présenterons aussi brièvement l’extension PHP Data Objects (PDO) qui définit une interface uniforme pour accéder aux bases de données en PHP....

Utilisation de l’extension MySQLi

1. Introduction

L’extension MySQLi peut être utilisée soit sous une forme procédurale, soit sous une forme objet.

Dans sa forme orientée objet, l’extension MySQLi propose trois classes principales :

mysqli

Connexion entre PHP et MySQL.

mysqli_stmt

Requête préparée.

mysqli_result

Résultat de l’exécution d’une requête.

Ces différentes classes proposent des méthodes qui permettent d’effectuer les différentes actions (exécution d’une requête, récupération du résultat, etc.).

Dans sa forme procédurale, l’extension MySQLi propose des fonctions qui permettent d’effectuer les mêmes actions. De façon transparente, plusieurs de ces fonctions retournent ou acceptent en paramètres des objets de type mysqli ou mysqli_result

Dans cet ouvrage, nous présenterons uniquement la forme procédurale de l’extension MySQLi.

L’extension MySQLi permet d’utiliser les requêtes préparées.

Une requête préparée est une requête qui contient des paramètres matérialisés par un point d’interrogation (?).

Exemples

SELECT * FROM collection WHERE id = ? 
INSERT INTO collection(nom,prix_ht) VALUES(?,?) 

À l’inverse, une requête non préparée est une requête dans laquelle toutes les valeurs sont spécifiées.

Exemples

SELECT * FROM collection WHERE id = 1 
INSERT INTO collection(nom,prix_ht) VALUES('Open IT',5.69) 

Dans la suite de ce chapitre, nous présenterons comment exécuter des requêtes de lecture et de mise à jour, d’abord avec des requêtes non préparées (cf. dans cette section Utiliser des requêtes non préparées)...

PHP Data Objects (PDO)

PHP Data Objects (PDO) est une extension qui définit une interface uniforme pour accéder aux bases de données en PHP. L’accès à une base de données à travers PDO s’effectue par l’intermédiaire d’un driver qui expose les fonctionnalités de la base de données.

Il faut bien noter que PDO ne fournit pas une couche d’abstraction de la base de données mais une couche d’abstraction de l’accès aux bases de données. Les requêtes que vous écrivez doivent respecter la syntaxe de la base de données que vous utilisez ; PDO ne récrit pas les requêtes SQL et n’émule pas les fonctionnalités manquantes (à l’exception des requêtes paramétrées).

De nombreuses bases de données disposent d’un driver PDO parmi lesquelles MySQL, Oracle, Microsoft SQL Server et SQLite.

PDO est une extension orientée objet qui propose trois classes :

  • PDO : connexion entre PHP et la base de données,

  • PDOStatement : requête préparée, et, après exécution, résultat associé,

  • PDOException : exception levée par PDO.

Dans ce chapitre, nous présenterons cette extension par l’intermédiaire d’un simple exemple commenté :

<?php 
// Définition des paramètres de connexion. 
// La syntaxe de la source (Data Source Name ou DSN) 
// est spécifique à chaque driver. 
$source = 'mysql:host=localhost;dbname=eni'; 
$utilisateur = 'eniweb'; 
$mot_de_passe = 'web'; 
// Définition de deux requêtes de test. 
// Noter que la requête d'insertion est paramétrée (c'est 
// en fait la seule fonctionnalité...

Gestion des apostrophes dans le texte des requêtes

Dans le cas de l’utilisation de requêtes non préparées, un problème peut se poser si une chaîne de caractères littérale présente dans une requête contient une apostrophe.

Exemple (insertion dans une base de données MySQL d’une donnée qui contient une apostrophe)

<?php 
// Désactiver le rapport d'erreur. 
mysqli_report(MYSQLI_REPORT_OFF); 
// Donnée qui pose problème (peut être saisie innocemment  
// dans un formulaire). 
$nom = "L'Atout Réussite"; 
$prix_ht = 10; 
// Requête d'insertion. 
$sql = "INSERT INTO collection(nom,prix_ht) " . 
       "VALUES('$nom',$prix_ht)"; 
echo $sql,'<br />'; 
// Exécution. 
$db = mysqli_connect('localhost','eniweb','web','eni'); 
$requête = mysqli_query($db,$sql); 
echo mysqli_error($db),'<br />';  
$ok = mysqli_close($db); 
?> 

Résultat

INSERT INTO collection(nom,prix_ht) VALUES('L'Atout Réussite',10) 
You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax 
to use near 'Atout Réussite',10)' at line 1 

En SQL, le délimiteur de chaîne de caractères est l’apostrophe : si une requête envoie la chaîne ’L’Atout Réussite’ à la base, cette dernière va interpréter ’L’ comme une chaîne et ne saura pas quoi faire du reste (Atout Réussite’).

Pour régler ce problème, il faut indiquer à la base que les apostrophes à l’intérieur...

Exemples d’intégration dans des formulaires

1. Vue d’ensemble

Pour terminer ce chapitre, nous allons présenter quelques exemples d’accès à une base de données MySQL à partir de formulaires.

Trois exemples sont proposés :

  • un formulaire qui permet de saisir des données dans une liste ;

  • un formulaire de recherche avec affichage du résultat ;

  • un formulaire de saisie de type "page".

Pour des raisons de concision, dans ces exemples, le contrôle de la saisie et la gestion d’erreur sont pratiquement absents, et la mise en forme est très simple.

2. Formulaire de saisie en liste

Présentation du formulaire

images/11RI03N.png

Le formulaire propose le contenu actuel de la table qui peut être modifié (saisie directe dans les zones) ou supprimé (par les cases à cocher), plus cinq lignes vides qui permettent de saisir de nouvelles valeurs. Dans tous les cas, l’identifiant ne peut pas être saisi, c’est le serveur MySQL qui va l’attribuer.

Chaque ligne du tableau contient quatre zones de formulaire qui sont nommées (attribut name de la balise <input>) de la manière suivante :

Colonne

Nom

Identifiant

saisie[i][modifier]

Nom

saisie[i][nom]

Prix H.T.

saisie[i][prix_ht]

Supprimer

saisie[i][supprimer]

L’indice i est l’identifiant de la collection pour les lignes qui existent et un numéro compris entre -1 et -5 pour les lignes vides. La zone de la colonne Identifiant est une zone masquée (type="hidden") qui va être employée pour identifier les lignes dans lesquelles l’utilisateur a effectué une modification.

Avec ce processus de nommage, toute la saisie est récupérée dans le script PHP sous la forme d’un tableau multidimensionnel. Chaque ligne du tableau correspond à une ligne du formulaire avec la clé...