Hacker News new | past | comments | ask | show | jobs | submit login
OpenSCAD 3D rendering just got an order of magnitude faster (ochafik.com)
266 points by voussoir on Feb 9, 2022 | hide | past | favorite | 103 comments



What’s OpenSCAD use case?

I recently built a printer and started to print things. OpenSCAD was the first software I reached because I’m developer and writing code felt natural for me. But it took so much time and result was kind of hard to understand and change.

Then I moved to FreeCAD, learned about parametric modelling and it was like the whole other world. I was like 10x more productive compared to OpenSCAD and result was easy to change and adapt.

Then I moved to Fusion and from that point I think that I’ve found a sweet spot, Fusion is similar to FreeCAD, but feels much more polished.


FWIW, I went through the exact opposite progression of what you described (Fusion->FreeCAD->OpenSCAD), and I liked OpenSCAD the best. I feel like I've gotten good models out of it, and have done elaborate enough stuff in the process.

I suppose there's no accounting for taste.


I prefer the style of OpenSCAD but I’ve found that there are certain things that the software just is either really hard to achieve or incapable of doing entirely. One recent example is that I was designing a part for injection molding and I needed to add a draft angle to the part. This seemingly simple operation is rather trivial to do in FreeCAD and Fusion 360. It is not at all trivial in OpenSCAD.

Another example of OpenSCAD’s limitations is the render time for parts produced by boolean operations which this change purportedly helps a lot with. But there is also still not a guarantee that the output of those boolean operations is actually a manifold object. Slicers these days are actually quite good at repairing geometry but even with a moderately complex part produced by boolean operations (in my case it was often one that required subtraction of cylinders across multiple pieces of an object) I found OpenSCAD’s output to produce some bizarre issues with geometry that even the slicer could not repair very well.

I too like OpenSCAD the best and often find myself more productive in it than other pieces of software, especially for simple models. But for complex models it can’t really hold up to the more traditional parametric modeling software (yet)


I only experienced issues with OpenSCADs STLs if I used `difference()` with overlapping surfaces (aka when it flickers in the preview). Even then the slicer's repair feature fixed it.

For me the main limitation in OpenSCAD is the UI: distance labels along the XYZ axes are unreadable when they overlap with a surface, transparency only works with one object at a time. Also I'd love highlighted edges in the preview & split view, it would make alignment of parts so much easier.

Still I'm so much more productive in it than e.g. FreeCAD because I have most of what I need memorized and the rest can be looked up on the one-page cheatsheet.


For me it was

FreeCAD->OpenSCAD->Fusion->back to OpenSCAD.

Some tasks are extremely easy in OpenSCAD. Fusion is not that hard either, but it is a commercial tool with a free-ish version where they keep your designs hostage. It doesn't run on Linux which makes life hard for multi platform folks. Also, in past I have had issues with STL generated by Fusion.

OpenSCAD is not perfect though, for example is missing important functions such as alignment and assembly


> For me it was: FreeCAD->OpenSCAD->Fusion->back to OpenSCAD.

As for me, [proprietary 3D CAD]-> SolveSpace, since 2013.[0]

[0] https://git.io/DailySolveSpace


I've actually had issues with STLs generated with OpenSCAD more than Fusion; to a point where I've had to import the OpenSCAD code into the FreeCAD OpenSCAD module and use FreeCADs STL export to get it working.

99% of the time I don't have to deal with that, but that 1% is pretty annoying.


What do you mean by hostage? I can export my work in f3d file and, hopefully, can import it as well.


> I can export my work in f3d file

One thing Autodesk is truly infamous for industry-wide is being the utter worst when it comes to file formats.

They make their file format unreadable by anything other than they products by design.

And even within their own product line, it sometimes doesn't work.

So I'll ask you this: what can you do with your f3d file?

Can you import it into blender to render it with a proper rendering engine?

Can you open it with a text editor and change things in it?

Can you convert your model to a format that's readable by other tools?

Can fusion import models created by other tools?


> One thing Autodesk is truly infamous for industry-wide is being the utter worst when it comes to file formats.

While that is true, the fact remains that there is no industry standard file format for exchanging parametric CAD models.

Everything is proprietary. I.e. if you export in something you can import elsewhere you need to 'bake' parameters into geometry.

