r/openscad 8h ago

New versions of my OpenSCAD IntelliJ Plugin (1.3.0 and 1.4.0)

6 Upvotes

I released two versions of my plugin on subsequent nights, 1.4.0 is current version, also showing 1.3.0 changes since it was superseded so fast.

1.3.0

  • Renaming a file updates use/include paths in other files (I have always wanted an OpenSCAD plugin in any editor to do this, so I am excited about this myself)
  • Renaming a .scad file from the Project view no longer produces a NPE
  • for/let loop variables resolve properly now (previously shown as errors where they were used)
  • Liberation fonts are now bundled so that models that use text() or textmetrics() work in preview
  • For additional fonts, settings lets you point at folders of your own .ttf / .otf / .ttc fonts (64 MB cap) so they show up in the WASM preview
  • Completing a module that ends a statement (cube, sphere, your own modules, etc.) now adds the trailing semi-colon

1.4.0

  • Corner axis widget (labeled X/Y/Z) that follows the camera, like OpenSCAD
  • View cube in the preview, click a face for Front, Back, Left, Right, Top, or Bottom
  • Grid now uses real model units and is always big enough to hold the model
  • Corner legend shows the current grid cell size
  • Coordinate labels on the outer grid edges
  • Toolbar button to toggle those labels (greyed out when the grid is off)
  • All the background colors available in native OpenSCAD are now available in a dropdown in the preview area

1.4.0 is available to install from within IntelliJ, it of course contains all the 1.3.0 changes as well.

The README is up-to-date: https://github.com/mjparme/idea-openscad/blob/master/README.md


r/openscad 20h ago

Pyramid-cone, sanity check

4 Upvotes

Newbie with 3D design... I'm at my non-CAD day job and was trying to think of a way to make a pyramid that smooths out to a cone shape at the tip, maybe with a rounded point to be pretty. I thought about just building a pyramid and a cone in the same location, but I don't want a sudden stopping point of the edges, rather a smooth flattening.

Would it work to hull a square base (or cube with like 0.1 height) and a small sphere or circle as the point? Is there a cleaner or computationally cheaper way?

I'm at least 6 hours away from being able to put this into OpenSCAD, so I would appreciate some tips that might save me trouble when I try it.


r/openscad 1d ago

Open Source BESS Site 3d Modelling

Thumbnail
0 Upvotes

r/openscad 3d ago

Fillet the concave corners of overlapping circles?

2 Upvotes

EDIT: Of course right after posting I find the solution online. It's a little hacky but it works!
https://www.scorchworks.com/Blog/openscad-modules-for-automatic-fillets-and-radii/

My code:

$fn=128;  //make it pretty

cylnumber = 4; //how many cylinders
cyloffset = 10; //distance between cylinder centers
fildiam = 1; //diameter of fillet circles

difference(){
     square(80, true);

    minkowski(){
        difference(){
            square(100, true);
            minkowski() {
                for(i = [0:1:cylnumber-1]){
                    translate([cyloffset*i,0,0])
                    circle(d=11);
                }

                circle(fildiam);
            }
         }
         circle(fildiam);
    }
}

The result:

I altered fildiam to taste but it's basically exactly what I want.

--------------------------

I'm trying to recreate this shape I made in Tinkercad:

Here's the subtractions (the translucent shapes) I made to create it:

However if I render it to an SVG via this tool, you can see there's this little corner thing left because I positioned the subtraction circles with my Mark I Eyeball. Tinkercad isn't really good for precision like this.

I would like to recreate that shape without generating artifacts like this. Here is my current code and a screenshot of the result:

$fn=128; //make it pretty

cylnumber = 4; //how many cylinders
cyloffset = 10; //distance between cylinder centers
fildiam = 5; //diameter of fillet circles
fildist = 7; //???????

for(i = [0:1:cylnumber-1]){
translate([cyloffset*i,0,0])
circle(d=11);
}

for(i = [0,1,cylnumber-2]){
translate([cyloffset*i+cyloffset/2,fildist,0])
circle(d=fildiam);
}

for(i = [0,1,cylnumber-2]){
translate([cyloffset*i+cyloffset/2,-fildist,0])
circle(d=fildiam);
}

