Menu Fermer

Imprimante 3D – Blender, Python et Visual Studio Code

Date de la dernière modification: 2 novembre 2025

A l’origine ce blog, datant du printemps 2021, sans Visual Studio Code, faisait partie de l’article Imprimante 3D – Creality Ender 3 V2 qui reste encore ma référence aujourd’hui. J’y ai cependant laissé une introduction dans la partie Blender et Python: créer des objets!

C’est fin octobre 2025 que j’ai débuté avec Visual Studio Code! Il y a encore pas mal de mystères pour moi, mais je m’y retrouve. Si des lecteurs ont des commentaires (erreurs, suggestions, etc), je les accepte volontiers: jean-bernard@boichat.ch

Blender, Python et Visual Studio Code – Généralité

Les personnes familiers à la modélisation 3D sous Blender seront impressionnés par la documentation de l’API de Blender pour Python.

On commencera par quelques liens utiles comme
Le site Web de Python, voire Python Introduction,  Blender Python QuickstartPython API Overview et mon Un Tuto Blender super rapide pour impression 3D.

En passant sous Blender au mode Scripting, (menu tout en haut) la Console en bas à gauche nous montre les commandes d’interface lors de création et de manipulations d’objets avec l’interface Blender, par exemple pour un Bevel en Edit Mode : bpy.ops.mesh.bevel(offset=2.69618, offset_pct=0, release_confirm=True). Magnifique! Mais le retour dans cette console offre parfois tellement de paramètres de l’API bpy qu’on a de la peine à s’y retrouver.

Dans cette même Console en bas à gauche, il est aussi possible de copier/coller des exemples, car c’est une console terminal Python.
Noter que dans cette dernière la fonction print (souvent utilisée lors du développement de code) fonctionnera, ce qui n’est pas possible avec du code dans la fenêtre Scripting

On voit donc que l’utilisation de Python peut permettre de créer des objets où on pourra plus tard corriger des dimensions avec précision, sans devoir retoucher toute la bête en travail. En fait c’est un peu comme OpenSCAD décrit ici!

A partir d’objets créer de manière traditionnelle avec Blender, on peut aussi évidemment utiliser des scripts Python pour y ajouter des détails.
L’article BLENDER JEIA – 03 – Utiliser Python pour créer des objets est ancien (il semble vers 2016), mais il y a de bonnes idées.

La composition et la création d’objets complexes en Python dépasse de très loin une simple introduction. 
Il faudra aussi y ajouter l’exportation automatique en fichier .STL utilisable par les slicers des imprimantes 3D!

Nous allons “essayer” d’expliquer comment utiliser Visual Studio Code pour développer du code Python pour Blender sous Windows et en dehors de l’outil Blender lui-même. Pour faire ce travail, j’ai utilisé la vidéo 5 Steps to setup VSCode for Blender Python (on Windows), merci à Victor Stepanov.

Blender et Python – Installation

On assume que Blender est déjà installé comme décrit dans mon Un Tuto Blender super rapide pour impression 3D.

Après son démarrage, sur la barre supérieure en haut à gauche, on voit la version, par exemple Blender 4.5.2 LTS.
Dans mon Blender et Python: créer des objets, j’avais déjà activé l’outil Scripting (bar de menu de Blender), et on y trouve la version de Python installée par défaut, 3.11.11 chez moi. C’est celle que j’utiliserai pour l’installation de Python sous Windows, nécessaire pour l’application de développement en langage Python, c’est à dire Visual Studio Code.

Donc après un clic sur Scripting dans le menu, nous aurons un console Python comme décrit dans le manuel de Blender Console de Blender. Il y a même une complétion automatique: on essaiera volontiers bpy. suivi de Tab. Dans l’article il y a quelques exemples intéressants.

Installation de Python sous Windows

Sur le site Web officiel de Python, par exemple https://www.python.org/downloads/release/python-3110/, on trouvera facilement un exécutable d’installation 64bits sous Windows comme python-3.11.0-amd64.exe.
A l’exécution de ce dernier, j’ai utilisé Install Now avec l’option Add Python PATH.
J’ai laissé toutes les options et cliqué sur Next et gardant les choix.
Après installation et avec une invite de commande Windows CMD, on entre python dans la console qui nous indique que cela fonctionne avec la version 3.11.0 correcte. quit() est possible pour sortir.

Visual Studio Code  – Installation

Sur le site Web de cet IDE (Integrated Development Environment) nous trouverons Getting started with Visual Studio Code. Il n’est pas seulement dédié à Python mais aussi à d’autres langages. Comme il y a beaucoup de vidéos, c’est préférable de commencer avec la liste présentée à gauche, par exemple GET STARTED et VS Code Tutorial

On commencera donc par se rendre sur le site de Visual Studio Code et cliquerons sur le bouton noir Download for Windows.