This is not a problem Autodesk created.

And while it may be true that it is also not in their best interest to solve it this is not a good excuse to bash them over adding yet another proprietary parametric format to the list for their flavor of such modeler.


I can export my file to plenty of other formats. I've used .3mf to move it to prusa slicer, for example.


That's not what is being asked.


It is one of the things asked ("import it into blender"), sort of (yeah of course you have to export in advance using the original software). Mesh export is of course the most basic feature everything can do.

B-rep solid export (STEP) is also very much a thing, you can exchange solid models between Fusion, SOLIDworks, FreeCAD, etc. (and import them from PCB design software and so on)

But this is just baked geometry of course. It's not parametric. There is no standard for parametric models, there is no way to exchange them between different programs.


It's a tricky problem because "parametric" is a very broad term. You'd need to agree on a full set of primitives, parameters and modifiers and further innovation would be tricky without "baking in" or converting to a less parametric form.

Vector drawing software faces a similar problem. There's some agreed primitives but often you just get bezier soup.


> There is no standard for parametric models, there is no way to exchange them between different programs.

This is apologism.

If their parametric export format was documented readable ascii text, there would be an entire ecosystem of 3rd party tool taking care of connecting it to other things.

Even better, if there was a push from them to design a standard for this, this would benefit the entire CAD/CAM/manufacturing industry.

But AutoDesk's mindset is the walled garden / captive audience business model.

The fact that creating open standards around their file format would actually benefit their business is simply something that's completely impossible to understand at the corporate culture level.


There have been licence issues where, IIRC, your subscription ends and you’re not allowed to access your files even to export them. To get access back, you need to renew your subscription.


Every man tastes different.


This is what I did too.


> Then I moved to Fusion and from that point I think that I’ve found a sweet spot

Alternative viewpoint:

1) It depends on the kind of object you want to model: for simple, geometric shapes, OpenSCAD is by far the best choice. Unless you don't know how to code, in which case it's unusable.

2) When you start to need chamfers and fillets, OpenSCAD simply doesn't work and Fusion is by far the superior solution. Also, if your model starts to become really complex (lots of boolean), OpenSCAD becomes very slow and eventually unusable, even with the change described by the OP.

3) If you need to model organic shapes neither freecad, fusion or OpenSCAD are unusable. Blender is way better for this use case.

4) If you are a programmer and enjoy building truly parametric models, as in: models that you can build with scripts and Makefiles, then neither freecad nor fusion are a fit. Cadquery is slowly getting to the sweet spot OpenScad occupies, but it's not there yet.

5) Fusion is proprietary, closed-source and costs money. Worse, you are basically at the mercy of the vendor. In particular, it's a complete black box: there is exactly zero guarantees that your carefully crafted model will still work 10 years down the road.

6) Freecad's UI is basically a nightmare and the CAD engine (the terminolgy in the CAD world for some reason it is called the "kernel") is the same that cadquery uses, and it's an old and clunky NURBS engine called OpenCascade (if I'm not mistaken). It is definitely not up to par with Fusion's engine.

7) Fusion is lousy at talking to the rest of the ecosystem. Proprietary and opaque file format that no other product outside of the AutoDesk ecosystem can read, lousy at reading things created with other softwares.


> old and clunky NURBS engine called OpenCascade

True. Well, it is usable, you can model a whole 3D printer or a (BIM) house or whatever in FreeCAD, people have done big projects with it. But OpenCASCADE really likes to give up (or even crash) on fillets >_<


It's supposed to really shine with procedurally generated geometry, like fractals, where code really is a more efficient way to describe your object. Some people are also more comfortable describing things with code, so it's useful to them.

It might be best to think of it as a platypus: An interesting element of the ecosystem, but disappointing if you need a duck.


I think that is unfair to platypuses. Also, I'd better check OpenSCAD out, that sounds like exactly what I have been looking for :)


Ducks are also lousy at being platypuses, to be fair. Either way, best of luck to you and your new egg laying mammal!


I learned OpenSCAD over the course of a few afternoons, and I'm good enough to get designs for most of the stuff I need. It's really straightforward to get started, so it's definitely worth checking out. The only complaint I've had is that there's not built-in bezier curves, so sometimes you need to spoof things with a bunch of lines or truncating circles.