I'd like to have the small circles right up against the corners between the big ones (solve for fildist), and the space between them filled. I've googled and googled and checked the documentation and tutorials and everything I can think of, with no result that fits. I'm new to this however, and I probably just don't know the terminology to search for. Is there a way to do this?


r/openscad 3d ago

Help with Reading the Error Text

5 Upvotes

Hi all, noob hacking away at learning by trying to make something I want to use. My Googlefu has failed. I have a single error, but can't read all the error text. Is there a way to enlarge the error field or copy out the text?

TIA

Ron


r/openscad 4d ago

Cadly, a fast and minimalist CAD model viewer.

Thumbnail
1 Upvotes

r/openscad 4d ago

Appreciate some suggestions

6 Upvotes

Hi folks,

I'm working on a frame for a tablet that will in later stage hold a knob on the backside to hold the tablet (Fire 10) while reading.

So far I create the base frame build from cube(s) with the difference function.

I wonder, is there perhaps a more elegant or more efficient way to create this object?

/* a frame for the Fire 10 table that will hold a knob on the backside for easier reading

*/

width=168;      // inside width for the tablet
thickness=9.5;    // thickness of tablet
height=120;     // enough to hold the tablet
wall= 2.4;      // 

edge=8;         // this cover the table as frame
tolerance=0.5;

/ *************************************
module bottom() {
    // making the bottom frame
    // length (inside) should be 168mm
    // + 2* wall
    l=width;
    w=thickness;

 color("red")   
    rotate([0, 0, 90])
    translate([wall, 0-(w+2*wall), 0])
    difference() {

        cube([l+2*wall, thickness+2*wall, edge+wall]);

        translate([0-tolerance, wall, wall])
        color("Blue")
        cube([l+3*wall, thickness, edge+tolerance]);

        echo("1: ", l+2*wall+2*tolerance);
        //echo("2: ", wall);
        //echo("3: ", h);
        //echo(l, w+2*wall, h);
    }


};

// *************************************
module left() {
    // making the left side of the frame
    l=height;
    w=thickness;

    color("purple")
    rotate([0, -90, -90])
    difference() {
        cube([l+2*wall, thickness+2*wall, edge+wall]);
        translate([0-tolerance, wall, wall])
        color("Blue")
        cube([l+3*wall, thickness, edge+tolerance]);

    }

}

// ************************************
module right() {
    // making the right side of theframe.
    // which mirrored from the left side one
    l=height;
    w=thickness;

    color("#00e6e6")
    translate([thickness+2*wall, width+edge, 0])
    rotate([-180, -90, -90])
    difference() {
        cube([l+2*wall, thickness+2*wall, edge+wall]);
        translate([0-tolerance, wall, wall])
        color("Blue")
        cube([l+3*wall, thickness, edge+tolerance]);

    }
}

bottom();
left();
right();

This is my code so far.
Any ideas??

TIA


r/openscad 4d ago

Vertical Sturdy Plug to Join Parts

Thumbnail
gallery
19 Upvotes

The 'sturdy' in the plug comes from several micro-features:

  • the plug is rooted in the main object's infill,
  • it has practically no infill itself, just many walls, caused by the ribbing and the cross-shaped cutout,
  • and the bottom chamfer adds more strength at the biggest stress point.

The chamfers at the tip and the hole's rim make insertion easy, and the outer hull of the plug is slightly slanted to increase friction the deeper the plug goes in, ultimately leading to a comfortable insertion but with a snug fit.

Recommended print settings: Arachne walls, and Gyroid infill.

The design principles were mostly lifted from this YouTube video.

See https://github.com/jhermann/things/tree/main/parts/joining#vertical-sturdy-plug for a STL and the SCAD file.


r/openscad 5d ago

Ultimate Parametric Junction Box Cover

Thumbnail
gallery
21 Upvotes

r/openscad 5d ago

BOSL2 - trying to combine path_sweep and skin

1 Upvotes

I have two 2D paths. I can use one of them with path_sweep along an arc. I can use both of them with skin. I want to essentially combine the two: I want to have a skin-like effect between the two of them, but connect them along an arc. Is there a way to accomplish this?


r/openscad 6d ago

Passage en souplesse à 90° de deux éléments linéaires.

Thumbnail
gallery
9 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 ci-dessous 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 augment le nombre d'itérations sur une même distance, rapprochant ainsi des éléments qui s'unifient.