Avec le bouton suivant Windows (10-11) nous aurons un téléchargement automatique de VSCodeUserSetup-x64-1.105.1.exe. dans notre répertoire de téléchargement sur Windows,
Nous lancerons donc ce fichier d’installation. Nous laisserons la location de l’installation, son nom et les options d’installation présentées avec en plus les 2 options d’action d’ouverture, donc toute les cases cochées avec la création de l’icône sur le bureau.

Après le lancement de Visual Studio Code nous irons à gauche avec l’icône extension (ou Ctrl-Shift-X) pour installer celle de Python avec le petit bouton bleu Install. On marquera le Open a project Python folder et cliquerons sur son bouton bleu. Un répertoire contenant déjà des exemples de code Python avec l’extension .py sera un plus! J’ai accepté le 
trust the authors of the files in this folder. et le Copilot.

Pour vérifier Visual Studio Code j’ai créé un fichier prime.py de code Python, tiré du site Web Programiz, pour identifier si un nombre est premier (voir le code sur le site: Program to check if a number is prime or not, avec la valeur 29). C’est du code Python, rien à voir avec la modélisation 3D. J’ai sauvé cet exemple dans mon répertoire Python.

Notes:
J’ai aussi installé Thonny sur mon PC Windows, un IDE pour débutant, pour jouer avec Python, mes Raspberry Pi avec mon livre et utilisé pour mes microcontrôleurs ESP avec MicroPython
Je recommande en plus d’utiliser Notepad++ pour l’édition. C’est mon éditeur texte par défaut. Il possède une jolie syntaxe colorée pour ce langage! 

En cliquant sur le fichier prime.py dans l’explorateur de Windows on pourra l’associer à notre Visual Studio Code fraîchement installé. Le code vient alors affiché dans la fenêtre centrale et le triangle de Run dans la barre du haut exécutera le code en nous montrant le résultat en dessous.

Visual Studio Code est un excellent choix pour l’apprentissage du langage Python. Dès que nous avons une erreur de syntaxe, une mauvaise instruction ou construction, voire une fausse fonction, c’est noté dans l’éditeur. On se familiarisera rapidement avec l’éditeur et ensuite avec le débogueur pour ajouter des breakpoints (points d’arrêt dans l’exécution) et avancer pas à pas dans le code en visionnant des valeurs de variables. 

Visual Studio Code  – Python pour Blender

Pour pouvoir créer des objets Blender avec le langage Python depuis  Visual Studio Code, il faudra installer fake-bpy-module avec pip install fake-bpy-module-latest (à exécuter dans la fenêtre TERMINAL en bas au milieu) et aussi l’extension Blender Development de Jacques Lucke (recherche de Blender Development sous Extension (Ctrl-Shift-X) et ensuite Install (bouton bleu et on trust!)).

J’ai aussi ajouté l’extension Extra Mesh Objects dans Blender avec le menu Edit / Preferences / Get Extensions et en cherchant Extra Mesh Objects.

Finalement on va reprendre l’exemple des cubes entassés de Blender et Python: créer des objets dont nous avons sauvegardé son fichier avec le nom blenderPy1.py et:

– Lancer Blender depuis  Visual Studio Code avec le menu View, Commande Palette (ou Ctrl-Shift-P) et Blender: Start;
– Choisir mon dernier blender.exe et continuer (Blender s’ouvre avec notre cube original);
– On retire le cube en Objet Mode avec Select et Delete;
– Avec le menu File et Open File, nous irons récupérer notre fichier 
blenderPy1.py qui viendra présenté à l’écran;
– A
vec le menu ViewCommande Palette (ou Ctrl-Shift-P) et Blender: Run Script.

Il faudra ouvrir l’instance démarrée avec Start et nous verrons la même figure de cubes entassés que nous avions généré à partir de Scripting dans Blender

L’explorateur de Visual Studio Code (Ctrl-Shift-E) permet l’accès à un répertoire de Windows conservant nos scripts Python. On pourra reprendre par exemple notre script prime.py pour continuer notre formation Python hors de l’API de Blender.

J’ai un souci dans l’éditeur avec la touche Backspace de mon clavier et je dois utiliser Shit-Backspace pour effacer un charactère à gauche. 

A suivre … c’est un bon début, mais je devrais pouvoir montrer des exemples simples et évolutifs, à partir de mon Blender et Python: créer des objets et du code ci-dessous.

Le module bpy de Blender

Sur le site Web officiel de Python, par exemple https://www.python.org/downloads/release/python-3110/, on trouvera facilement un exécutable d’installation 64bits sous Windows comme python-3.11.0-amd64.exe.

A l’exécution de ce dernier, j’ai utilisé Install Now avec l’option Add Python PATH.
J’ai laissé toutes les options et cliqué sur Next et gardant les choix.
Après installation et avec une invite de commande Windows CMD, on entre python dans la console qui nous indique que cela fonctionne avec la version 3.11.0 correcte. quit() est possible pour sortir.