I personally like the code based system, even when it's "harder" simply because it's easy to plop this into version control.


For me, it's VCS friendliness. Try checking a .fcstd file into git and see what changed between commits.

Also, it's extremely reassuring to have a description of your model that wasn't generated by a program. In earlier versions of FreeCAD, my model would often not be saved correctly and be totally broken when I opened it again. FreeCAD also crashed randomly on me quite often. In contrast, all you need for editing .scad files is a text editor, and that probably won't crash that often. :)


Of course nothing is more diffable than code, but you can get git to store proper deltas between FCStd (or any zip) files:

https://blog.lambda.cx/posts/freecad-and-git/


> FreeCAD files are nothing more than zip files containing text documents

That’s good to know. Though the fact that they’re zipped probably means they are not meant for humans to read anyway. Also, I don’t think GitHub or GitLab supports custom diff tools right now, and you would need that to do actual code reviews.


Having 3D objects described in a text based environment is the idea. That way you can version them with git. It is also focused on supporting Volumetric modeling of 3d objects, rather than simply being CSG based like most CAD software, even though it takes that approach for simple objects.

It is really a product of open source 3d printers who were seeking a way to describe complex 3d objects, reliably version them, and then spread them around the internet.

It's a cool idea, but it's toolchain has always been sub par. It is my understanding that most of the people working on it are more concerned with getting it good enough, and the bulk of their development energy on 3d printing slicing engines. But I wouldn't want to use OpenSCAD to do any traditional design work or drafting, or really even to design any object that will have to be made with subtractive manufacturing. It's a happy medium that FreeCAD has an OpenSCAD workbench - that way you can do the complicated stuff directly in OpenSCAD for 3D printed parts, and then include them in your FreeCAD assemblies.


The use case is sharing a model that is customizable.

Exp: https://www.thingiverse.com/thing:2029895/files

Broom holder. You can't share an STL that will fit every possible broom diameter. But what you can do is programmatically generate one, and let the users change the variables.


>a model that is customizable

That's what parametric modeling do: you have a history of what you did, and traveling back in time to change something like a diameter is trivial.


It's useful for highly repetitive shapes, or ones that are derived computationally, or are extremely parametric. Examples are:

* Fasteners (screws, nuts, etc.) * Gears, sprockets, etc. * Computational art

99% of the time you want real parametric CAD (Solidworks etc.). Nobody is going to design a motorbike or a door handle or a vice with OpenSCAD.


I think it depends on the complexity of what you want to model. Lots of 3D printing prototyping is relatively simple shapes, in which case OpenSCAD is quite nice.


This is exciting news. And I enjoyed to learn that some investigation on adding parallelism has been done. OpenSCAD is my main design driver, so when I hit these performance corners, it'd drive me nuts.

OpenSCAD and https://github.com/nophead/NopSCADlib is a winning combo.


Uh no, you need BOSL2


Yes! Its wonderful!


And threadlib.


> > Uh no, you need BOSL2[0]

> And threadlib[1]

And dotSCAD[2]

So, OpenSCAD user needs to install a lot of extra libs[3] to be productive;)

[0] https://github.com/revarbat/BOSL2

[1] https://github.com/adrianschlatter/threadlib

[2] https://github.com/JustinSDK/dotSCAD

[3] https://openscad.org/libraries.html


Definitely, but I also consider that a good thing. What I really never liked about most tools for creating media is they try and do way too much. My mindset is close to that of UNIX philosophy, thus I like that out of all the 3D/CAD tools I've used, OpenSCAD pretty much does one thing out of the box... and does it adequately. I like that it doesn't pretend it can do everything I want, but when there's something I need it to do, like add threads or screws to a project, there's probably a library for that because OpenSCAD is already code-oriented rather than the code coming second.

dotSCAD looks dope! I hadn't heard of it, but now I know what I'll be playing with next time I spin up my 3D printer.


Wow I’m so happy people are working on this. I love the program but Ive had to abandon several interesting ideas due to never rendering.


Same here. I was experimenting with 3d printing stamps (like for ink) with flexible filament from 2-color raster images, and the render time just for that was about 15 or 20 minutes per step. I will definitely need to download this.


