6 points par GN⁺ 2025-12-22 | 2 commentaires | Partager sur WhatsApp
  • 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, numColumns et batteryType, 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() et translate() 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, numColumns et batteryType
    • widthBox, lengthBox et depthBox sont 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 for et translate(), tandis que chaque logement est généré avec cube()
    • L’auteur mentionne avoir trouvé déroutant le fait de devoir définir startColumn et startRow dans la boucle avec let()

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

 
GN⁺ 2025-12-22
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

    • On se demande en quoi cela diffère d’autres outils de modélisation Python comme Build123d ou CadQuery
      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
    • Il y a de l’espoir que cette bibliothèque puisse résoudre le problème des hélices coniques à pas variable
    • PythonSCAD prend aussi en charge les SDF via libfive — voir la page d’exemples et chercher “sdf” vers le milieu de la page
    • La facilité avec laquelle elle permet d’implémenter des fusions de type métaballes (blobby) est particulièrement impressionnante
    • La possibilité d’importer des fichiers STL existants pour y percer des trous ou y fusionner d’autres objets est intéressante
      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

    • OpenSCAD a aussi permis à certains d’atteindre la précision nécessaire pour la conception orientée impression 3D
      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
    • La version git master rend des dizaines de fois plus vite que les anciennes versions
    • Quelqu’un demande le lien vers l’antisèche
    • Il reste toutefois des limites, notamment pour des opérations comme la suppression des arêtes vives
    • BOSL2 est vraiment une bibliothèque puissante et utile
  • L’absence de concept d’objet dans OpenSCAD est regrettée, car on ne peut pas faire quelque chose comme box1.width
    Build123d 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

    • OpenSCAD repose sur des coordonnées absolues, ce qui rend difficile l’expression d’un placement relatif ou des relations entre solides
      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
    • OpenSCAD propose aussi hull et la somme de Minkowski, qui deviennent des outils très puissants une fois maîtrisés
    • Il existe aussi OpenJSCAD, une version JavaScript qui fonctionne dans le navigateur
      Voir le dépôt GitHub
    • Bowler Studio, basé sur Java, est également recommandé, avec prise en charge de Clojure et simulation physique intégrée
    • On peut aussi créer des formes complexes en définissant directement les coordonnées des points, mais l’ordre est si délicat que cela ressemble à un test MENSA
  • 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’autres l’ont beaucoup utilisé autrefois, mais estiment qu’en pratique la CAO traditionnelle est souvent plus intuitive
      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 $fn permet de régler la résolution
    $fn = $preview ? 32 : 64;

    • Attention toutefois : lors d’un export pour analyse FEM, une valeur de $fn trop élevée peut dégrader les performances du maillage
      La 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

    • Certains modifient surtout des pièces uniques ou en créent souvent des variantes, et Python facilite énormément ce type de travail répétitif
    • Décrire un modèle mathématiquement leur paraît plus naturel
      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
 
ahwjdekf 2025-12-22

Je recommande vivement FreeCAD.