Le code présenté ici à plus de 4 ans d’âge, mais reste en fait vraiment simple et une bonne introduction. Il n’y a que 5 objets, dont 2 cylindres pour une opération de différence!

En retravaillant ce code, j’avais noté que les deux cylindres intérieurs, utilisés pour creuser l’espace des vis, restaient présents en répétant l’exécution du scripts. Après l’opération de DIFFERENCE on cache avec hide_set(TRUE) ces deux objets.
Avant répétition, il faut non seulement effacer tous les composants, mais aussi s’assurer qu’aucun cylindre caché reste dans la Collection (en haut à droite dans Scene Collection)!

On peut aussi jouer avec une seule instruction pour comprendre et tester son code, voire adapter une propriété de composant! 
Dans la PYTHON INTERACTIVE CONSOLE, en bas à gauche, on peut par exemple entrer 
bpy.data.objects[‘CylinderAint’].hide_set(False) pour re-remplir un des cylindres où devrait passer la vis.

# attache_vis.py
import bpy

cube = bpy.ops.mesh.primitive_cube_add(size=1, location=(0, 0, 0), scale=(1,1,1))
theCube = bpy.context.object
theCube.name = 'BaseCube'
bpy.ops.transform.resize(value=(20, 36, 1))

bpy.ops.mesh.primitive_cylinder_add(radius=4, depth=10, location=(-10, 10, 3.5), scale=(1,1,1))
bpy.ops.transform.rotate(value=1.57, orient_axis='X')
theCylA = bpy.context.object
theCylA.name = 'CylinderA'

bpy.ops.mesh.primitive_cylinder_add(radius=2.1, depth=10, location=(-10, 10, 3.5), scale=(1,1,1))
bpy.ops.transform.rotate(value=1.57, orient_axis='X')
theCylAint = bpy.context.object
theCylAint.name = 'CylinderAint'

bool_modifier1 = theCylA.modifiers.new(type="BOOLEAN", name="boolc1")
bool_modifier1.object = theCylAint
bool_modifier1.operation = 'DIFFERENCE'
theCylAint.hide_set(False)
bpy.ops.object.modifier_apply()

bpy.ops.mesh.primitive_cylinder_add(radius=4, depth=10, location=(-10, -10, 3.5), scale=(1,1,1))
bpy.ops.transform.rotate(value=1.57, orient_axis='X')
theCylB = bpy.context.object
theCylB.name = 'CylinderB'

bpy.ops.mesh.primitive_cylinder_add(radius=2.1, depth=10, location=(-10, -10, 3.5), scale=(1,1,1))
bpy.ops.transform.rotate(value=1.57, orient_axis='X')
theCylBint = bpy.context.object
theCylBint.name = 'CylinderBint'

bool_modifier2 = theCylB.modifiers.new(type="BOOLEAN", name="boolc2")
bool_modifier2.object = theCylBint
bool_modifier2.operation = 'DIFFERENCE'
theCylBint.hide_set(False)
bpy.ops.object.modifier_apply()

bpy.ops.object.select_all(action='SELECT')
bpy.data.objects['CylinderAint'].hide_set(True)
bpy.data.objects['CylinderBint'].hide_set(True)

Retour au Blender classique

Lorsqu’on crée un cylindre sous Blender, on lance l’application, on efface notre Cube et avec le menu Add, Mesh, Cylinder (voir mon Un Tuto Blender super rapide pour impression 3D), on change le radius à 10 et le depth à 20. convenable pour des objets 3D. Ce sont des mm définis dans les préférences de Blender et qui seront les unités par défaut pour les fonctions du module Python bpy. Nous aurons donc un cylindre de dimension 20,20,20,

Si on regarde sous Scene Collection en haut à droite nous avons le Cylinder, qui est son nom, dans la Collection. En cliquant à gauche sur le cylindre suivi d’un Ctrl-C et Ctrl-V, un second (Cylinder.001) sera créé dans la collection. Il est à la même place!

Exercice1 en Python: renommé deux cylindres existants, agrandir un et déplacer l’autre

Exercice1 en Python:

Renommé deux cylindres existants,
agrandir un et déplacer l’autre

# exercice1_2cylindres.py
import bpy

#Récupérer les cylindres de la collection de la scène
cylindre1 = bpy.data.objects['Cylinder']
cylindre2 = bpy.data.objects['Cylinder.001']

cylindre1.name = "Cylindre1"
cylindre2.name = "Cylindre2"

#Nouvelle dimension pour le premier
obj = bpy.data.objects["Cylindre1"]
obj.dimensions = (10, 20, 30)

#Nouvelle position pour le second
obj = bpy.data.objects["Cylindre2"]
cylindre2.location = (14, 16, 0)