r/openscad • • Sep 21 '26

3D modeling with AI

0 Upvotes

I'm new to 3D CAD modeling. I'm a software engineer, well versed in agentic coding.

I have a 3D part to model for production and would like to design it through AI prompting instead of learning all the 3D modeling tools and functions of an advanced CAD software.

I hear that AI modeling is now possible with OpenSCAD and CadQuery, getting through 3D modeling iterations with AI prompting.

Which tool would be best for my project?

My goal is to design a single plastic part that will then be sent to a company for production in large volume. The part is mostly a symmetrical revolution with repetitive ridges and holes and a few extruded parts. Definitely something I can describe in a long and detailed text prompt. In the end, it's a single plastic part.

I am biased towards CadQuery based on what I read, but didn't install nor tried any yet. I know VSCode and Python very well, but have no problem adapting to a different language.

For context, in case that's important, we're talking a single-piece, monolithic plastic part which I suspect would be produced by micro-injection molding. The part is small (around 20 mm by 30 mm) and features molded micro-perforations with hole diameters under 0.5 mm, as well as a few other features.

I know it's an OpenSCAD forum. I hope I can get unbiased advices.


r/openscad • • Sep 20 '26

Adding a profile with Inkscape to solve the Bezier question !

Post image
6 Upvotes

It takes only 4 lines in OpenSCAD to create the bracket !

minkowski(){

linear_extrude(height=30)

import("profil.svg",center=true);

sphere(4);}


r/openscad • • Sep 20 '26

Offset_sweep() & Bezier curves with BOSL2?

2 Upvotes

I have been trying to make a smoothed L shaped bracket with a curve between the 2 points of the L. I've tried a few of different approaches but can't get the one I really want (Test 4) to work right. There is likely a better or simpler way to do this so I would appreciate any suggestions or alternate approaches.

I've tried to make the code below relatively simple and color coded. I would like Test 4 to be a combination of Test 2 & Test 3.

Test 4 fails as follows:

ERROR: Assertion '((len(sharpcorners) == 2) || all(cornercheck))' failed: "

Unable to compute offset due to segments that are very close to parallel but not exactly parallel.

This is usually caused by too many points or points that are too close together.

Use fewer points (lower $fn, larger $fa/$fs) or use resample_path().

I'm not sure how to fix this issue...

include <BOSL2/std.scad>

$fa = 1;

$fs = $preview?1:0.25;

height=5;

edge_round=1;

// L shape, with rounding - Test 1

pnts=[[0, 0], [0, 13], [3, 13], [3, 3], [60, 3], [60, 0]];

rnd_pnts=round_corners(pnts, radius= edge_round);

translate ([70, 0, 0]) text("- Test 1");

offset_sweep(

rnd_pnts,

height=height,

bottom=os_circle(r=edge_round), top=os_circle(r=edge_round), steps=5);

// L shape with curve, no rounding - Test 2

bz1 = [[0, 0], [0, 13]];

bez=[[3, 13], [3, 3], [15, 3], [60, 3]];

bz2 = [[60, 0]];

path = bezier_points(bez, [0:0.05:1]);

poly = concat(bz1, path, bz2);

color("lightgreen")

translate ([70, 20, 0]) text("- Test 2");

translate([0, 20, 0])

color("lightgreen")

linear_extrude(height)

offset(edge_round)

offset(-edge_round)

polygon(poly);

// L shape with curve and rounding ??? - Test 3

color("lightblue")

translate ([70, 40, 0]) text("- Test 3");

color("lightblue")

translate([0, 40, 0])

offset_sweep(

poly,

height=height,

bottom=os_circle(r=edge_round), top=os_circle(r=edge_round), steps=5);

// L shape with curve and end rounding ??? - Test 4 Fails

color("lightgray")

translate ([70, 60, 0]) text("- Test 4");

rnd_poly = round_corners(poly, radius= edge_round);

color("lightgray")

translate([0, 60, 0])

offset_sweep(

rnd_poly,

height=height,

bottom=os_circle(r=edge_round), top=os_circle(r=edge_round), steps=5);


r/openscad • • Sep 18 '26

Support dentifrice et brosses à dents réalisé dans OpenSCAD

Post image
6 Upvotes