Complete aside, but I've actually found that printing stamps in plain PLA and then flattening them off with sandpaper on a flat surface provides better results than using flexible filament (TPU in my case).


For this, you could also use the OpenSCAD plugin for Inkscape.


Yeah, I thought that rendering a 1000x1000 surface for a dimensional wall hanging should be no problem, but OpenSCAD gobbled up 16GB of memory and then crashed.

I would also love for it to have a variable that rounds off corners to some diameter on the cubes, cylinders, and even polyhedrons. It's possible to round off corners using the intersection operator but it is a lot of work and something that I do in almost everything I build. Nobody likes unnecessary sharp corners.


I was looking for this recently and found a great OpenSCAD library called RoundAnything. It looks very productive:

https://github.com/Irev-Dev/Round-Anything


hull() is another operation that can make rounded corners. You can think of a rounded cube as the hull of 8 spheres.

https://hackaday.com/2018/02/13/openscad-tieing-it-together-...


And hulls are insanely slow.


> And hulls are insanely slow.

True, but they are usable for the use case described (create a rounded cube by hull-ing 8 small spheres or 4 small cyclinders).


Does Minkowski also do that?


Best tool for boolean geometry I’ve personally used. I’ve had many more successful 3D prints than any of the point-and-click CAD tools in which I have also spent hundreds of hours.

But with ADHD tendencies, the rendering time of OpenSCAD often had me getting distracted and forgetting to finish whatever I was doing for a while.

This is very exciting! Great work, OpenSCAD team.


> Best tool for boolean geometry I’ve personally used.

I have good luck with Blender... much more then with Freecad... haven't tried OpenSCAD though...


Blender is really nice for certain things, but:

1) Blender is a general purpose 3D tool, and many things that you need for CAD aren't there. Fillets, Chamfers and a robust boolean engine are missing. Also, when you do things in Blender, everything is geared towards how it will look, not towards making sure that things fit each other precisely. For example, getting blender to place an object 3.4mm off the face of a rotated cube along the normal of that face and rotated 33 degrees around that normal is possible, but really not easy.

2) It can be programmed via python, but it isn't the core use case and for programming 3D models using blender, a) the learning curve is very steep b) the resulting code is very verbose because the API wasn't really designed for this use case. c) there is almost no documentation and very little examples of parametric modeling using the blender python API available on the internets.

3) the boolean engine in blender is fast, but it is far less robust than the one in openscad (CGAL-based) and will often simply refuse to produce a model for reasons that are entirely obscure.

4) Even with the newer geometry node engine, Blender is basically centered around a destructive workflow (early steps in the construction of a model can only be changed via undo/redo), and building paramatric models is really not easy unless you get down to the python API.


Someone made a constraint based sketcher for Blender: https://github.com/hlorus/geometry_sketcher so that is fun..

But of course using a mesh modeling engine for CAD is not the best idea. You generally do want to work in B-rep, if not for precision then for exchange reasons (e.g. export electronic component models as STEP to add to PCB software, import a whole board STEP model from PCB software to build a case for the board)


Preach! (I shortened my comment to make it more pithy, had a lot of those same thoughts, and appreciate how you fleshed them out!)

5. I write my own blender plugins quite often, and they break with my next `git pull`. Blender moves fast and breaks things ;)

I do python professionally and gamedev 3D/VR stuff as a side piece. I spent 5 hours in blender tonight trying to bake an alpha channel. Something I’ve done before.

It’s a nightmare to maintain a blender plugin. Because (as you point out) blender is opensource clay, not a surgical scalpel. OpenSCAD is a precision knife.


Alternatively, now you can increase $fn an order of magnitude and get imperceptibly smooth curved surfaces and complicated minkowski sums.


You're assuming minkowski and other boolean things are O($fn).

Are they though?


No idea. When I multiply all $fn by 10, the render takes between 50 and 200 percent of the original render time or else the program crashes. In any case, the new flags make renders wicked fast.


No, thank you for making OpenSCAD better! It's always nice to read the process behind an improvement as well.


Sweet. I use OpenSCAD for my models and it’s been really cool. Wish I was better after designing more organic looking shapes but lost times I need simple objects anyways so it doesn’t matter as much.


Interesting stuff! Does anyone here have recommended learning resources for openSCAD? Have used creo but minimally, as a hobbyist. Would be fun to build enclosures for some Eagle boards.


