OpenSCAD est plutôt sympa
(nuxx.net)- Conception d’un simple support de batteries avec OpenSCAD pour explorer les bases de la CAO orientée code
- L’auteur avait auparavant créé une boîte paramétrique pour piles AA et AAA avec Autodesk Fusion, puis l’a réimplémentée dans OpenSCAD dans le cadre de son apprentissage
- En modifiant simplement dans le code des variables comme
numRows,numColumnsetbatteryType, il est possible de générer un support sur mesure, avec le même résultat sans logiciel de CAO coûteux - La structure repose sur
difference()ettranslate()pour créer puis retirer de façon répétée la boîte et les logements, une méthode simple mais efficace - Même s’il a des limites pour les modèles complexes, l’outil est jugé utile pour fabriquer des structures géométriques simples comme des entretoises ou des chasse-roulements
Concevoir un support de batteries avec OpenSCAD
- Après avoir conçu dans Autodesk Fusion un organiseur de base en forme de boîte pour batteries AA et AAA, l’auteur l’a recréé dans OpenSCAD
- Le modèle Fusion d’origine utilisait une structure paramétrique permettant de modifier la taille des batteries ainsi que le nombre de lignes et de colonnes via des variables
- Le modèle final a été mis en ligne sur Printables
- OpenSCAD est un outil de CAO qui génère des objets 3D à partir de code, bien adapté à l’apprentissage sur des modèles de structure simple
- L’auteur a suivi une partie d’un tutoriel OpenSCAD et a expérimenté pendant environ une heure
- Le résultat est publié sous forme de fichier
battery_holder_generator.scad
Structure du code et fonctionnement
- Les principales variables définies sont
AA,AAA,heightCompartment,thicknessWall,numRows,numColumnsetbatteryTypewidthBox,lengthBoxetdepthBoxsont calculés à partir de la combinaison de ces variables
- La fonction
difference()crée d’abord la boîte de base (cube), puis retire de manière répétée les logements des batteries à l’intérieur- Les positions des logements sont calculées avec une boucle
forettranslate(), tandis que chaque logement est généré aveccube() - L’auteur mentionne avoir trouvé déroutant le fait de devoir définir
startColumnetstartRowdans la boucle aveclet()
- Les positions des logements sont calculées avec une boucle
Comparaison entre OpenSCAD et Fusion
- Le même modèle a été généré séparément dans Fusion et OpenSCAD, puis comparé dans le slicer
- Au final, les pièces obtenues sont pratiquement identiques, et OpenSCAD permet des modifications rapides grâce à son approche légère orientée code
- Il est possible d’obtenir un résultat du même niveau sans logiciel de CAO onéreux
Possibilités d’usage et limites
- Même s’il n’est pas adapté aux conceptions complexes, il est très utile pour fabriquer des structures géométriques simples comme des entretoises ou des chasse-roulements
- Il est particulièrement efficace pour automatiser la fabrication de pièces simples souvent nécessaires au quotidien
- L’approche de conception centrée sur le code d’OpenSCAD est efficace pour générer des structures répétitives et régulières
Conclusion
- OpenSCAD est présenté comme un outil de CAO orienté code permettant de créer rapidement des modèles 3D simples
- L’auteur le résume ainsi : « ce n’est au fond que dessiner une boîte et y percer des trous, mais c’est plutôt sympa »
- Pour de futurs travaux de conception simples, OpenSCAD pourrait être plus pratique que Fusion
2 commentaires
Avis Hacker News
OpenSCAD est un outil de CAO parfaitement adapté à une mentalité de programmeur
Tout peut y être paramétré, ce qui permet de générer différentes versions d’un boîtier de projet déjà créé en ne modifiant que quelques variables
Dans les builds nightly récentes, activer le backend Manifold fait passer le temps de rendu de plusieurs minutes à quelques secondes
La release officielle de 2021 est trop ancienne et difficile à utiliser
La bibliothèque BOSL2 ajoute des fonctions comme les congés, les arrondis et les attaches, ce qui fait passer OpenSCAD du niveau gadget à celui d’un véritable outil de conception pratique
C’est aussi très compatible avec Git, car il est bien plus facile de comparer les changements dans des fichiers .scad que dans les fichiers binaires de Fusion 360
Trouvant les limites d’OpenSCAD trop contraignantes, quelqu’un a créé lui-même en Python sdf, une bibliothèque de génération de maillages 3D basée sur les SDF (fonctions de distance signée)
Elle permet de construire des modèles avec la souplesse logique de Python, et d’importer des maillages 3D existants pour effectuer des opérations comme érosion, dilatation, découpe et évidement
Il reste encore beaucoup à faire sur ce projet, mais le domaine semble passionnant
Le STL stocke des coordonnées de triangles comme un bitmap, tandis que le STEP stocke des commandes de création de modèle comme du graphisme vectoriel
La plupart des logiciels de CAO avec interface graphique sont basés sur STEP, ce qui favorise la compatibilité
Si les SDF ne génèrent que du STL, il pourrait être plus pertinent d’apprendre Build123d ou CadQuery pour mieux interagir avec les logiciels de CAO graphiques
Build123d fonctionne avec une logique de croquis 2D puis conversion en 3D, comme Fusion360 ou FreeCAD, ce qui facilite les allers-retours entre CAO graphique et CAO pilotée par code
Des outils comme Meshlab ont échoué avec des messages d’erreur obscurs, alors que cette approche semble bien plus intuitive
Certains ont commencé à utiliser OpenSCAD récemment, et notent que là où la plupart des logiciels de CAO demandent d’apprendre une multitude de fonctions, OpenSCAD peut s’expliquer avec une antisèche d’une page A4
En utilisant la version git master plutôt que la release 2021, on obtient des performances bien meilleures et des fonctionnalités plus récentes
Avec la bibliothèque BOSL2, il n’est pas nécessaire de réimplémenter soi-même les fonctions complexes de la CAO traditionnelle, et il est intéressant de pouvoir consulter leur implémentation interne
Dans une CAO graphique, une modification de 0,25 mm peut obliger à réajuster tous les trous et découpes, alors qu’une approche basée sur le code évite ce problème
La valeur par défaut center origin de BOSL2 simplifie énormément les transformations
L’absence de concept d’objet dans OpenSCAD est regrettée, car on ne peut pas faire quelque chose comme
box1.widthBuild123d a été essayé, mais il semble encore trop bogué et insuffisamment documenté. On espère que cela s’améliorera un jour
L’un des atouts d’OpenSCAD est la facilité avec laquelle on peut modéliser en combinant mathématiquement des sphères, cylindres et cubes
Son inconvénient est que ses limites de modélisation découlent aussi directement de cette capacité de composition mathématique
Le fork PythonSCAD, qui ajoute la prise en charge de Python, devrait bientôt être intégré à la release principale
Pour créer un modèle comme un boulon, il faut fabriquer séparément chaque partie puis les faire se chevaucher
L’alignement avec des pièces réelles demande beaucoup de calculs manuels, et des dimensions codées en dur sont difficiles à modifier
Le moteur de rendu des versions bêta récentes est bien plus rapide et vaut vraiment le détour
Voir le dépôt GitHub
Certains apprécient la simplicité d’OpenSCAD comme modélisateur 3D léger
Plutôt qu’un énorme logiciel de CAO graphique, il permet de créer des modèles à partir de formes de base et de transformations, comme en programmation graphique
Même en rouvrant le code longtemps après, quelques lignes suffisent pour tout comprendre
Dès qu’il faut des contraintes impliquant des calculs, les fonctions d’esquisse des logiciels de CAO graphiques sont bien plus simples
La CAO permet aussi de revenir étape par étape dans la structure sans avoir à interpréter un script
OpenSCAD permet d’utiliser un éditeur externe au lieu de son éditeur intégré
Lorsqu’on enregistre dans l’éditeur externe, l’aperçu se met automatiquement à jour
Guide de configuration d’un éditeur externe
Quelqu’un a autrefois écrit un tutoriel d’introduction à OpenSCAD intitulé « 10 concepts essentiels »
Lien vers le tutoriel
Astuce : la variable
$fnpermet de régler la résolution$fn = $preview ? 32 : 64;$fntrop élevée peut dégrader les performances du maillageLa précision de l’analyse compte plus que la douceur visuelle, donc une valeur entre 32 et 64 est généralement appropriée
Créer des modèles réellement utiles demande en pratique pas mal d’efforts, mais l’idée de pouvoir représenter un modèle paramétrique complet dans un fichier texte de 2 Ko reste extrêmement séduisante
Les diff Git ont du sens, et le panneau de personnalisation permet d’ajuster le modèle comme une application
C’est bien plus efficace que les énormes fichiers XML de FreeCAD
En revanche, l’absence native de fonctions comme les chanfreins ou les arrondis est gênante, car il faut les recréer avec des opérations de Minkowski utilisant un cône ou une sphère
Je recommande vivement FreeCAD.