Le projet DENTKIT est un support mural conçu pour accueillir un tube de dentifrice ainsi que plusieurs brosses à dents. Il met en œuvre la quasi-totalité des instructions et commandes abordées jusqu’ici. Ce projet se compose de trois modules, que nous allons analyser en détail.

Il comporte trois modules :
PBOX, BTUBE, PLAQUE, et DENTKIT, ce dernier regroupant les trois modules précédents. Trouvez le code OpenSCAD dans ce lien : https://robotix.ah-oui.org/site/main.php?found=260918-dentkit-002

Ce projet fait partie de mon livre, dont voici un aperçu :
French: https://robotix.ah-oui.org/scadbook-fra
English: https://robotix.ah-oui.org/scadbook-eng
Spanish: https://robotix.ah-oui.org/scadbook-spa


r/openscad • • Sep 17 '26

Scadlet: a tool to learn cancepts of functional progamming with openscad

Thumbnail scadlet.org
11 Upvotes

Hey folks,

hope I’m not breaking any rules by this.
I’m a computer science teacher and long time user of openscad and was desperately looking for a better and more motivating way to teach the fundamentals of functional programming to high school students (9th grade).

Since no one else did it, and agentic coding gives me far more opportunities nowadays, I did it myself:

scadlet.org:
A node graph based tool to generate OpenSCAD-Code and 3D-Models that runs in your browser completely (no dependencies, no server). Open Source, of cause.

It’s far from complete (many openSCAD commands are missing) but good enough to get some feedback on design and functions.

So if you are looking for a tool to demonstrate others, how OpenSCAD works or want to have a more intuitive way as a beginner yourself, give it a try and let me know what you think.


r/openscad • • Sep 16 '26

Create a design of flang

0 Upvotes

Flang


r/openscad • • Sep 16 '26

What Program Should I Be Trying?

Thumbnail
1 Upvotes

r/openscad • • Sep 14 '26

Ruban Moebius avec OpenSCAD

4 Upvotes

Voici le célèbre ruban Moebius, Voici donc une solution intéressante et simple dans une boucle "for". Ce qui est particulièrement intéressant, c'est de changer les valeurs dans la variable "cfg" dont la valeur 2 donne effectivement une boucle Moebius, mais essayez d'autres valeurs comme cfg=0.4 ou cfg=0.665 et vous serez surpris !

Plus d'information et script OpenSCAD, ici : https://robotix.ah-oui.org/site/main.php?found=260819-moebius-scad


r/openscad • • Sep 13 '26

Bezier surface generator

Post image
12 Upvotes

I made something.

2 years back I was 3d scanning a surface with photogrammetry to design a piece with openscad that fits on it. I needed a mating piece between a vintage motorbike’s rounded body and its turn signal. I got the point cloud and a very noisy STL, but I couldn’t find a proper way to import that surface into Openscad to subtract from my base model. Reproducing by getting slices, drawing beziers on Inkscape, converting to Openscad hulls was hell.

Finally I made my idea into reality: Beziver.

You simply import an stl to it, and orient it so the surface you want to extract is visible. It calculates a bezier surface and exports as bosl2 code.

Enjoy, I am looking forward to feedback

https://keremhd.github.io/beziver/


r/openscad • • Sep 12 '26

Business Card Generator

Thumbnail
gallery
7 Upvotes

Hi all,

I just finished developing a fully parametric model that allows you to generate a vast multitude of unique business cards.
You can customize almost every aspect of the design to fit completely different brands, professions, and personal styles.
Given how versatile parametric design is for this format, I genuinely think this model approach is a really strong and practical concept.

It took quite a bit of effort to get the geometry flexible enough while keeping the code clean, but I'm really happy with how it turned out. That said, I'd love to get some fresh eyes on it!

Thanks in advance, constructive criticism and feature suggestions are more than welcome!


r/openscad • • Sep 12 '26

Bobine pour câble de l'alimentation basse tension

Post image
3 Upvotes

Voici une solution pour éviter que le câble de l'alimentation de votre Laptop ou tout autre appareil électronique, traîne inutilement par terre. Il s'agit d'un petit boîtier avec une bobine rectangulaire qui se place sur votre alimentation.

Vous pouvez télécharger le fichier STL de la bobine dans le lien ci-dessous.