No Starch has a book on it. I flipped through it at the bookstore and it seemed pretty comprehensive, with a neat final project too


This is so incredible! I just tried this out with a few of my models and I can vouch for the order of magnitude.


I'm surprised that OpenSCAD uses GMP. I would think that 64-bit doubles would be good enough.


64-bit doubles are not good enough for a production cad system. Many operations, including CSG, may require much more precise numbers to resolve the question of if and how things intersect, if surfaces remain manifold or fail to be orientable, and on and on.

Those things needing (to be careful) arbitrary precision can sometimes be truncated back to 64 bit doubles, as long as necessary invariants are maintained.

A simple example: suppose you have a shape at the origin, that is designed for careful CNC, so maybe 1/10,000th of an inch or maybe even 1/100,000th of an inch accuracy. Suppose 1/10,000th accuracy is, say, ~14 bits of mantissa, then making the part 16 inches long is another 4 bits. We're up to 28 bits. Now suppose you do an operation, like intersection with another such part, or a fillet or rounding, whose computation merely needs to square numbers. Now you need 28*28 bits, anf you overflow the mantissa. Or move the part out to coordinate 64, uses another 6 bits. And god forbid you hit an algorithm that needs to cube numbers, which triples the number of bits you need in order to retain accuracy needed for the final part to meet tolerances.

It gets troublesome quite quickly.


If 64 bit doubles aren't enough, why not use libquadmath? It gives you 113 bits of mantissa, and should be around 10x faster than arbitrary precision.


113 bits will still fail on iterative processes. If you dig into probably any of the robust kernels of things like parametric modelers, they all need these methods. The above example I gave is terribly naive: things get vastly worse.

Above was only position. Now build in Bezier surfaces, or better yet, NURBs so you can do true conics as well as crazy freeform surfaces.

Now compute the intersection of such objects. These intersections require very high degree polynomial representations. Now repeat.

If you quantize points on the intersection curves too much, you'll get all sorts of pathologies, things doubling back, near singularities ..

The way to deal with this flawlessly is to allow whatever precision is needed to prove necessary constraints are met.

A good lib would use each representation as needed: double, libdouble, liquid, liboct, etc. as needed, and eventually arbitrary precision. I've written several systems that do such over my career. It's a cool space

A nice simple place to try this is to make an arbitrary precision Mandelbrot zoomer that switches underlying types as needed for precision.

It's much more fun to make these work on various AVX flavors, or on GPUs. All are doable.


Wouldn’t ~14 bits down to 10^-4 plus 4 bits to get to 2^4 be ~18 bits rather than ~28?


Yep, made error as I was editing it xamples. The underlying idea stands- bits get used up very quickly in many CAD algorithms.


> I would think that 64-bit doubles would be good enough.

Implementing robust boolean operations on polyhedral geometry is and has been known for quite a while to be very hard if you do not have arbitrary precision math, or at the very least some sort of interval arithmetic that kind winds back a calculation and increases the precision up to the point where an unambiguous decision can be made about the sign of an expression.

Here's an example: create a sphere, tesselate it to - say - a million triangle (not much these days), make a rotated copy of the original by 0.01 degrees and intersect with the original. I guarantee you the resulting calculation will either crash your floating point based implementation or it'll produce a model that will be non manifold.


I used to watch that get better in each release of Autodesk Inventor.

A useful test is to model a bolt. Make a cylinder. Make a 2D cutting tool that has one thread profile. Extrude the thread profile along a spiral. Subtract that from the cylinder. Now you have a threaded rod. Now make a 2D hexagon for the bolt head. Extrude. Union with cylinder. Now chamfer all edges of the bolt head. Also chamfer the end of the bolt.

Now take a close look at where the threads meet the bolt head, and where the threads meet the chamfer. If those are all correct, then you have a usable CSG CAD system for machined parts. Inventor started getting that right around 2012.

Admittedly, you don't usually model threads at that level of detail. Inventor has "cosmetic threads", which are just textures, which is what you use for ordinary bolts. This is mostly an exercise for CAD operators. It's like whiteboarding for programmers. You sit the applicant down at a workstation, hand them a bolt and calipers, and say "model this". Sometimes you do need that kind of detail, because you're going to have a machine tool machine the thing.