Voir le code OpenSCAD et description ici :
https://robotix.ah-oui.org/site/main.php?found=260814-twisted-link


r/openscad 7d ago

Moebius avec OpenSCAD

77 Upvotes

Hello les amis !

Je suis restée un peu en rade voulant faire un ruban Moebius avec OpenSCAD, alors je me suis fait aider par l' IA de ChatGTP. Voici donc une solution intéressante m'a été proposée. Ce qui m'a particulièrement plu es l'utilisation d'un "hull()" dans la boucle "for()". cela permet de grouper des petits blocs les uns après les autres grâce à l'itération.

Voici le script proposé :

dia=40;
wdt=60;
thk=3;
seg=200;

module BAR(ang){
rotate([0,0,ang])
translate([dia,0,0])
rotate([0,ang/2,0])
cube([wdt,1,thk],center=true);}

module MOEBIUS(){
for(i = [0:seg-1]){
a1 = 360*i/seg;
a2 = 360*(i-1)/seg;
hull(){BAR(a1);
BAR(a2);}}}

MOEBIUS();

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


r/openscad 7d ago

My OpenSCAD guide is now available in three languages

Post image
25 Upvotes

Hello everyone,

I’m pleased to present my three OpenSCAD books:

  • Ça, c’est OpenSCAD — French edition
  • Esto es OpenSCAD — Spanish edition
  • This is OpenSCAD — English edition

These full-colour practical guides introduce OpenSCAD step by step, with illustrated examples, reusable scripts and projects designed for 3D printing.

They are intended for beginners, makers, students, teachers—and anyone interested in discovering parametric 3D modelling.

The three editions are also listed on the official OpenSCAD Books page.

French edition:
https://www.amazon.fr/dp/B0FNLPF5HP

Spanish edition:
https://www.amazon.com/dp/B0GKLVWF4N

English edition:
https://www.amazon.com/dp/B0H6QSLHT3

I would be very happy to hear your comments or answer any questions.


r/openscad 8d ago

What’s your workflow for converting industrial CAD models into lightweight Three.js assets?

0 Upvotes

I’ve been looking at workflows for bringing industrial CAD models into browser-based 3D applications.

Simply exporting CAD to GLB usually isn’t enough. Industrial models can contain thousands of parts, unnecessary internal geometry, complex assemblies, duplicated materials and very high polygon counts.

A typical workflow might look like:

CAD → cleanup → mesh optimization → material optimization → GLB → Three.js

The difficult part seems to be deciding what should be removed while still preserving useful product structure, part hierarchy and visual quality.

I’m also interested in how people handle large assemblies, LOD, Draco/Meshopt compression and mobile performance.

For those using Three.js with CAD or engineering models: do you optimize models manually, use an automated conversion pipeline, or combine both?

I’d be interested to hear what has worked well for real-world projects.


r/openscad 8d ago

Libraries confusion with Snap pack OpenSCAD nightly libraries

2 Upvotes

I'm probably missing something obvious, but I can't see what it is. I'm using the nightlies version of OpenSCAD from the SNAP store. I wanted to use the round-anything library and BOSL library, which I found was in /home/mike/snap/openscad-nightly/current/.local/share/OpenSCAD/libraries. However, I couldn't reach the examples file via the file loader, presumably because it ignored .local. So I used the file explorer to open an example file in the BOSL library, but when loaded it can't find the relevant files referred to. So I checked the libraries info and realise that I should be using the 5686 library, so I try opening one of the BOSL examples in that, which I again had to get to via the file explorer rather than the 'file open' option within OpenSCAD, and again it can't find the libraries. I've been using OpenSCAD for about 7-8 years, but only recently started using it in Linux Mint as I switched from windows, and I've not had a problem with nightlies before. Can anyone work out what's going on? What should I do differently?


r/openscad 7d ago

Example OpenSCAD Workflow with VS Code and GPT Luna

Thumbnail
youtube.com
0 Upvotes

A quick 50 seconds showcase of how to use VS Code and GPT (via the Copilot extension) to create a SCAD script by describing geometry.


r/openscad 8d ago

Need help with designing

1 Upvotes

I am trying to design a reel foot for a fishing reel, but I am having a hard time figuring out how to get the curve where it sits against the rod, and the taper that is on the other side designed in the software. Is there any tips or tricks that would me out?