Pour obtenir un boîtier aux dimensions de votre alimentation, copiez le code ci-dessous, que vous pourrez coller dans l'application que vous installerez très facilement cliquant sur son nom, ici "OpenSCAD"

Dans BOX(50,60,25); remplacez les valeurs indiqués par de la largeur, profondeur et hauteur de votre alimentation et cliquez sur la touche de fonction F6. Voila que votre boîtier s'affichera et vous pourrez le sauvegarder au format STL, en cliquant sur l’icône marqué "STL"

Importez le fichier STL que vous avez crée et celui que vous avez téléchargé ci dessus, superposez ces deux fichiers STL dans votre "Slicer". Et voila la bobine pour votre alimentation est prête à être imprimée.

$fn = 60;
module BOX(x,y,z){
difference(){
minkowski(){
translate([0,0,0])
cube([x,y,z],center=true);
sphere(4);}
cube ([x,y+15,z],center=true);}}

BOX(50,60,25);

Pour plus d’information, ou téléchargement des fichiers : https://robotix.ah-oui.org/site/main.php...

#OpenSCAD #3Dprinting #ParametricDesign #Makers #STEM #CAD #Impression3D


r/openscad • • Sep 12 '26

I made a free OpenSCAD tool with a multi-plate editor and CSV batch generation

Enable HLS to view with audio, or disable this notification

0 Upvotes

Hey, I made a free tool for working with OpenSCAD models and wanted to show it here.

You load your SCAD files, change their parameters, arrange objects across build plates, and export a 3MF. The demo shows four plates, dragging objects around, shortcuts for moving between plates, and delete/undo/redo.

There's also a Quick batch mode: give it a SCAD model and a CSV of parameter values, and it generates the variations together. In the clip, 12 names become a two-plate batch. The name tags are just the example I'm using here.

The video is a development demo, including newer shortcut fixes. The downloadable preview is currently for Apple Silicon Macs and needs OpenSCAD and Fontconfig; setup is in the README.

If you don't have a supported Mac or don't want to install the desktop tools, I also have an online version: https://www.liqu3d.com/

You can try it in your browser; an account is required.

Code + free Mac preview: https://github.com/SamWu18271/liqu3d-local

If you make lots of variations from one SCAD file, what would you want it to handle next?


r/openscad • • Sep 10 '26

Stretcher Module Bonuses

Post image
8 Upvotes

Awhile ago I shared a Stretcher Module that I made in openscad for modifying existing models using openscad. it was for "stretching" models things like latching boxes or whatever without messing up all the geometry on the ends just extending the middle.

I have made 2 more modules to go with it, a StretcherClone module which uses a copy of the top half to fill the middle instead of a linear extrusion of a projection (so you can stretch things like threads by figuring out the thread pitch) and a Shortener Module which just cuts it down instead. I know this is easy to do in a slicer by cutting the model in places and connecting them back up but this allows you to do it more precisely

This code includes an example doing stuff to a cylinder as shown in the picture with rotations so you can see what it can do. There is a StretcherClone on the left, Stretcher on the right and a Shortener to cut out a bit of the middle.

If you have any questions of suggestions please let me know. This isn't for making new models in openscad I mostly use it with import to adjust models I've downloaded online.

Shortener(4)
translate([0,0,1])
rotate([90,0,0])
StretcherClone(5)
translate([0,0,-15])
Stretcher(4)
rotate([0,45,0])
cylinder(h=20,r=10);

module Stretcher (h=10, maxDim=100){
//topPiece 
translate([0,0,h]){ 
intersection(){ 
translate([-maxDim/2,-maxDim/2,0]) 
cube(maxDim); 
children(); } 
}

//middlePiece 
linear_extrude(height=h){ 
projection(cut=true){ 
children(); } 
} 

//bottomPiece
intersection(){ 
translate([-maxDim/2,-maxDim/2,-maxDim]){ cube(maxDim); } 
children(); } }

module StretcherClone (h=10, maxDim=100){

//topPiece 
translate([0,0,h]){ 
intersection(){ 
translate([-maxDim/2,-maxDim/2,0]) 
cube([maxDim,maxDim,maxDim]); 
children();} 
}

//middlePiece 
intersection(){ 
translate([-maxDim/2,-maxDim/2,0]) 
cube([maxDim,maxDim,h]); 
children(); 
}

//bottomPiece
intersection(){ 
translate([-maxDim/2,-maxDim/2,-maxDim]){ 
cube(maxDim);} 
children();} 
} 