Fusion 360 handles this perfectly. In fact it has thread creation directly built in (both textured and modelled explicitly). I recently needed to make a nut for a specific thread, and did it by subtracting the thread from a volume. If you're careful you can inspect the results and see how to offset the thread slightly to move from a too-tight fit to a simple press fit.


Fusion 360 is the same CSG engine as Inventor. It just has fewer features and is tied to "the cloud".

Inventor has pro features such as "would you like a finite element analysis of the weak points in that", and "Warning - gear tooth counts are not relatively prime and may result in uneven wear".


Fusion360 has FEA in the Simulation workspace.


Perhaps they need it to ensure robustness of geometric predicates, in edge cases.

E.g. if the determinant of some matrix becomes too close to zero, switch to exact arithmetic.


It's wise to pick a library that can act as a portable layer over implementation details.


I wonder if there will be any CAD software that used SDF for modelling. Smooth detail + easy slicing seems like a good fit.


Like this(?) :

https://libfive.com/


Have you ever tried to do a fillet with libfive?


implicitcad uses SDFs for modeling. It's weird but it works.


If true, this is fantastic news. OMW to try it right now on a score of old models I have stashed around.


So ...

Bearer of bad news here: I've tried this on a model I had lying around, and ... :-\

box.scad is an old, somewhat complicated electronics enclosure where I experimented with building a non-trivial, fully filleted model with scad.

The model has quite a lot of "natural" booleans (eg holes and such), but also, the fillets are implemented either:

    - with a ton of procedurally generated minkowski sums (offsets) combined with booleans.

    - with hulls of far-apart spheres