r/openscad 9d ago

OpenSCAD chamfer box mask for rounded corners - LF feedback

Thumbnail
gist.github.com
6 Upvotes

Hello all, I'm still trying to wrap my head around the advanced features of the BOSL2 library. One thing I have missed a LOT is the ability to create a box with rounded vertical corners but chamfers on the top and bottom.

So, I created this module to both scratch that itch and get a little experience.

I'd appreciate any feedback on my approach, especially if I'm missing something that would have made this easier from the BOSL2 or builtin libraries.

The chamfer_box_mask.scad file is the actual library file to use. The chamfer_box_mask_tests.scad file has a few tests/examples that I used to develop the main module. The default RENDER_PART = 3 shows the completed example.


r/openscad 9d ago

MotW Custom Tokens

Thumbnail
gallery
5 Upvotes

I made a set of custom tokens for an rpg I play called Monster of the Week.

I designed 28 SVGs, one for each role in the game, and used OpenSCAD to code the layers of the SVGs to layers in a standard token design. I added some custom 3D print support because I was having trouble with the print, which was easy to duplicate because it was just one added line of code.

Printed on Elegoo Saturn Ultra.


r/openscad 9d ago

using the correct library path?

2 Upvotes

Hi fellow.

Here is my situation:

  • Using an OpenSCAD Appimage
  • downloaded a script that requires the library "MCAD" from github
  • downloaded the MCAD library and extracted it to $HOME/.local/OpenSCAD/libraries
  • in .../OpenCAD/libraries is a sub-folder MCAD-Master that contains all modules in the library.
  • my code has the line <useMCAD/MCAD-Master/boxes.scad> and several variations in the path

It appears that the AppImage is not using this path to the library.
I haven't used the OPENSCADPATH env-var yet.
How can enable the access to the library?

I want to continue the AppImage (for now)
Thanks for any constructive suggestion.


r/openscad 9d ago

alguém me ajuda a criar um código no Openscad, para que eu anexe um stl e saia um modelo automático? tipo esse, esse arquivo também pode ser jogado no maker word nos modelos paramétricos

Post image
0 Upvotes

r/openscad 11d ago

Update of IntelliJ OpenSCAD plugin, using openscad-wasm for preview (1.2.1)

7 Upvotes

I have updated the plugin I have been working on to use openscad-wasm for preview instead of shelling out to the local OpenSCAD install. This works much better, updates reliably, and is decently speedy (after first load). I also added a console that has OpenSCAD output displayed including any errors/warnings.

I compiled openscad-wasm from source so I have the newest version from main, it is called with manifold as the rendering engine and also with the option that shows the bounding box in console output.

Install it like normal through IntelliJ's plugin settings.

Changelog:

https://github.com/mjparme/idea-openscad/blob/master/CHANGELOG.md

README (with screenshots of new preview):

https://github.com/mjparme/idea-openscad/blob/master/README.md

Plugin link:

https://plugins.jetbrains.com/plugin/33582-openscad-support/versions/stable/1148562

You still need the executable for exporting and "open in OpenSCAD" (if you want to do those things). The preview does not require it though.

textmetrics/fontmetrics doesn't work yet, openscad-wasm supports those, I just have to figure out how to bundle fonts. I have several designs that use these functions so am motivated to get this going.

This was mostly to get the preview to work more reliably but there were a couple of parser fixes.


r/openscad 11d ago

Courbes de Bézier dans OpenSCAD avec Inkscape

23 Upvotes

Il est facile de créer de formes et des profils de tout type, en intégrant des tracés réalisés sur Inkscape en les important ensuite dans OpenSCAD. Dans notre exemple une jarre avec son couvercle crée intégralement par des profils dessinés dans Inkscape et rendu en 3D grâce à l'instruction "rotate_extrude" de OpenSCAD.

Plus de détails : https://robotix.ah-oui.org/site/main.php?found=260514-teapot


r/openscad 11d ago

FreeCad Workbench

Thumbnail
0 Upvotes

r/openscad 11d ago

Use AI to create 3d print models with OpenSCAD

Thumbnail
youtu.be
0 Upvotes

The 1st part of the video briefly covers OpenSCAD with LLM help.