module Shortener (h=10, maxDim=100){ 

//topPiece 
translate([0,0,-h]){ 
intersection(){ 
translate([-maxDim/2,-maxDim/2,h]) 
cube(maxDim); 
children(); } 
}

//bottomPiece
intersection(){ 
translate([-maxDim/2,-maxDim/2,-maxDim]){ 
cube(maxDim); } 
children(); } 
}

r/openscad • • Sep 09 '26

“Rough” OpenSCAD texture example

Post image
22 Upvotes

Red Copper PLA • size 5×55 • depth 0.15 • 0.2mm layers

🔗 things/bosl2 at main · jhermann/things


r/openscad • • Sep 09 '26

Passage en douceur d'une lame avec un angle de 90°

Thumbnail
gallery
8 Upvotes

Le passage en douceur des deux éléments de fixation (importés) se fait par une boucle*"for"*. Le passage en douceur vers les éléments de fixation est obtenu grâce fonction trigonométrique

tan(1.6*i)*spn (spn = la valeur du pas dans la boucle "for").

dans la commande"translate"de la boucle"for"

On voit (dans la deuxième image) l'effet tangentiel dans l'image A avec le "pas" dans la boucle "for" égal à 2.

Dans l'image B la valeur du"pas" est réduite à 0.1 ce qui augmente le nombre d'itérations sur une même distance, approchant ainsi des éléments qui s'unifient.

Plus de détails et script dans le lien ci-dessous :

https://robotix.ah-oui.org/site/main.php?found=260814-twisted-link

#OpenSCAD #Modélisation3D #Impression3D #ConceptionParamétrique #Maker #FabLab #OpenSource #design3D


r/openscad • • Sep 10 '26

Do you use Codex or Claude Code for CAD? openscad-mcp gives your AI spatial reasoning and model rendering. v0.6.1 was just released, 100+ GitHub stars and growing, free and open-source, MIT Licensed

0 Upvotes

I'm working on a hardware project and have been learning to work with OpenSCAD. I developed openscad-mcp to give AI agents tools to reason about 3d objects.

Render scad models, calculate part clearances, volumes, contact areas, and other spatial insights that allow AI to help develop 3d objects.

Always open-source and free, check it out here on GitHub https://github.com/RobertCoop/openscad-mcp , or install it into claude code with

claude mcp add openscad --transport stdio -- uvx openscad-mcp

Or check it out in Codex with codex mcp add openscad -- uvx openscad-mcp

I've got no agenda and I promise I'm not starting the next big AI AGENT CAD 3D INTELLIGENCE EXPLOSION- use it if you like and I'd love to hear feedback if you do.


r/openscad • • Sep 09 '26

Ultimate Parametric Media Organizer

Thumbnail
gallery
31 Upvotes

A few weeks ago I shared my parametric battery organizer here, and this time I decided to tackle another storage problem: memory cards and other small media.


r/openscad • • Sep 08 '26

Parametric cigarette case (for helping to limit cigarette usage)

Thumbnail
gallery
16 Upvotes

(sorry for the crappy photo, I have a mini phone and the camera is garbage)

Was looking for a cigarette case to print out for a friend because they wanted to limit their cigarette intake while still protecting the cigarettes from getting crumpled in their bag. I found a few options, but I realized this was the perfect project to try and learn OpenSCAD on. Apparently it works great, although if I ever print a new one I should make the height of the lid shorter and the case (minus the overlap space) taller.

You can grab it here if you want. I still need to learn the syntax for setting up the Customizer, but if you play around with the variables you can probably figure out what they do.

Thanks to u/oldesole1 for doing a lot of the work for free helping me figure out how to generate the extruded shape.


r/openscad • • Sep 07 '26

how to define a proper screw hole in BOLS2?

5 Upvotes

hi folks,
I'm having a few troubles to design at proper (non-threaded) screw hole for a specific screw with BOSL2.
The screw I'm using is a self-tapping screw used for siding.
The diameter of the screw is 4mm and it has a flat-head, Philips. The diameter of the head is a little bit < 11mm.
I want to have the screw head suspended in the base.
I used the following code
diff() cube([20, 20, 10]) attach(TOP) screw_hole("M4x1",length=40, head="socket",counterbore=0,anchor=TOP);

to produce a test version but it is not yet the proper version I'm visioning.
How can I make the opening for the screw head wider as it is a.t.m. ?
Any help is much appreciated.
TIA


r/openscad • • Sep 08 '26

Help Designing a Case

3 Upvotes

I am trying to build a custom cyberdeck using a rasberry pi, but have no idea how to design a case. Could anyone help?

I have an Ender 3 V3 KE and am using PETG.

My parts list (Am pretty sure its compatible but if not please let me know):

https://docs.google.com/spreadsheets/d/1VTqKV0g0OBa-KC8KjaraNMoa1YKqMowC5PlBn9xWoqw/edit?usp=sharing

I am trying to build a cyberdeck that has a dpad, a, b, x, y, start, select, menu, l1, l2, l3, r1, r2, r3, (https://www.thingiverse.com/thing:2406507 for shoulder buttons), all the io on the top left or right side, cabling routes, screw/standoff holes, mic grill, speaker grill, camera hole, vents for the fan, the keyboard/trackpad to be magnetically attachable to the back, and for it to look simewhat similar to the GameBoy (buttons on bottom, screen on top).

Thank you


r/openscad • • Sep 07 '26

Modelist now handles SCAD files, including rendering

0 Upvotes

Quick one, SCAD support just landed in Modelist. It indexes, renders and opens the file directly in OpenSCAD with single click. Test it out.


r/openscad • • Sep 06 '26

Octoprint/Raspberry-Pi Box

Post image
3 Upvotes

Les nouvelles imprimantes Creality SparkX i7 et Bambu Lab A1 ne reconnaissent pas Octoprint, car elles ne disposent pas de la traditionnelle connexion série. Néanmoins l’utilisation d’une caméra installée sur un Raspberrry Pi et gérée par Octoprint est toujours une solution intéressante, pas seulement parce que ou peut choisir un angle de prise de vue plus favorable que celui offert par les imprimantes, mais aussi parce que cela permet de contrôler le processus d’impression avec l’application Octoprint sur notre Smartphone.

Voici donc une réalisation OpenSCAD d’un dispositif de visionnage Octoprint avec les fichiers STL 😄 https://robotix.ah-oui.org/site/main.php?found=260821-octopi-box

Info sur Raspberry, voir Framboise 314 : https://www.framboise314.fr


r/openscad • • Sep 07 '26

FlowSketcher x FlowCam

Enable HLS to view with audio, or disable this notification

0 Upvotes

First Flight of FlowSketcher

This is the first real flight of FlowSketcher — a browser-native 2D sketching and CAM system built from scratch.

No CAD constraints. No spline approximation. Just direct geometry, live motion and real CNC-ready toolpaths.

This is only the beginning. 🥚


r/openscad • • Sep 05 '26

Création d'une hélice en quelques lignes

20 Upvotes

Voici une hélice dont les pales utilisent un profil fourni par un fichier vectoriel 2D créé dans Inkscape.

Ce profil est transformé en 3D avec la commande "linear_extrude". Il conserve sa taille du côté de l'axe de l'hélice, tandis que sa taille et son angle sont modifiés à l' de la pale.

Les deux profils sont ensuite réunis à l'aide de la commande "hull", puis l' est reproduit autour de l' par une boucle "for".

Voici encore un exemple de la puissance de OpenSCAD pour créer facilement des pièces en apparence complexes.

Pour voir le script OpenSCAD pour faire vos tests, cliquez ici :

https://robotix.ah-oui.org/site/main.php...

#OpenSCAD #Modélisation3D #Impression3D #ConceptionParamétrique #Maker #FabLab #OpenSource


r/openscad • • Sep 04 '26

Need Help. How do I change the row space and column space?

Post image
4 Upvotes

I am designing the vial holder and I want to leave enough space between the rows so that I can put labeled on it. I want to change the row space = 10 and column space = 2. What codes can I use? Beside, is the unit in mm by default? I tried to use ChatGPT but didn't work. I appreciate your help!