TL;DR:

    as far as I can tell, fast-csg does not render the model properly :-(

    speedup with fast-csg is decent (~5x) only at very low $fn

    speedup is entirely underwhelming when $fn gets high

    minkowski offsets likely gobble up the bulk of the render time
This also made it very clear that render times aren't linear at all when $fn grows, and this is both true for traditional openscad and fast-csg.

Your mileage may get much better if you steer clear of hulls and minkowski sums, and to be fair, I'd need to run a benchmark with no minkski in it.

Benchmark:

    old :   time openscad -o z.stl box.scad

    new :   time openscad-nightly --enable fast-csg -o z.stl box.scad

    $fn = 5
        old                    = 6.8 sec
        new --enable fast-csg  = 1.2 sec
        x 5.6

    $fn = 10
        old                    = 15 sec
        new --enable fast-csg  =  3 sec
        x 5

    $fn = 20
        old                    = 67 sec
        new --enable fast-csg  = 25 sec
        x 2.68

    $fn = 40
        old                    = 427 sec
        new --enable fast-csg  = 369 sec
        x 1.15


I loved openscad but not it's eff. This is amazing news.


How does this compare to the new Geometry Nodes in Blender? The flexibility of what people are producing in Blender 3.0 is staggering.


Procedural nodes are a very welcome addition to Blender, and you can do very fun things with them, but they are absolutely no substitute for actual code.

Specifically these are hard to do with nodes:

    - for loops                                                                 
                                                                                
    - if <complex condition is met> do this else do that, where <complex condition> requires to look at the evaluated output of an upstream node.
                                                                                
    - recursion                                                                 
                                                                                
    - global variables                                                          
                                                                                
    - self introspection                                                        
                                                                                
    - accessing things by name rather than painfully dragging noodles from one point to the next
                                                                                
In general, node-based interfaces (Houdini, Blender, etc...) get absolutely impenetrable once your project gets very large.

They all have that subtle APL-like write-once-read-never feel.

In my experience large code bases are way easier to navigate, refactor, change, test, debug than large node-based models, even when you take care of organizing your node hierarchically.


With OpenSCAD your script is the model - there are no mouse-based modeling tools like you might be used to with Blender or other 3D software. The closest comparison I can think of is if each of Blender's geometry nodes were a single line of code.


You can view the source of each node in Blender, but that’s not the point. Writing a script is not fundamentally different form connecting nodes in geometry nodes and entering attributes.

What I’m asking is how do the output and performance differ.


It most definitely is fundamentally different than dragging points around with your mouse. You can use recursion and complex maths. Plus, the way you approach designing an object is very different from doing traditional 3d modeling. Professional developers who excel at architecture and code organization will have a much easier time completing complex objects than someone more green.

You should play around with it to find out. You will be disappointed though, because you're looking to compare a fish with a horse in a race.


This is incredibly accurate. Once I learned OpenSCAD my entire process of thinking about physical design via computer aided tools disappeared. Gone is the process of memorizing dozens of shortcut, hundreds of menus and painstakingly selecting items and entering values into fields or dialog boxes. Instead I can create in just minutes what would take a huge breadth of knowledge to do using conventional point-and-click interfaces.

There are some places where the point-and-click UI makes sense. For example I like how I can layout the parts on a simulated baseplate with Cura. But there is really no design or thought into that process. Just slap them onto the plate in a way they won't overlap and I'm done.


I had the same experience. I tried OpenSCAD after trying and discussing pretty much every other piece of CAD software that would run on Linux. FreeCAD's UI feels like a hot mess and Blender's UI is for power users only (plus Blender isn't really designed around creating physical objects based on specific dimensions).


Should have been "discarding", not sure what happened there.


The new geometry nodes aren't dragging points around with your mouse, your are procedurally constructing a mesh using blender's different nodes (i.e, functions) I've used both OpenSCAD and Blender and can say that geometry nodes feel similar to OpenSCAD.

However I prefer to use the python scripting API in blender.

Either way it is important to point out that OpenSCAD is more for CSG, while blender is for surface modeling. If you are intending to 3D print your models you will ultimately need to get them in a mesh format so I see no problem using a mesh format from the get go.


Thank you, you articulated that better than I could.

I've used a wide range of CAD software over the years, and they're often a clunky mess. OpenSCAD is something I'd like to explore but if I could achieve much the same outcome with Blender, which I know quite well then it may not be worth the effort.

I've used the python API a lot and now I'm getting excited by Geometry Nodes.


Ok, I gotta check out blender now


> What I’m asking is how do the output and performance differ.

From a non-technical perspective I was able to do (reasonably?) complex part design with almost no prior experience in about 3 days of work. This included debugging the model code, introducing various enhancements after realizing I would need them, completely changing the design a couple times after running real-world measurements.

In blender, based upon past experience, I would have spent a week just figuring out how to do all that. Sure there is code and the like, but how easy is it to hook that up to your external editor? How well does the refresh cycle work? (Hint - in OpenSCAD it just worked and I could use my editor of choice on a second screen monitor).

So the non-technical performance is pretty great. The technical "how fast does it go" - I'm not sure but I suspect Blender uses GMP under the hood as well, at that point it is somewhat arbitrary. I dont think the tooling is geared towards doing model designs, I get the impression FreeCAD is more the SolidWorks contender - which is next on my list to evaluate. Thanks for the tip about geometry nodes though!


I found solvespace more barebones, but easier to use than FreeCAD. YMMV.


Neat app! Yeah TBH FreeCAD is a bit intimidating getting into. Similar issue as with Blender or Gimp scripting a while back...


Oh thank goodness


awesome, I have commits in there and used it many years ago for this project: https://github.com/jtoy/sensenet I used it to generates 10s of thousands of models for machine learning research


OpenSCAD is such a poor choice of words. You see, it's too close to something else entirely, that when people will hit a roadblock, which can happen when you learn a new application, that it just comes naturally when you swear. Perhaps the authors of this application might consider replacing the "S" with something else?


This is I wanna give that guy a big hug awesome!


Aww thanks, happy it's helping others!


Why version "doubled" in AppImage-snapshots names of Linux x86_64?[0]

> OpenSCAD-2022.02.09.ai10824-2022.02.09.ai10824-x86_64.AppImage

BTW, As for "10x performance" — just tried, but not see speedup.[1]

[0] https://files.openscad.org/snapshots/

[1] https://twitter.com/app4soft/status/1491567347295039490


You must enable it in the settings or via cli flag --enable=fast-csg


Guess, I misread "10x rendering", so my issue probably related to `vertex-object-renders-*` — and as I tested there is no any changes in it.[0,1]

[0] https://twitter.com/app4soft/status/1491575600439508992

[1] https://twitter.com/Torsten_Paul/status/1491712810916757508




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: